VRML ファイルの概要

目次

VRML ファイルの書式

VRML ファイルは、

#VRML V2.0 utf8

という1行から始まり、少なくともひとつの Shape ノードが含まれている必要があります。 V2.0 は VRML の文法のバージョン、 utf8 は使用している文字コードを示します(バージョン 1.0 の VRML ファイルは #VRML V1.0 ascii から始まりますが、これは2.0 とは互換性がないのでここでは取り扱いません)。

VRML ファイルの書式
#VRML V2.0 utf8
  ノード
  ノード
  ..
}
  1. 先頭に #VRML V2.0 utf8 という1行を置く。
  2. 以降にノードを列挙する。
  3. 1行目以外にある # より右側の部分は無視される(コメント)。

ノード

ノードは VRML の基本単位です。 VRML ファイルはいくつかのノードの集まりとして記述されます。

ノードの書式
ノード名 {
  フィールド
  フィールド
  ..
}
  1. ノードはノード名と、それに続く { ... } からなる。
  2. { ... } 内にはいくつかのフィールドを置く。/li>
  3. ノード名は大文字で始まる(例:Shape)。
  4. VRML ファイルには少なくとも1つの Shape ノードが必要。
「何も表示しない」VRMLファイル
#VRML V2.0 utf8
Shape {}  # Shape ノードだけからなる VRML ファイル

フィールド

ノード名に続く { ... } 内には、ノードに関する詳細な情報を記述します。これをフィールドと言います。 ノードの種類ごとにいくつかのフィールドが定義されています。

フィールドの書式
フィールド名 フィールド値 フィールド値 ..
  1. フィールド名は小文字で始まる(例:geometry)。
  2. 各フィールドにはフィールド値(数値・文字列またはノード)を設定する。
  3. フィールドを省略するとデフォルト値が採用される。
陰影付けされていない球
#VRML V2.0 utf8
Shape {
  geometry Sphere {}  # geometry フィールドを設定
}

Shape ノード

物体のノードです。 geometry フィールドに形状を指定します。 appearance フィールドには色などの属性情報を指定します。

Shape ノード
Shape {
 geometry 形状
 appearance 見かけ
}
  1. appearance フィールドには物体の色などの見かけの情報を指定する。これには Appearance ノードを使用する。
  2. geometry フィールドに物体の形状を指定する。ここには以下のノードが指定できる。

Box(箱), Cone(円錐), Cylinder(円柱), Sphere(球), Text(文字), Extrusion(押し出し), ElevationGrid(地形等), IndexedFaceSet(ポリゴン集合), IndexedLineSet(線分集合), PointSet(点集合)

陰影付けされた球
#VRML V2.0 utf8
Shape {
  geometry Sphere {}
  appearance Appearance {
    material Material {}
  }
}

Sphere ノード

Shape ノードの geometry フィールドに指定する、球の形状のノードです。

Sphere ノード
Sphere {
  radius 半径
}
  1. radius フィールドに半径を指定する。
  2. radius フィールドを省略したとき、半径は 1(デフォルト)になる。
  3. 原点は球の中心にある。
陰影付けされた半径2の球
#VRML V2.0 utf8
Shape {
  geometry Sphere {
    radius 2
  }
  appearance Appearance {
    material Material {}
  }
}

Box ノード

Shape ノードの geometry フィールドに指定する、直方体の形状のノードです。

Box ノード
Box {
  size x y z
}
  1. size フィールドに x 軸方向、y 軸方向、z 軸方向の長さを指定する。
  2. size フィールドを省略したときは1辺の長さが 1 の立方体になる。
  3. 原点は直方体の中心にある。
直方体
#VRML V2.0 utf8
Shape {
  geometry Box {
    size 2 3 4
  }
  appearance Appearance {
    material Material {}
  }
}

Cone ノード

Shape ノードの geometry フィールドに指定する、円錐の形状のノードです。

