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