#VRML V1.0 ascii DirectionalLight { on TRUE intensity 0.5 color 1 1 1 direction 0 -1 -1 } FontStyle { size 0.7 family SERIF style BOLD } DEF text1 Separator { Translation { translation 0 1 0 } AsciiText { string "Paradise Caos" spacing 1 justification CENTER width 0 } } DEF Cube Separator { Translation { translation -2 0 0 } Cube { width 1 height 1 depth 1 } } DEF sphere Separator { Translation { translation -0.66 0 0 } Sphere { radius 0.5 } } DEF Cone Separator { Translation { translation 0.66 0 0 } Cone { parts ALL height 1 bottomRadius 0.5 } } DEF Cylinder Separator { Translation { translation 2 0 0 } Cylinder { parts ALL height 1 radius 0.5 } }
パラメターは以下の4つです。 on TRUE <--- 光を当てるかどうかを"TRUE"または"FALSE"で現す。 intensity 0.5 <--- 光の強さ。0から1まで。 color 1 1 1 <--- 光の色。RGB方式。各数字は0 から 1の数字。 direction 0 -1 -1 <--- 光の当たる方向。それぞれx軸方向、y軸方向、z軸方向を現す。 数字は0で光なし。それ以外で光あり。y軸方向は-で上から。FontStyle { }
FontStyleノードのパラメータは以下の3つ。 size 0.7 <---文字の大きさ family SERIF <---fontのタイプ style BOLD <---fontのスタイルsizeパラメタで指定する数字は、大きさを現しあます。他のオブジェクトとバランスを考えてサイズを指定しましょう。familyパラメタで指定できるのは、上記のSERIF(TimesRoman系の文字)に加え、SANS(Helvetica系)とTYPEWRITER(Courier系)の2種類。ただし、familyパラメータは InternetExplorerのプラグインでは認識されない模様です。最後にstyleでは、BOLD、ITALICとNONE が指定可能。
一方, DEF text1というのは何かといと、Separator nodeに名前を定義しているのです。text1というのは
私が勝手につけたのもであって、任意のもので構いません。DEF xxxによってSeparator nodeに
名前をつけるとどんないいことがあるかというと、node groupの再利用が可能になり、コーディング
の工数を大幅に削減できるのである。同じ大きさ、形、色もオブジェクトを何個も使いたいという場合に、
このDEF xxx Separator { }を使ってオブジェクトを一回作っておけば、その後は、
"USE xxx" と記述すれば再利用可能なのです。
しかも、DEFは Separator nodeだけでなく、その他のnodeにも名前を付けることができます。
例えば、Translation nodeでY方向に10動かす指定をして、それに名前を付けておけば、USEを使って再利用して、何か他のオブジェクトを10だけY方向に動かしたいときに、使えるわけです。
Translation { translation x y z }
Translation nodeはオブジェクトの位置を指定するnodeです。
このnodeより後に指定されるオブジェクトの位置を指定することができます。
シンタックスは上の通りです。
x、y、zはそれぞれの方向への画面の中心点からオブジェクトの中心点までの距離を示します。
上の文で、中心点からの距離と書きましたが、Translation nodeが二回以上続けて指定された場合には、
その限りではありません。例えば、
Translation { translation 1 0 0 }
Translation { translation 1 0 0 }
このように指定された場合、この次に指定されるオブジェクトの位置はx軸の正の方向に2の距離です。
実際には、Translation nodeの後にTranslation nodeを含んだSeparator nodeを指定したりすると、
そういうことになります。
AsciiText { }
AsciiText nodeは文字を指定するnodeです。ただし、このnodeを使って設定した文字には厚みは有りません。
パラメータは以下の通り。
string "Paradise Caos" <--- 文字列を指定する。 ["Paradise","Caos"]と書くと2行になる。 spacing 1 <--- 行間指定。 justification CENTER <--- 文字列のどこが中心点にくるかを指定する。CENTERの他に RIGHTとLEFTが指定できる。 width 0 <--- 文字間隔の指定。Sphere { }
radius 0.5
のように指定します。指定する半径は他のオブジェクトや位置との関係を考慮に入れる。
Cone { }
Cone nodeは円錐を指定するnode。アイスクリームコーンのコーンですね。
指定できるパラメータは以下の通り。
parts ALL <--- 面塗りする部位を指定する。ALLで全面、SIDESで側面のみ、 そしてBOTTOMで底面のみの面塗り。 height 1 <--- 円錐の高さ。 bottomRadius 0.5 <--- 円錐の底面の半径。Cylinder { }
parts ALL <--- 面塗りする部位を指定する。ALLで全面、SIDESで側面のみ、 TOPで上面のみ、そしてBOTTOMで底面のみの面塗り。 height 1 <--- 円筒の高さ。 radius 0.5 <--- 円筒の半径。
このソースの解説はこれで終わりです。
戻る | 次のサンプルへ | メインページ |