この授業について質問がある場合は、hemmi@sun.ac.jp までメールで問い合わせてください。
その際、件名は 「コンピュータグラフィクス演習の講義について(3)」 としてください。
【注意】ブラウザは Internet Explorer を使っているか確認してください。
プログラムが複雑になってくるとエラーが出る場合があります。
その際は「エラーメッセージについて」を参照してください。
前回の授業では、基本図形の作り方を学びました。
VRMLでは、物体を作ったとき、デフォルトの表示座標は原点、回転角度は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が必要 [ ]になるので注意! ] }
「度」と「ラジアン」の変換は次のように行います。 ラジアン = 度 × π / 180
簡単な変換表を載せておきますので参考にしてください。
度とラジアンの変換表 | |
度 | ラジアン |
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 } } ] }
実行例
【練習問題】 コマを作りなさい。これができたらこの時間は終了です。
円柱2個、円錐1個を使います。
10:30までに、ここまでの課題が終わったかどうかを返信してください。
返信は、LiveCampusの「授業連絡」から行ってください。
返信内容は、「終わった」または「終わらなかった」のいずれかとしてください。
2020年5月18日(月) 10:30
LiveCampusの「授業連絡」から「返信」で行ってください。
「終わった」または「終わらなかった」のいずれかで答えてください。
以上