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
ノード
ノード
..
}
|
- 先頭に #VRML V2.0 utf8 という1行を置く。
- 以降にノードを列挙する。
- 1行目以外にある # より右側の部分は無視される(コメント)。
ノードは VRML の基本単位です。 VRML
ファイルはいくつかのノードの集まりとして記述されます。
ノードの書式 |
ノード名 {
フィールド
フィールド
..
}
|
- ノードはノード名と、それに続く { ... } からなる。
- { ... } 内にはいくつかのフィールドを置く。/li>
- ノード名は大文字で始まる(例:Shape)。
- VRML ファイルには少なくとも1つの Shape ノードが必要。
「何も表示しない」VRMLファイル |
#VRML V2.0 utf8
Shape {} # Shape ノードだけからなる VRML ファイル
|
ノード名に続く { ... }
内には、ノードに関する詳細な情報を記述します。これをフィールドと言います。
ノードの種類ごとにいくつかのフィールドが定義されています。
フィールドの書式 |
フィールド名 フィールド値 フィールド値 ..
|
- フィールド名は小文字で始まる(例:geometry)。
- 各フィールドにはフィールド値(数値・文字列またはノード)を設定する。
- フィールドを省略するとデフォルト値が採用される。
陰影付けされていない球 |
#VRML V2.0 utf8
Shape {
geometry Sphere {} # geometry フィールドを設定
}
|
物体のノードです。 geometry
フィールドに形状を指定します。 appearance
フィールドには色などの属性情報を指定します。
Shape ノード |
Shape {
geometry 形状
appearance 見かけ
}
|
- appearance
フィールドには物体の色などの見かけの情報を指定する。これには
Appearance ノードを使用する。
- geometry
フィールドに物体の形状を指定する。ここには以下のノードが指定できる。
Box(箱),
Cone(円錐),
Cylinder(円柱),
Sphere(球),
Text(文字),
Extrusion(押し出し),
ElevationGrid(地形等),
IndexedFaceSet(ポリゴン集合),
IndexedLineSet(線分集合),
PointSet(点集合)
陰影付けされた球 |
#VRML V2.0 utf8
Shape {
geometry Sphere {}
appearance Appearance {
material Material {}
}
}
|
Shape ノードの geometry
フィールドに指定する、球の形状のノードです。
Sphere ノード |
Sphere {
radius 半径
}
|
- radius フィールドに半径を指定する。
- radius フィールドを省略したとき、半径は 1(デフォルト)になる。
- 原点は球の中心にある。
陰影付けされた半径2の球 |
#VRML V2.0 utf8
Shape {
geometry Sphere {
radius 2
}
appearance Appearance {
material Material {}
}
}
|
Shape ノードの geometry
フィールドに指定する、直方体の形状のノードです。
Box ノード |
Box {
size x y z
}
|
- size フィールドに x 軸方向、y 軸方向、z
軸方向の長さを指定する。
- size
フィールドを省略したときは1辺の長さが
1 の立方体になる。
- 原点は直方体の中心にある。
直方体 |
#VRML V2.0 utf8
Shape {
geometry Box {
size 2 3 4
}
appearance Appearance {
material Material {}
}
}
|
Shape ノードの geometry
フィールドに指定する、円錐の形状のノードです。
Cone ノード |
Cone {
bottomRadius 底面の半径
height 高さ
bottom 底面の有無
side 側面の有無
}
|
- bottomRadius
フィールドに底面の半径を指定する。
- height フィールドに高さを指定する。
- bottom フィールドが TRUE
なら底面を付ける。FALSE
なら付けない。デフォルトは TRUE。
- side フィールドが TRUE なら側面を付ける。FALSE
なら付けない。デフォルトは TRUE。
円錐 |
#VRML V2.0 utf8
Shape {
geometry Cone {
bottomRadius 2.5
height 4
}
appearance Appearance {
material Material {}
}
}
|
Shape ノードの geometry
フィールドに指定する、円筒の形状のノードです。
Cylinder ノード |
Cylinder {
radius 半径
height 高さ
bottom 底面の有無
top 上面の有無
side 側面の有無
}
|
- radius フィールドに半径を指定する。
- height フィールドに高さを指定する。
- bottom フィールドが TRUE
なら底面を付ける。FALSE
なら付けない。デフォルトは TRUE。
- top フィールドが TRUE なら上面を付ける。FALSE
なら付けない。デフォルトは TRUE。
- side フィールドが TRUE なら側面を付ける。FALSE
なら付けない。デフォルトは TRUE。
円柱 |
#VRML V2.0 utf8
Shape {
geometry Cylinder {
radius 2.5
height 4
}
appearance Appearance {
material Material {}
}
}
|
Shape ノードの geometry
フィールドに指定する、文字の形状のノードです。
Text ノード |
Text {
string ["文字列1", "文字列2", .. ]
fontStyle 字体
length [文字列1の長さ, 文字列2の長さ, .. ]
maxExtent 文字列の最大長
}
|
- string
フィールドに表示する文字列を指定する。複数指定したときは改行して表示される。
- fontStyle
フィールドには使用する字体を指定する。これには
FontStyle ノードを用いる。
- length
フィールドには表示する個々の文字列の長さを指定する。デフォルトは
0(長さの指定なし)。
- maxExtent
には表示する文字の最大長を指定する。
length フィールドで長さを指定しない場合、この値を超えた文字列の長さがこの値に圧縮される。デフォルトは
0(制限なし)。
文字 |
#VRML V2.0 utf8
Shape {
geometry Text {
string ["How", "are", "you?"]
}
appearance Appearance {
material Material {}
}
}
|
Text ノードの fontStyle
フィールドに指定する、文字の字体等を指定するノードです。
FontStyle ノード |
FontStyle {
family 字体
style 文字スタイル
size 文字サイズ
spacing 文字間隔
horizontal 縦書きか横書きか
leftToRight 文字を左から右に書くか否か
topToBottom 文字を上から下に書くか否か
justify 文字揃え
language 言語
}
|
- family
フィールドに表示する文字の字体を指定する。
"SERIF" (Times Roman
などのセリフフォント)、 "SANS"
(Helvetica などのサンセリフフォント)、
"TYPEWRITER" (Courier
などの固定ピッチフォント)
の3つが標準的にサポートされている。これ以外にブラウザが独自にサポートしているフォントが指定できる。フォントを
["font1" "font2" "SERIF" ]
というように列挙すれば、左から順に使えるフォントを探す。デフォルトは
"SERIF"。
- style
フィールドに文字スタイルを指定する。
"PLAIN" (標準)、"BOLD" (太字)、"ITALIC"
(斜体)、 "BOLDITALIC" (斜体の太字)
が標準的にサポートされている。デフォルトは
"PLAIN"。
- size
フィールドには文字のサイズ(グリフの高さ)を指定する。デフォルトは
1.0。
- spacing
フィールドには文字の間隔を指定する。デフォルトは
1.0。
- horizontal フィールドが TRUE なら横書きに、FALSE
なら縦書きになる。デフォルトは TRUE(横書き)。
- 横書きのとき、leftToRight が TRUE
なら文字は左から右に書き、 FALSE なら右から左に書く。縦書きのとき、leftToRight
が TRUE なら行は左から右に書き、 FALSE
なら右から左に書く。デフォルトは TRUE。
- 横書きのとき、topToBottom が TRUE
なら行は上から下に書き、 FALSE なら下から上に書く。縦書きのとき、topToBottom
が TRUE なら文字は上から下に書き、 FALSE
なら下から上に書く。デフォルトは TRUE。
- justify
フィールドには文字揃えの基準位置を指定する。
"BEGIN"、"FIRST"、"MIDDLE"、"END"
が指定できる。
- 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 {}
}
}
|
Shape ノードの geometry
フィールドに指定する、押し出し形状のノードです。
Extrusion ノード |
Extrusion {
creaseAngle スムーズシェーディングするときの限界角
ccw 頂点の順序が反時計回りか否か
convex 面がすべて凸多角形か否か
solid 閉じた形状か否か
beginCap 最初の断面のフタの有無
endCap 最後の断面のフタの有無
crossSection [断面の座標0, 断面の座標1, .. ]
scale [断面0の拡大率, 断面1の拡大率, .. ]
orientation [断面0の向き, 断面1の向き, .. ]
spine [回転軸の座標0, 回転軸の座標1, .. ]
}
|
- 隣接する面同士がなす角度が cleaseAngle
フィールドの値よりも小さければ、この2つの面の間で輝度が補間されてスムーズシェーディングされる。デフォルトは0(スムーズシェーディングしない)。
- ccw フィールドが TRUE
なら、多角形の両方ののうち、頂点の順序が反時計回り(左回り)に見える側の面を表として扱う。
FALSE なら時計回り(右回り)に見える側を表として扱う。デフォルトは
TRUE。
- convex フィールドが TRUE
なら、すべての面が凸多角形であると仮定して処理する。このとき凹多角形が含まれていると正確に表示されない場合がある。デフォルトは
TRUE。
- solid フィールドが TRUE
なら、物体を閉じた形状と仮定して処理する。開いた形状の場合に見える、視点に対して裏を向いている面は表示されない。デフォルトは
TRUE。
- beginCap および endCap フィールドが TRUE
なら、それぞれ最初の断面と最後の断面にフタをする。デフォルトは
TRUE。
- crossSection フィールドには断面の(xz平面上の)頂点の位置を指定する。
- scale フィールドには各断面のx方向およびz方向の拡大率を指定する。
- orientation
フィールドには各断面の回転を、回転軸と回転角で指定する。
- 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 {}
}
}
|
Shape ノードの geometry
フィールドに指定する、地形などを表現するための形状のノードです。
ElevationGrid ノード |
ElevationGrid {
creaseAngle スムーズシェーディングするときの限界角
ccw 頂点の順序が反時計回りか否か
convex 面がすべて凸多角形か否か
solid 閉じた形状か否か
colorPerVertex 頂点ごとに色を与えるか否か
normalPerVertex 頂点ごとに法線を与えるか否か
color 各面/頂点の色
normal 各面/頂点の法線ベクトル
texCoord テクスチャの座標
xDimension x方向の格子点数
zDimension z方向の格子点数
xSpacing x方向の格子点間隔
zSpacing z方向の格子点間隔
height [格子点0の高さ, 格子点1の高さ, .. ]
}
|
- creaseAngle, ccw, convex, solid フィールドは Extrusion
と同じ。
- colorPerVertex フィールドが TRUE
なら頂点ごとに色を指定する。 FALSE なら面ごとに色を指定する。デフォルトは
TRUE。
- normalPerVertex フィールドが TRUE
なら頂点ごとに法線ベクトルを指定する。
FALSE なら面ごとに法線ベクトルを指定する。デフォルトは
TRUE。
- color
フィールドには頂点/面に与える色を指定する。これには
Color
ノードを使用する。
- normal
フィールドには頂点/面に与える法線ベクトルを指定する。これには
Normal
ノードを使用する。
- texCoord
フィールドにはテクスチャの座標を指定する。これには
TextureCoordinate
ノードを使用する。
- xDimension および zDimensions
フィールドに、それぞれ x 方向と z
方向の格子点の数を指定する。
- xSpacing および zSpacing
フィールドに、それぞれ x 方向と z
方向の格子点の間隔を指定する。
- 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 {}
}
}
|
Shape ノードの geometry
フィールドに指定する、任意の多面体形状(ポリゴン)を表現するための形状のノードです。
IndexedFaceSet ノード |
IndexedFaceSet {
creaseAngle スムーズシェーディングするときの限界角
ccw 頂点の順序が反時計回りか否か
convex 面がすべて凸多角形か否か
solid 閉じた形状か否か
colorPerVertex 頂点ごとに色を与えるか否か
normalPerVertex 頂点ごとに法線を与えるか否か
color 各面/頂点の色
normal 各面/頂点の法線ベクトル
texCoord テクスチャの座標
colorIndex 色データの指標
normalIndex 法線ベクトルデータの指標
texCoordIndex テクスチャ座標データの指標
coord 座標データ
coordIndex 面データ
}
|
- creaseAngle, ccw, convex, solid フィールドは Extrusion
と同じ。
- colorPerVertex, normalPerVertex, color, normal, texCood
フィールドは ElevationGrid
と同じ。
- colorIndex, normalIndex, texCoordIndex
フィールドは、色/法線ベクトル/テクスチャの座標を、それぞれのデータの指標(番号)で指定する場合に用いる。同じデータが繰り返し現れるような場合は、データ量を削減できる。
- coord
フィールドに座標データを指定する。これには
Coordinate
ノードを用いる。
- 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 {}
}
}
|
Shape ノードの geometry
フィールドに指定する、任意の線図形を表現するための形状のノードです。
IndexedLineSet ノード |
IndexedFaceSet {
colorPerVertex 頂点ごとに色を与えるか否か
color 各面/頂点の色
colorIndex 色データの指標
coord 座標データ
coordIndex 線分(折れ線)データ
}
|
- colorPerVertex フィールドが TRUE
なら頂点ごとに色を指定する。 FALSE なら線分ごとに色を指定する。デフォルトは
TRUE。
- color
フィールドには頂点/線分に与える色を指定する。これには
Color
ノードを使用する。
- colorIndex
フィールドは、頂点/線分の色を、色データの指標(番号)で指定する場合に用いる。同じ色が繰り返し現れるような場合は、データ量を削減できる。
- coord
フィールドに座標データを指定する。これには
Coordinate
ノードを用いる。
- 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
]
}
}
}
|
Shape ノードの geometry
フィールドに指定する、任意の点集合を表現するための形状のノードです。
PointSet ノード |
PointSet {
color 点の色
coord 座標データ
}
|
- color
フィールドには点に与える色を指定する。これには
Color
ノードを使用する。
- coord
フィールドに点の座標データを指定する。これには
Coordinate
ノードを用いる。
IndexedFaceSet
ノード、IndexedLineSet
ノード、PointSet
ノードの coord フィールドに指定する、頂点の座標値を指定するためのノードです。
Coordinate ノード |
Coordinate {
point [ x y z, x y z, ... ]
}
|
IndexedFaceSet
ノード、ElevationGrid
ノードの normal フィールドに指定する、面あるいは頂点の法線ベクトルを指定するためのノードです。
Normal ノード |
Normal {
vector [ x y z, x y z, ... ]
}
|
IndexedFaceSet
ノード、IndexedLineSet
ノード、ElevationGrid
ノード、PointSet
ノードの color フィールドに指定する、頂点の座標値を指定するためのノードです。
Color ノード |
Color {
color [ r g b, r g b, ... ]
}
|
Shape ノードの appearance
フィールドに指定する、物体の色などの属性情報を指定するノードです。
Appearance ノード |
Appearance {
material 材質の指定
texture 貼り付けるテクスチャの指定
textureTransform テクスチャの張り付け位置
}
|
- material
フィールドには物体の表面の材質パラメータを指定する。これには
Material
ノードを使用する。
- texture
フィールドには物体表面に貼り付ける別の画像を指定する。貼り付ける画像の指定には
ImageTexture
ノード、MovieTexture
ノード、あるいは PixelTexutre
ノードを使用する。デフォルトでは何も貼り付けない。
- texture
フィールドで指定した画像の位置やスケールを調整する座標変換を、
TextureTransform
ノードで指定する。デフォルトは無変換。
物体表面の材質パラメータを指定します。 Appearance
ノードの material フィールドで使用します。
Material ノード |
Material {
ambientIntensity 環境光の反射率
diffuseColor r g b
specularColor r g b
shininess 輝き
emissiveColor r g b
transparency 透明度
}
|
- ambientIntensity
フィールドは環境光(光源からの光の当たっていない部分の明るさ)に対する反射率を指定する。これが
0 だと陰の部分が真っ暗になる。
- diffuseColor
フィールドは拡散反射率を光の3原色(赤:r,
緑:g, 青:b、いずれも 0〜1)で指定する。これが物体の色になる。
- specularColor
フィールドには鏡面反射率を3原色(赤:r,
緑:g, 青:b、いずれも 0〜1)で指定する。これは光源の光が物体表面でそのまま反射して見える部分(ハイライト)の色になる。
- shininess
フィールドは輝き具合、すなわちハイライトの「強さ」を、
0〜1 の間で指定する。この値が大きくなるにつれてハイライトが鋭くなり、輝き感が増す。
- emissiveColor の3つの値(赤:r, 緑:g, 青:b、いずれも
0〜1)を 0 0 0 より大きくすると、この物体自体がその色で発光する。
- 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 {
url 画像ファイルのurl
repeatS 画像空間のS軸方向の繰り返し
repeatT 画像空間のT軸方向の繰り返し
}
|
- Appearance
ノードで用いるテクスチャファイルを指定する。画像ファイルの
url は、このノードを含む VRML
ファイルからの相対 url あるいは http://...
からはじまる絶対 url。画像ファイルには
GIF, JPEG などが指定できる。
- 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 {
center x y
rotation r
scale x y
translation x y
}
|
- center フィールドは rotation フィールドと
scale フィールドが適用されるテクスチャ空間中の中心位置を指定する。
- 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 方向にずらす
}
}
}
|
DirectionLight ノード |
DirectionalLight {
direction 光の方向
color r g b
intensity 明るさ (0〜1)
on 光源の点灯(TRUE)/消灯(FALSE)
ambientIntensity 環境光の明るさ
}
|
- 平行光の光源。
- direction に方向を指定する 0 0 -1(デフォルト)だと、Z軸の負の方向
- color に光原色を指定する。1 1 1(デフォルト)だと、白色光。
- intensity に光源の明るさを指定する。1(デフォルト)が最も明るい。
- 環境光は全く光の当たらない部分(影)の部分の明るさ。デフォルトは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 {
location 光源の位置
color r g b
intensity 明るさ (0〜1)
on 光源の点灯(TRUE)/消灯(FALSE)
ambientIntensity 環境光の明るさ
attenuation 光の減衰率
radius 光の到達半径
}
|
- 点光源。
- attenuation
フィールドには3つのパラメータを設定する。それぞれを
a1 a2 a3、光源との距離を r とすると、明るさは
1 / (a1 + a2* r + a3 * r2) となる。デフォルトは
1 0 0 (減衰なし)。
- 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 {
direction 光の方向
location 光源の位置
color r g b
intensity 明るさ (0〜1)
on 光源の点灯(TRUE)/消灯(FALSE)
ambientIntensity 環境光の明るさ
attenuation 減衰率
radius 光の到達半径
beamWidth 最大輝度で光の広がる角度
cutOffAngle 完全に光が遮断される角度
}
|
- スポットライト。
- beamWidth
は光が最大輝度で照射される角度。デフォルトはπ/2。
- cutOffAngle
は光が完全に遮られる角度。デフォルトはπ/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 {
bboxCenter x y z
bboxSize x y z
children [コドモ, コドモ, ...]
}
|
- children フィールドに指定した複数の Shape
ノードや Group ノードをまとめて、ひとつのノードとして表現する。
- bboxCenter および bboxSize
は、それぞれ外接箱の中心とサイズを指定する。内包するすべてのノードを囲う外接箱を指定すれば、画像表示の速度を向上できる。
- bboxSize のデフォルトは -1 -1 -1
で、これは外接箱が設定されていないことを示す。
- VRML
ファイルのトップレベルのノードとして使われる。
Transform ノード |
Transform {
translation x y z
rotation x y z r
scale x y z
scaleOrientation x y z r
bboxCenter 外接箱の中心
bboxSize 外接箱サイズ
children [コドモ コドモ ...]
}
|
- Group ノード同様 children
フィールドに指定した複数の Shape
ノードや Group ノードをまとめて一つのノードとして表現するが、その際に内包するすべてのノードに対する変換を指定する。
- translation フィールドには、children
フィールドに指定したノードを移動する位置を指定する。
- rotation フィールドには、children
フィールドに指定したノードの回転を指定する。
x y z には回転軸ベクトル、r
には回転角を与える。
- scale フィールドには、children
フィールドに指定したノードの、 x軸、y軸、z軸方向の拡大率を指定する。x
y z > 0。
- scaleOrientation は、scale
フィールドによる拡大縮小を行う「前」の、
children フィールドに指定したノードの回転を指定する。この回転により、任意の軸方向の拡大縮小が行える。x
y z は回転軸ベクトル、 r は回転角。
Billboard ノード |
Billboard {
axisOfRotation x y z
bboxCenter 外接箱の中心
bboxSize 外接箱のサイズ
children [コドモ コドモ ... ]
}
|
- Billboard ノードは Transform ノードの変形で、
children に指定したノードの(ローカル座標系の)
Z軸が常に観測者の方向を向くように調整する。
- axisOfRotation
フィールドには、観測者の方向に向けるための回転の軸ベクトルを指定する。デフォルトは
0 1 0(y 軸中心)。
NavigationInfo ノード |
NavigatonInfo {
avatarSize [radius height knee
headlight ヘッドライトの点灯 (TRUE) 消灯 (FALSE)
speed 速度(デフォルトの速度からの倍数)
type ナビゲーションの方法
visibilityLimit 遠地点の距離
}
|
- NavigationInfo
ノードは(観測者の)「仮身」に関する情報を与える。
- アバターは円柱で表現され、半径、高さ、および地面からの高さ(ひざの高さ)で表現する。デフォルトは
[0.25, 1.6, 0.75]
であり、だいたい人間の大きさである。この大きさはアバターが仮想空間上で行動するときの制約になる。たとえば、この円柱の直径より狭い隙間は通れないとか、ひざの高さより高いものを乗り越えるには難儀するとか。
- headlightはアバターから視線方向に向けられた、指向性を持った光源である。デフォルトは
TRUE。
- speed
フィールドにはナビゲーション時の平行移動の、ブラウザのデフォルトの速度に対する係数を指定する。
1.0 でデフォルトの速度、2.0 でその2倍。
- type
フィールドにはナビゲーションの方法する。ブラウザによって指定できる方法が異なるが、最低限
"WALK", "FLY", "EXAMINE",
"NONE" はサポートされている。
- visibilityLimit
フィールドの値より遠くにある物体は表示されない。
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
}
|
- skyColor
フィールドには空の色を指定する。複数の色を指定し、隣り合う色の間隔(角度)を
skyAngle
に指定すれば、グラデーションを付けることができる。
- groundColor
フィールドには地面の色を指定する。複数の色を指定し、隣り合う色の間隔(角度)を
skyAngle
に指定すれば、グラデーションを付けることができる。
- backUrl, frontUrl, rightUrl, leftUrl, topUrl, bottomUrl
はそれぞれz軸の正の方向、z軸の負の方向、x軸の正の方向、x軸の負の方向、
y軸の正の方向、y軸の負の方向の無限遠に置いた平面に貼り付ける画像の
url を指定する。