VRML

1-1 簡単なVRMLプログラム

 VRMLはC言語、Java言語といったように、VRMLにはVRML言語がある。実際に3次元を作るならそのVRML言語を用いて、プログラムを作成する。
 その時必要なエディタはメモ帳でも作れる。

 VRMLを表示するためには、先頭行は次のように宣言しなければならない。


#VRML V2.0 utf8

			
 utf8とは、VRMLのTextノードにある各国語の文字を表示するためのunicodeと呼ばれる国際標準への参照を表しています。
 ”#”で始まる記号は、次の復帰改行まですべてコメントとみなされる。

 次に紹介するプログラムとその結果を表示しています。


Program 1-1 vrml11.wrl

#VRML V2.0 utf8

Shape  {

  appearance Appearance  {

    material Material  {

      emissiveColor 1 1 0

    }

  }

  geometry Sphere  {  #Shpereは球といい、表示される。

    radius 10         #球の半径をあらわす。ここでは10

  }

}

<解説>
 1行目はVRMLを表示するために必要なもの。2行目で形を宣言している。
 3〜6行目は立体に色をつけるためのもの。Appearanceを宣言しないと平べったい形になり、立体表現ができない。
 diffuseColorの数字はそれぞれ、RGB順になっている。有効範囲は0〜1まで。この例からすると、赤と緑が最大値なので旧の色は緑である。

View 1-1 vrml11.wrl

 そしてプログラムを保存する時は、拡張子を.wrlとし、ブラウザで表示してみる。(Netscapeでたちあげる時はJavaがまず起動するので、時間が多くかかるかもしれない。)

 実際に表示したのが左の画面です。プログラムの関係上、最初に球は表示していない。後ろへ引っ張って行くと、黄色い球が表示しているのがわかる。

 VRML2.0の基本は、ノードである。ノードとは3次元シーンを作る構成要素のことで、DEFキーワードのよって、ノードに名前をつけることができる。ノードの例では次のようになります。


DEF LEG Transform	{

   ・・・・・・

}

			
 次のプログラムを紹介するのは、Transformというノードを用いる。Transformノードとは、VRMLの基本構成要素で、多くのオブジェクトのコンテナとして機能する一般的なグループノードである。
 しかしながら、Transformはそれ以上の機能も提供してる。Transformとは「変形(変換)」という意味で、このような動きには、スケーリング(拡大縮小)、回転、平行移動があります。Transformノードのデフォルト値は、アドレス にあります。

Program 1-2 vrml12.wrl

#VRML V2.0 utf8



DEF TransformCUBE Transform  {

  translation -3.0 2.0 1.0  #X軸上左に3つ動く。

  children  [

    DEF CUBE Shape  {

      appearance Appearance  {

        material Material  {

          diffuseColor 1 0 0

          specularColor 0.9 0.9 0.9

        }

      }

      geometry Box  {}

    }

  ]

}

<解説>
 先ほどのプログラムに、childrenで囲み、その上にTranslationで座標位置を決めている。childrenは絶対必須。
 translationで座標を決定し、その物体は何なのかというときにchildrenを用いる。いわばペーストみたいな感じである。

View 1-2 vrml12.wrl

 Program 1-2の結果が左図のようになる。x軸上に左側に3動き、y軸上に3つ上に、z軸上に1つ手前へ箱の位置を定義したのである。