Cone ノード
Cone {
  bottomRadius 底面の半径
  height 高さ
  bottom 底面の有無
  side 側面の有無
}
  1. bottomRadius フィールドに底面の半径を指定する。
  2. height フィールドに高さを指定する。
  3. bottom フィールドが TRUE なら底面を付ける。FALSE なら付けない。デフォルトは TRUE。
  4. side フィールドが TRUE なら側面を付ける。FALSE なら付けない。デフォルトは TRUE。
円錐
#VRML V2.0 utf8
Shape {
  geometry Cone {
    bottomRadius 2.5
    height 4
  }
  appearance Appearance {
    material Material {}
  }
}

Cylinder ノード

Shape ノードの geometry フィールドに指定する、円筒の形状のノードです。

Cylinder ノード
Cylinder {
  radius 半径
  height 高さ
  bottom 底面の有無
  top 上面の有無
  side 側面の有無
}
  1. radius フィールドに半径を指定する。
  2. height フィールドに高さを指定する。
  3. bottom フィールドが TRUE なら底面を付ける。FALSE なら付けない。デフォルトは TRUE。
  4. top フィールドが TRUE なら上面を付ける。FALSE なら付けない。デフォルトは TRUE。
  5. side フィールドが TRUE なら側面を付ける。FALSE なら付けない。デフォルトは TRUE。
円柱
#VRML V2.0 utf8
Shape {
  geometry Cylinder {
    radius 2.5
    height 4
  }
  appearance Appearance {
    material Material {}
  }
}

Text ノード

Shape ノードの geometry フィールドに指定する、文字の形状のノードです。

Text ノード
Text {
  string ["文字列1", "文字列2", .. ]
  fontStyle 字体
  length [文字列1の長さ, 文字列2の長さ, .. ]
  maxExtent 文字列の最大長
}
  1. string フィールドに表示する文字列を指定する。複数指定したときは改行して表示される。
  2. fontStyle フィールドには使用する字体を指定する。これには FontStyle ノードを用いる。
  3. length フィールドには表示する個々の文字列の長さを指定する。デフォルトは 0(長さの指定なし)。
  4. maxExtent には表示する文字の最大長を指定する。 length フィールドで長さを指定しない場合、この値を超えた文字列の長さがこの値に圧縮される。デフォルトは 0(制限なし)。
文字
#VRML V2.0 utf8
Shape {
  geometry Text {
    string ["How", "are", "you?"]
  }
  appearance Appearance {
    material Material {}
  }
}

FontStyle ノード

Text ノードの fontStyle フィールドに指定する、文字の字体等を指定するノードです。

FontStyle ノード
FontStyle {
  family 字体
  style 文字スタイル
  size 文字サイズ
  spacing 文字間隔
  horizontal 縦書きか横書きか
  leftToRight 文字を左から右に書くか否か
  topToBottom 文字を上から下に書くか否か
  justify 文字揃え
  language 言語
}
  1. family フィールドに表示する文字の字体を指定する。 "SERIF" (Times Roman などのセリフフォント)、 "SANS" (Helvetica などのサンセリフフォント)、 "TYPEWRITER" (Courier などの固定ピッチフォント) の3つが標準的にサポートされている。これ以外にブラウザが独自にサポートしているフォントが指定できる。フォントを ["font1" "font2" "SERIF" ] というように列挙すれば、左から順に使えるフォントを探す。デフォルトは "SERIF"。
  2. style フィールドに文字スタイルを指定する。 "PLAIN" (標準)、"BOLD" (太字)、"ITALIC" (斜体)、 "BOLDITALIC" (斜体の太字) が標準的にサポートされている。デフォルトは "PLAIN"。
  3. size フィールドには文字のサイズ(グリフの高さ)を指定する。デフォルトは 1.0。
  4. spacing フィールドには文字の間隔を指定する。デフォルトは 1.0。
  5. horizontal フィールドが TRUE なら横書きに、FALSE なら縦書きになる。デフォルトは TRUE(横書き)。
  6. 横書きのとき、leftToRight が TRUE なら文字は左から右に書き、 FALSE なら右から左に書く。縦書きのとき、leftToRight が TRUE なら行は左から右に書き、 FALSE なら右から左に書く。デフォルトは TRUE。
  7. 横書きのとき、topToBottom が TRUE なら行は上から下に書き、 FALSE なら下から上に書く。縦書きのとき、topToBottom が TRUE なら文字は上から下に書き、 FALSE なら下から上に書く。デフォルトは TRUE。
  8. justify フィールドには文字揃えの基準位置を指定する。 "BEGIN"、"FIRST"、"MIDDLE"、"END" が指定できる。
  9. language フィールドには使用する言語を指定する。日本語なら "jp"。詳しい指定方法は省略。
