|
VRMLScriptの言語仕様
VRMLScriptとは、VRMLのためのJavaScriptのサブセットである。JavaScript をま
ねて、VRMLに必要なものだけ残したものと考えてよい。ビルドインオブジェクトとし
て(中に構築されたデータ型として)VRMLデータタイプをサポートしている。 ここでは、かいつまんでVRMLScriptの言語仕様について説明しよう。 VRMLScriptがJavaを使うより良い点として次のことがあげられる。
VRMLのデータは、プロパティ(properties)と、メソッド(methods)のふたつを持っ ている。(両方そろってないものもある。) プロパティとは値のことである。たとえば、SFVec3f 型のオブジェクトは、x,y,zの 3つのプロパティを持つ。
たとえば、field SFVec3f vec 0 0 0 と定義すれば、
メソッドとは関数のことである。たとえばMathオブジェクトには、sin(),cos()など のメソッドを持っていて、Math.sin(r)というふうに参照できる。
変数
VRMLScriptの中の変数はオブジェクトのインスタンスである。
ステートメント
命令文はC/C++やJavaScriptと同様である。
VRMLScript では、JavaScript同様、newという構成子(constructor)が使える。
コメント文は、前に//を入れるとよい。 イベントイン スクリプトノードに定義された、イベントイン(eventIn)フィールドは、同じ名前 のfunctionに渡される。
|
Script {
eventIn SFBool start
url "vrmlscript:
function start (value, timestamp) { ..... }"
}
|
|
実際の値はvalueの中にはいる。 イベントアウト イベントアウト(eventOut)は、スクリプトノードのフィールドに定義されたグローバ ル変数であるが、値を入れられるとイベントを出力する。
|
Script {
eventIn SFBool start
eventOut SFBool out
url "vrmlscript:
function start (value, ts)
{
out = value;
}"
}
|
|
out がvalueにアサインされて、イベントを出力する。
ファンクションコール
VRMLScriptでも、ファンクションコール(関数呼び出し)的なことはできるのだが
、C/C++やJavaのような自由度はない。
|
url "vrmlscript:
function call( ) { ....... }
function func(value, ts)
{
........
call( );
}"
|
|
call()という関数がfuncの中で呼び出されている。 後処理をいくつかのイベントインの後に必ずする、といった場合に使用すれば便利で ある。 Mathオブジェクト VRMLScriptではJavaScript同様、Mathオブジェクトが使える。これは数値計算に便 利である。 良く使うプロパティ(値)は、
Math.sin(1.0) というふうに使う。
|
|
|
|
