Transformノードは、立体をグループ化し、そのグループのローカル座標を座標変換するノードです。次にTransformノードの例を示します。
次の図は、赤い円柱がローカル座標の中心にあり、それを、右の方向に移動したもの(赤い円柱)、移動して回転したもの(緑の円柱)、移動して回転の中心を指定して回転したもの(青い円柱)を描いたものです。
|
この図を描いたVRMLファイルを次に示します。移動はtranslationフィールドで、回転はrotationフィールドで指定します。回転の中心はcenterフィールドで移動後のローカル座標で与えます。
#VRML V2.0 utf8
#円柱 filename=transform_cylinder.wrl
#円柱の移動と回転
#center
DEF Red Shape { #red
appearance Appearance {
material Material{ diffuseColor 1 0 0 }
}
geometry Cylinder {
radius 0.2 height 3 }
}
Transform{ #red translation
translation 3 0 0
children [ USE Red ]
}
DEF Green Transform{ #green rotation
translation 3 0 0
rotation 0 0 -1 0.5
children [
Shape {
appearance Appearance {
material Material{ diffuseColor 0 1 0 }
}
geometry Cylinder {
radius 0.2 height 3 }
}
]}
DEF Blue Transform{ #blue center rotation
translation 3 0 0
center 0 -1.5 0
rotation 0 0 -1 -0.5
children [
Shape {
appearance Appearance {
material Material{ diffuseColor 0 0 1 }
}
geometry Cylinder {
radius 0.2 height 3 }
}
]}
|
次の図には、赤い円柱がローカル座標の中心にあり、それを、右の方向に移動して回転したもの(緑の円柱)があります。また、緑の円柱をローカル座標系も含めてスケーリングしたもの、スケーリングの方向を指定してからスケーリングしたものも描いています。
|
この図を描いたVRMLファイルを次に示します。移動はtranslationフィールドで、回転はrotationフィールドで指定します。スケーリングはscaleフィールドで3方向のファクターを与えます。scaleOrientationフィールドを設定すると、その方向にローカル座標を回転させてからスケーリングします。座標変換の詳細はTransformノードの説明を参照してください。
#VRML V2.0 utf8
#円柱 filename=transform_cylinder2.wrl
#円柱の回転
#scale と scaleOrientation
DEF Red Shape { #red
appearance Appearance {
material Material{ diffuseColor 1 0 0 }
}
geometry Cylinder {
radius 0.2 height 3 }
}
DEF Green Transform{ #green rotation
translation 2 0 0
rotation 0 0 -1 0.5
children [
Shape {
appearance Appearance {
material Material{ diffuseColor 0 1 0 }
}
geometry Cylinder {
radius 0.2 height 3 }
}
]}
Transform{ #Green scale
scale 1.5 0.5 1.5
children [ USE Green ]
}
Transform{ #Green scale
scaleOrientation 0 0 -1 0.5
# rotation 0 0 -1 0.5
scale 1.5 0.5 1.5
children [ USE Green ]
}
|
次の例はいろいろなビューポイントを指定したものです。ビューポイントにはそれぞれdescriptionフィールドで名前を付けています。VRMLのブラウザに表示したときにブラウザのViewpoint Listボタンを使用して、ビューポイントを変えて表示してみてください。
#VRML V2.0 utf8
# Viewpoint viewpoint.wrl
Background { skyColor 0.8 0.8 1 }
Viewpoint { description "Default"
}
Viewpoint { position 2.0 1.0 20.0
description "Position"
}
Viewpoint { position 2.0 1.0 15.0
orientation 0.0 0.0 -1.0 0.26
description "Orientationz"
}
Viewpoint { position 2.0 1.0 15.0
orientation -1.0 0.0 0.0 0.26
description "Orientationx"
}
Viewpoint { position 2.0 1.0 15.0
orientation 0.0 -1.0 0.0 0.26
description "Orientationy"
}
Viewpoint { position -3.0 0.0 6.0
description "Position2"
}
Viewpoint { position 3.0 0.0 6.0
description "Position3"
}
Transform {
translation -3 0 0
children [
Shape {
appearance Appearance {
material Material{ diffuseColor 0.2 0.8 0.6 }
}
geometry Box { size 3 4 2 }
}
]}
Transform {
translation 3 0 0
children [
Shape {
appearance Appearance {
material Material{ diffuseColor 0.2 0.6 0.8 }
}
geometry Box { size 4 4 2}
}
]}
|