文字(長さと字体を指定)
#VRML V2.0 utf8
Shape {
  geometry Text {
    string ["How", "are", "you?"]
    length [4, 4, 4]
    fontStyle FontStyle {
      family "SANS"
      style "ITALIC"
      size 2
    }
  }
  appearance Appearance {
    material Material {}
  }
}

Extrusion ノード

Shape ノードの geometry フィールドに指定する、押し出し形状のノードです。

Extrusion ノード
Extrusion {
  creaseAngle スムーズシェーディングするときの限界角
  ccw 頂点の順序が反時計回りか否か
  convex 面がすべて凸多角形か否か
  solid 閉じた形状か否か
  beginCap 最初の断面のフタの有無
  endCap 最後の断面のフタの有無
  crossSection [断面の座標0, 断面の座標1, .. ]
  scale [断面0の拡大率, 断面1の拡大率, .. ]
  orientation [断面0の向き, 断面1の向き, .. ]
  spine [回転軸の座標0, 回転軸の座標1, .. ]
}
  1. 隣接する面同士がなす角度が cleaseAngle フィールドの値よりも小さければ、この2つの面の間で輝度が補間されてスムーズシェーディングされる。デフォルトは0(スムーズシェーディングしない)。
  2. ccw フィールドが TRUE なら、多角形の両方ののうち、頂点の順序が反時計回り(左回り)に見える側の面を表として扱う。 FALSE なら時計回り(右回り)に見える側を表として扱う。デフォルトは TRUE。
  3. convex フィールドが TRUE なら、すべての面が凸多角形であると仮定して処理する。このとき凹多角形が含まれていると正確に表示されない場合がある。デフォルトは TRUE。
  4. solid フィールドが TRUE なら、物体を閉じた形状と仮定して処理する。開いた形状の場合に見える、視点に対して裏を向いている面は表示されない。デフォルトは TRUE。
  5. beginCap および endCap フィールドが TRUE なら、それぞれ最初の断面と最後の断面にフタをする。デフォルトは TRUE。
  6. crossSection フィールドには断面の(xz平面上の)頂点の位置を指定する。
  7. scale フィールドには各断面のx方向およびz方向の拡大率を指定する。
  8. orientation フィールドには各断面の回転を、回転軸と回転角で指定する。
  9. spine フィールドには回転軸の節点(断面と交差する点)の座標を指定する。
押し出し
#VRML V2.0 utf8
Shape {
  geometry Extrusion {
    crossSection [
      0 1, 1 -1, -1 -1, 0 1  # 断面は3角形
    ]
    orientation [
      0 1 0 0,               # 第1断面はそのまま
      0 1 0 0.2,             # 第2断面は0.2よじる
      0 0 1 0.5              # 第3断面は0.5傾ける
    ]
    scale [
      1 1, 1.5 1.5, 1 1      # 第2断面だけ1.5倍
    ]
    spine [
      0 0 0, 0 2 0, 1 4 1    # 途中で折れ曲がった軸
    ]
  }
  appearance Appearance {
    material Material {}
  }
}

ElevationGrid ノード

Shape ノードの geometry フィールドに指定する、地形などを表現するための形状のノードです。

