物体を作ったとき、デフォルトの表示座標は原点、回転角度は0度になっています。
ここでは、物体の表示位置を指定する(移動する)方法と回転させる方法を説明します。
●物体の表示位置を指定する 物体の表示位置(表示座標)はtranslationフィールドに書きます。 パラメータは3つ、X座標、Y座標、Z座標、です。 物体の記述(Shapeノード)はchildrenの中に書きます。childrenの括弧は、角括弧 [ ] になるので注意してください。
Transform{ translation 2.0 1.0 0.0 # 物体を表示する位置を設定(ここでは、座標 2.0 , 1.0 , 0.0 を指定) children[ # childrenが必要 [ ]になるので注意! ] } 【例】座標(3.0 1.0 0.0)に円錐を表示する #VRML V2.0 utf8 Transform{ translation 3.0 1.0 0.0 children[ Shape{ geometry Cone{ bottomRadius 2.0 height 4.0 } } ] }
●回転させる 回転角度はrotationフィールドに書きます。 パラメータは4つです。 第1から第3パラメータはどの軸を中心に回転させるかを指定します(1.0を指定した軸を中心に回転します。 回転軸を2軸以上指定した場合は、指定した軸の合成ベクトルが回転軸になります)。 第4パラメータは回転角度です。 回転角度の単位は「ラジアン」です。(「度」ではありませんので注意してください。) 回転の向きは反時計回りです。 Transform{ rotation 1.0 0.0 0.0 3.14 # x軸を中心に、反時計回りに3.14ラジアン回転 children[ # childrenが必要 [ ]になるので注意! ] }
簡単な変換表を載せておきますので参考にしてください。
度とラジアンの変換表 | |
度 | ラジアン |
5 10 15 30 45 90 180 |
0.087 0.17 0.26 0.52 0.79 1.57 3.14 |
【例】X軸を中心に反時計回りに3.14ラジアン(180度)回転させる。 #VRML V2.0 utf8 Transform{ rotation 1.0 0.0 0.0 3.14 children[ Shape{ geometry Cone{ bottomRadius 2.0 height 4.0 } } ] }
実行例
●回転してから移動させる translationフィールドとrotationフィールドを同時に入れれば、物体を回転させてから移動することができます。 この時、物体の中心で回転されたものが移動されます。
【例】X軸を中心に反時計回りに3.14ラジアン(180度)回転させた円錐を座標(3.0 1.0 0.0)に移動する。 #VRML V2.0 utf8 Transform{ translation 3.0 1.0 0.0 rotation 1.0 0.0 0.0 3.14 children[ Shape{ geometry Cone{ bottomRadius 2.0 height 4.0 } } ] }
実行例
【注意】この方法だと回転した後に移動させることしかできません。
移動した後に回転したい場合は「幾何変換を重ねる」を参照してください。
●複数の物体を別の座標に表示する
【例】円錐を2つ表示する。 円錐@は座標(0.0 -1.0 0.0)に表示する。 円錐AはX軸を中心に3.14ラジアン(180度)回転した後、座標(3.0 1.0 0.0)に表示する。 #VRML V2.0 utf8 Transform{ translation 0.0 -1.0 0.0 children[ Shape{ geometry Cone{ bottomRadius 2.0 height 4.0 } } ] } Transform{ translation 3.0 1.0 0.0 rotation 1.0 0.0 0.0 3.14 children[ Shape{ geometry Cone{ bottomRadius 2.0 height 4.0 } } ] }
実行例