[ VRMLaboR Home | Script | Prototype | Advanced ]

IS文

IS文はPROTOの[ ]内で定義された新しいイベントイン/アウトやフィールド名と、{ }内でPROTOを定義しているシーングラフの中の、イベントイン/アウトやフィールド 名を結び付けるものである。

たとえば、


   PROTO  Cat  [
   eventIn SFVec3f position
   ]
   {
   	Transform {
   		translation IS position
   		................
   	}
   }

これで、positionというCatプロトタイプのイベントインが、内部でTransformノード のtranslationイベントインに結び付けられている。
これを具体化(インスタンス)して使うには、たとえば、


   DEF  COPY  Cat { }
   ...............
   ROUTE RULE.position TO COPY.position

これで、COPYという名前でCatタイプのノードをひとつ実際に作り、ここには書かれ ていないが、RULEというスクリプトノードのイベントアウト、positionをCOPYノード のイベントインpositionにルートで結び付けている。

また、フィールドを定義する例を上げると、


  PROTO  Dog  Transform [
  field SFVec3f position 0 0 0
  ]
  {
 	 Transform {
  	translation IS position
  	................
  	}
  }

これをインスタンス化すると、たとえば、


   DEF  COPY1 Dog { position 10 0 0 }
   DEF  COPY2 Dog { position 20 0 0 }
   ..............

COPY1,COPY2.....という名前のDogタイプのノードを具体的に作っている。また、 positionという公共フィールドの値を明確に書くことにより、別々のtranslationフ ィールド値を持つDogタイプのノードを作ることができる。
こうしてたとえば、プロトタイプで顔を定義して、目鼻の位置を公共フィールドでの 設定で自由に配置したり、瞳や髪の色を自由に変化させたりして、似ているが少しず つ違うという、バリエーションを持たせたオブジェクトをたくさん作ることができる のだ。

USEコマンドは、まったく同じものをコピーするしかできないので、プロトタイプの この機能は便利なものなのである。こういったコピーのテクニックはデータサイズを 小さくできるので、ウェッブには欠かせない技術である。