ElevationGrid ノード
ElevationGrid {
  creaseAngle スムーズシェーディングするときの限界角
  ccw 頂点の順序が反時計回りか否か
  convex 面がすべて凸多角形か否か
  solid 閉じた形状か否か
  colorPerVertex 頂点ごとに色を与えるか否か
  normalPerVertex 頂点ごとに法線を与えるか否か
  color 各面/頂点の色
  normal 各面/頂点の法線ベクトル
  texCoord テクスチャの座標
  xDimension x方向の格子点数
  zDimension z方向の格子点数
  xSpacing x方向の格子点間隔
  zSpacing z方向の格子点間隔
  height [格子点0の高さ, 格子点1の高さ, .. ]
}

  1. creaseAngle, ccw, convex, solid フィールドは Extrusion と同じ。
  2. colorPerVertex フィールドが TRUE なら頂点ごとに色を指定する。 FALSE なら面ごとに色を指定する。デフォルトは TRUE。
  3. normalPerVertex フィールドが TRUE なら頂点ごとに法線ベクトルを指定する。 FALSE なら面ごとに法線ベクトルを指定する。デフォルトは TRUE。
  4. color フィールドには頂点/面に与える色を指定する。これには Color ノードを使用する。
  5. normal フィールドには頂点/面に与える法線ベクトルを指定する。これには Normal ノードを使用する。
  6. texCoord フィールドにはテクスチャの座標を指定する。これには TextureCoordinate ノードを使用する。
  7. xDimension および zDimensions フィールドに、それぞれ x 方向と z 方向の格子点の数を指定する。
  8. xSpacing および zSpacing フィールドに、それぞれ x 方向と z 方向の格子点の間隔を指定する。
  9. height フィールドにそれぞれの格子点の高さを指定する。
地形
#VRML V2.0 utf8
Shape {
  geometry ElevationGrid {
    xDimension 4
    zDimension 5
    xSpacing 1
    zSpacing 1
    height [
      0, 0, 0, 0,
      0, 1, 1, 0,
      1, 2, 2, 1,
      0, 1, 1, 0,
      0, 0, 0, 0
    ]
  }
  appearance Appearance {
    material Material {}
  }
}

IndexedFaceSet ノード

Shape ノードの geometry フィールドに指定する、任意の多面体形状(ポリゴン)を表現するための形状のノードです。

IndexedFaceSet ノード
IndexedFaceSet {
  creaseAngle スムーズシェーディングするときの限界角
  ccw 頂点の順序が反時計回りか否か
  convex 面がすべて凸多角形か否か
  solid 閉じた形状か否か
  colorPerVertex 頂点ごとに色を与えるか否か
  normalPerVertex 頂点ごとに法線を与えるか否か
  color 各面/頂点の色
  normal 各面/頂点の法線ベクトル
  texCoord テクスチャの座標
  colorIndex 色データの指標
  normalIndex 法線ベクトルデータの指標
  texCoordIndex テクスチャ座標データの指標
  coord 座標データ
  coordIndex 面データ
}
  1. creaseAngle, ccw, convex, solid フィールドは Extrusion と同じ。
  2. colorPerVertex, normalPerVertex, color, normal, texCood フィールドは ElevationGrid と同じ。
  3. colorIndex, normalIndex, texCoordIndex フィールドは、色/法線ベクトル/テクスチャの座標を、それぞれのデータの指標(番号)で指定する場合に用いる。同じデータが繰り返し現れるような場合は、データ量を削減できる。
  4. coord フィールドに座標データを指定する。これには Coordinate ノードを用いる。
  5. coordIndex フィールドに面データを指定する。面データは面(多角形)を構成する頂点の座標を、座標データの指標で列挙する。面と面の区切りに -1 を置く。
任意の多面体形状
#VRML V2.0 utf8
Shape {
  geometry IndexedFaceSet {
    coord Coordinate {
      point [
         0  4  0,
        -3  0 -3,
        -3  0  3,
         3  0  3,
         3  0 -3
      ]
    }
    coordIndex [
      0, 1, 2, -1,
      0, 2, 3, -1,
      0, 3, 4, -1,
      0, 4, 1, -1,
      4, 3, 2, 1, -1
    ]
  }
  appearance Appearance {
    material Material {}
  }
}

