このページの内容: クイック・リファレンス | スクリプト言語 | スクリプトの例 |
操作手順: をクリックします。
スクリプト・エディタを使ってフィールドとイベントを定義し、シーンで実行するためのスクリプトを作成できます。また、このエディタには、シーンの中にセンサーを設置するためのボタンが用意されており、センサーによるスクリプトの起動が可能です。
スクリプトは、VrmlScript で書かれます。VrmlScript は、軽量でプラットフォームに依存しないプログラミング言語です。また、JavaScript に非常によく似ています。VrmlScript には、イベントがスクリプトに入ってくると呼び出される関数が用意されています。このほかにも VrmlScript は、スクリプト内のフィールドへのアクセス、フィールド上で演算するためのロジック、およびスクリプトからイベントを送り出す機能を提供します。
次に、スクリプト・エディタ のクイック・ガイドを示します。
イメージをクリックすると全体が拡大表示されます。
VrmlScript に関する詳細な説明は、次の場所にあります。
http://vrml.sgi.com/moving-worlds/spec/vrmlscript.html
Cosmo Worlds では、スクリプトはスクリプト・ノードの url フィールドに単一の文字列として含まれます。スクリプトは、必ず vrmlscript: で始めます。スクリプトでは、各 eventIn に対応する関数を定義します。また、内部のフィールドと eventOut は変数として使用可能です。
次に示すのは、VRML ファイルのスクリプト・ノードを含む簡単なスクリプトの例です。
#VRML V2.0 utf8 DEF XFORM Transform { children [ Shape { geometry Cone {} }, DEF SENSOR TouchSensor { }, DEF SCRIPT Script { eventIn SFBool triggerIn eventOut SFFloat fractionOut field SFFloat fraction 0 url "vrmlscript: function triggerIn(trigger) { if (trigger) { fraction = fraction + 0.1; fractionOut = fraction; } }" }, DEF INTERP PositionInterpolator { keys [0.0, 1.0] values [0 0 0, 3 0 0] } ] } ROUTE SENSOR.isActive TO SCRIPT.triggerIn ROUTE SCRIPT.fractionOut TO INTERP.set_fraction ROUTE INTERP.outValue TO XFORM.translation
参照: スクリプトの作成