IndexedLineSet ノード

Shape ノードの geometry フィールドに指定する、任意の線図形を表現するための形状のノードです。

IndexedLineSet ノード
IndexedFaceSet {
  colorPerVertex 頂点ごとに色を与えるか否か
  color 各面/頂点の色
  colorIndex 色データの指標
  coord 座標データ
  coordIndex 線分(折れ線)データ
}
  1. colorPerVertex フィールドが TRUE なら頂点ごとに色を指定する。 FALSE なら線分ごとに色を指定する。デフォルトは TRUE。
  2. color フィールドには頂点/線分に与える色を指定する。これには Color ノードを使用する。
  3. colorIndex フィールドは、頂点/線分の色を、色データの指標(番号)で指定する場合に用いる。同じ色が繰り返し現れるような場合は、データ量を削減できる。
  4. coord フィールドに座標データを指定する。これには Coordinate ノードを用いる。
  5. coordIndex フィールドに線分データを指定する。線分データは線分(折れ線)の端点(節点)の座標を、座標データの指標で列挙する。折れ線と折れ線の区切りに -1 を置く。
線図形(端点ごとに色を指定)
#VRML V2.0 utf8
Shape {
  geometry IndexedLineSet {
    coord Coordinate {
      point [
         0  4  0,
        -3  0 -3,
        -3  0  3,
         3  0  3,
         3  0 -3
      ]
    }
    coordIndex [
      0, 1, -1,
      0, 2, -1,
      0, 3, -1,
      0, 4, -1,
      4, 3, 2, 1, 4, -1
    ]
    color Color {
      color [
        1 0 0,
        0 1 0,
        0 0 1,
        1 0 1,
        0 1 1
      ]
    }
  }
}
線図形(線ごとに色を指定)
#VRML V2.0 utf8
Shape {
  geometry IndexedLineSet {
    coord Coordinate {
      point [
         0  4  0,
        -3  0 -3,
        -3  0  3,
         3  0  3,
         3  0 -3
      ]
    }
    coordIndex [
      0, 1, -1,
      0, 2, -1,
      0, 3, -1,
      0, 4, -1,
      4, 3, 2, 1, 4, -1
    ]
    color Color {
      color [
        1 0 0,
        0 1 0,
        0 0 1,
        1 0 1,
        0 1 1
      ]
    }
  }
}

PointSet ノード

Shape ノードの geometry フィールドに指定する、任意の点集合を表現するための形状のノードです。

PointSet ノード
PointSet {
  color 点の色
  coord 座標データ
}
  1. color フィールドには点に与える色を指定する。これには Color ノードを使用する。
  2. coord フィールドに点の座標データを指定する。これには Coordinate ノードを用いる。

Coordinate ノード

IndexedFaceSet ノード、IndexedLineSet ノード、PointSet ノードの coord フィールドに指定する、頂点の座標値を指定するためのノードです。

Coordinate ノード
Coordinate {
  point [ x y z, x y z, ... ]
}

Normal ノード

IndexedFaceSet ノード、ElevationGrid ノードの normal フィールドに指定する、面あるいは頂点の法線ベクトルを指定するためのノードです。

Normal ノード
Normal {
  vector [ x y z, x y z, ... ]
}

Color ノード

IndexedFaceSet ノード、IndexedLineSet ノード、ElevationGrid ノード、PointSet ノードの color フィールドに指定する、頂点の座標値を指定するためのノードです。

Color ノード
Color {
  color [ r g b, r g b, ... ]
}

Appearance ノード

Shape ノードの appearance フィールドに指定する、物体の色などの属性情報を指定するノードです。

Appearance ノード
Appearance {
  material 材質の指定
  texture 貼り付けるテクスチャの指定
  textureTransform テクスチャの張り付け位置
}
  1. material フィールドには物体の表面の材質パラメータを指定する。これには Material ノードを使用する。
  2. texture フィールドには物体表面に貼り付ける別の画像を指定する。貼り付ける画像の指定には ImageTexture ノード、MovieTexture ノード、あるいは PixelTexutre ノードを使用する。デフォルトでは何も貼り付けない。
  3. texture フィールドで指定した画像の位置やスケールを調整する座標変換を、 TextureTransform ノードで指定する。デフォルトは無変換。

Material ノード

物体表面の材質パラメータを指定します。 Appearance ノードの material フィールドで使用します。

Material ノード
Material {
  ambientIntensity 環境光の反射率
  diffuseColor r g b
  specularColor r g b
  shininess 輝き
  emissiveColor r g b
  transparency 透明度
}
  1. ambientIntensity フィールドは環境光(光源からの光の当たっていない部分の明るさ)に対する反射率を指定する。これが 0 だと陰の部分が真っ暗になる。
  2. diffuseColor フィールドは拡散反射率を光の3原色(赤:r, 緑:g, 青:b、いずれも 0〜1)で指定する。これが物体の色になる。
  3. specularColor フィールドには鏡面反射率を3原色(赤:r, 緑:g, 青:b、いずれも 0〜1)で指定する。これは光源の光が物体表面でそのまま反射して見える部分(ハイライト)の色になる。
  4. shininess フィールドは輝き具合、すなわちハイライトの「強さ」を、 0〜1 の間で指定する。この値が大きくなるにつれてハイライトが鋭くなり、輝き感が増す。
  5. emissiveColor の3つの値(赤:r, 緑:g, 青:b、いずれも 0〜1)を 0 0 0 より大きくすると、この物体自体がその色で発光する。
  6. transparency フィールドは透明度を指定する。 0 で不透明になり、1 で透明になる。デフォルトは 0。
拡散反射率の赤成分だけを1
#VRML V2.0 utf8
Shape {
  geometry Sphere {
    radius 2
  }
  appearance Appearance {
    material Material {
      diffuseColor 1 0 0   # 拡散反射は赤
    }
  }
}
鏡面反射率を全部1
#VRML V2.0 utf8
Shape {
  geometry Sphere {
    radius 2
  }
  appearance Appearance {
    material Material {
      diffuseColor 1 0 0   # 拡散反射は赤
      specularColor 1 1 1  # 鏡面反射は白
    }
  }
}

ImageTexture ノード

ImageTexture ノード
ImageTexture {
  url 画像ファイルのurl
  repeatS 画像空間のS軸方向の繰り返し
  repeatT 画像空間のT軸方向の繰り返し
}
  1. Appearance ノードで用いるテクスチャファイルを指定する。画像ファイルの url は、このノードを含む VRML ファイルからの相対 url あるいは http://... からはじまる絶対 url。画像ファイルには GIF, JPEG などが指定できる。
  2. repeatS および repeatT フィールドが TRUE なら貼り付けるテクスチャのサイズが貼り付ける場所より小さかったときに、テクスチャを繰り返し表示する。デフォルトは TRUE。
テクスチャをマッピング
#VRML V2.0 utf8
Shape {
  geometry Sphere {
    radius 2
  }
  appearance Appearance {
    material Material {}
    texture ImageTexture {
      url "http://www.sys.wakayama-u.ac.jp/building.jpg"
    }
  }
}

TextureTransform ノード

TextureTransform ノード
TextureTransform {
  center x y
  rotation r
  scale x y
  translation x y
}
  1. center フィールドは rotation フィールドと scale フィールドが適用されるテクスチャ空間中の中心位置を指定する。
  2. rotation, scale および translation フィールドは、それぞれテクスチャの回転、拡大縮小と平行移動を指定する。 scale はテクスチャ「座標系」の拡大縮小を行うので、 scale 2 1とすればテクスチャ自体のサイズは S 軸方向に2分の1になり、同じテクスチャが2回表示される。
テクスチャを縮小して繰り返す
#VRML V2.0 utf8
Shape {
  geometry Sphere {
    radius 2
  }
  appearance Appearance {
    material Material {}
    texture ImageTexture {
      url "back.gif"
      repeatT FALSE         # 縦方向は繰り返さない
    }
    textureTransform TextureTransform {
      scale 5 5             # 1/5 に縮小
      translation 0 -0.4    # 40% y 方向にずらす
    }
  }
}

DirectionalLight ノード

DirectionLight ノード
DirectionalLight {
  direction 光の方向
  color r g b
  intensity 明るさ (0〜1)
  on 光源の点灯(TRUE)/消灯(FALSE)
  ambientIntensity 環境光の明るさ
}
  1. 平行光の光源。
  2. direction に方向を指定する 0 0 -1(デフォルト)だと、Z軸の負の方向
  3. color に光原色を指定する。1 1 1(デフォルト)だと、白色光。
  4. intensity に光源の明るさを指定する。1(デフォルト)が最も明るい。
  5. 環境光は全く光の当たらない部分(影)の部分の明るさ。デフォルトは0。
平行光線による照明
#VRML V2.0 utf8
DirectionalLight {
  direction 0.3 1 -0.3  # 左斜め後ろからの光
  color 1 0 0           # 色は赤
  intensity 0.7
}

Shape {
  geometry Sphere {
    radius 2
  }
  appearance Appearance {
    material Material {}
  }
}

PointLight ノード

PointLight ノード
PointLight {
  location 光源の位置
  color r g b
  intensity 明るさ (0〜1)
  on 光源の点灯(TRUE)/消灯(FALSE)
  ambientIntensity 環境光の明るさ
  attenuation 光の減衰率
  radius 光の到達半径
}
  1. 点光源。
  2. attenuation フィールドには3つのパラメータを設定する。それぞれを a1 a2 a3、光源との距離を r とすると、明るさは 1 / (a1 + a2* r + a3 * r2) となる。デフォルトは 1 0 0 (減衰なし)。
  3. radius はこの光源からの光の到達範囲。これを半径とする球内のみに光が届く。

理論上、点光源による明るさは光源からの距離の2乗に反比例しますが、これだと明るさの変化が急すぎて使いづらい場合があります。反比例させる程度でちょうどよい場合が多いようです。

点光源による照明
#VRML V2.0 utf8
PointLight {
  location 0 1.8 2.2
  color 0 1 0
  attenuation 1 0.2 0
  radius 10
}

Shape {
  geometry Sphere {
    radius 2
  }
  appearance Appearance {
    material Material {}
  }
}

SpotLight ノード

SpotLight ノード
SpotLight {
  direction 光の方向
  location 光源の位置
  color r g b
  intensity 明るさ (0〜1)
  on 光源の点灯(TRUE)/消灯(FALSE)
  ambientIntensity 環境光の明るさ
  attenuation 減衰率
  radius 光の到達半径
  beamWidth  最大輝度で光の広がる角度
  cutOffAngle 完全に光が遮断される角度
}
  1. スポットライト。
  2. beamWidth は光が最大輝度で照射される角度。デフォルトはπ/2。
  3. cutOffAngle は光が完全に遮られる角度。デフォルトはπ/4。
  4. デフォルトでは cutOffAngle < beamWidth となっているため、 beamWidth の外側に光は漏れない。これは効率を上げるため。
スポットライトによる照明
#VRML V2.0 utf8
SpotLight {
  direction 0.5 0.5 -1
  location  -2 -2 5
  color 0 0 1
  cutOffAngle 0.2
}

Shape {
  geometry Sphere {
    radius 2
  }
  appearance Appearance {
    material Material {}
  }
}

Group ノード

Group ノード
Group {
  bboxCenter x y z
  bboxSize x y z
  children [コドモ, コドモ, ...]
}
  1. children フィールドに指定した複数の Shape ノードや Group ノードをまとめて、ひとつのノードとして表現する。
  2. bboxCenter および bboxSize は、それぞれ外接箱の中心とサイズを指定する。内包するすべてのノードを囲う外接箱を指定すれば、画像表示の速度を向上できる。
  3. bboxSize のデフォルトは -1 -1 -1 で、これは外接箱が設定されていないことを示す。
  4. VRML ファイルのトップレベルのノードとして使われる。

Transform ノード

Transform ノード
Transform {
  translation x y z
  rotation x y z r
  scale x y z
  scaleOrientation x y z r
  bboxCenter 外接箱の中心
  bboxSize 外接箱サイズ
  children [コドモ コドモ ...]
}
  1. Group ノード同様 children フィールドに指定した複数の Shape ノードや Group ノードをまとめて一つのノードとして表現するが、その際に内包するすべてのノードに対する変換を指定する。
  2. translation フィールドには、children フィールドに指定したノードを移動する位置を指定する。
  3. rotation フィールドには、children フィールドに指定したノードの回転を指定する。 x y z には回転軸ベクトル、r には回転角を与える。
  4. scale フィールドには、children フィールドに指定したノードの、 x軸、y軸、z軸方向の拡大率を指定する。x y z > 0。
  5. scaleOrientation は、scale フィールドによる拡大縮小を行う「前」の、 children フィールドに指定したノードの回転を指定する。この回転により、任意の軸方向の拡大縮小が行える。x y z は回転軸ベクトル、 r は回転角。

Billboard ノード

Billboard ノード
Billboard {
  axisOfRotation x y z
  bboxCenter 外接箱の中心
  bboxSize 外接箱のサイズ
  children [コドモ コドモ ... ]
}
  1. Billboard ノードは Transform ノードの変形で、 children に指定したノードの(ローカル座標系の) Z軸が常に観測者の方向を向くように調整する。
  2. axisOfRotation フィールドには、観測者の方向に向けるための回転の軸ベクトルを指定する。デフォルトは 0 1 0(y 軸中心)。

NavigationInfo ノード

NavigationInfo ノード
NavigatonInfo {
  avatarSize [radius height knee
  headlight ヘッドライトの点灯 (TRUE) 消灯 (FALSE)
  speed 速度(デフォルトの速度からの倍数)
  type ナビゲーションの方法
  visibilityLimit 遠地点の距離
}
  1. NavigationInfo ノードは(観測者の)「仮身」に関する情報を与える。
  2. アバターは円柱で表現され、半径、高さ、および地面からの高さ(ひざの高さ)で表現する。デフォルトは [0.25, 1.6, 0.75] であり、だいたい人間の大きさである。この大きさはアバターが仮想空間上で行動するときの制約になる。たとえば、この円柱の直径より狭い隙間は通れないとか、ひざの高さより高いものを乗り越えるには難儀するとか。
  3. headlightはアバターから視線方向に向けられた、指向性を持った光源である。デフォルトは TRUE。
  4. speed フィールドにはナビゲーション時の平行移動の、ブラウザのデフォルトの速度に対する係数を指定する。 1.0 でデフォルトの速度、2.0 でその2倍。
  5. type フィールドにはナビゲーションの方法する。ブラウザによって指定できる方法が異なるが、最低限 "WALK", "FLY", "EXAMINE", "NONE" はサポートされている。
  6. visibilityLimit フィールドの値より遠くにある物体は表示されない。

Background ノード

Background ノード
Background {
  skyColor [r g b, r g b, ...]
  skyAngle [角度, 角度, ...]
  groundColor [r g b, r g b, ...]
  groundAngle [角度, 角度, ...]
  backUrl url
  frontUrl url
  leftUrl url
  rightUrl url
  topUrl url
  bottomUrl url
}
  1. skyColor フィールドには空の色を指定する。複数の色を指定し、隣り合う色の間隔(角度)を skyAngle に指定すれば、グラデーションを付けることができる。
  2. groundColor フィールドには地面の色を指定する。複数の色を指定し、隣り合う色の間隔(角度)を skyAngle に指定すれば、グラデーションを付けることができる。
  3. backUrl, frontUrl, rightUrl, leftUrl, topUrl, bottomUrl はそれぞれz軸の正の方向、z軸の負の方向、x軸の正の方向、x軸の負の方向、 y軸の正の方向、y軸の負の方向の無限遠に置いた平面に貼り付ける画像の url を指定する。