<?xml version="1.0" encoding="UTF-8"?>
<X3D>
<Scene>
<Viewpoint position='0 10 12' orientation='1 0 0 -0.78'/>
<NavigationInfo
type='
"EXAMINE"'
/>
<Transform>
<Shape>
<Appearance>
<Material diffuseColor='0.6 0.3 0'/>
</Appearance>
<Box size='10 0.1 10'/>
</Shape>
<TouchSensor DEF='ThS'/>
</Transform>
<Group DEF='Balls-Gp'>
</Group>
<Script DEF='Sc'>
<field accessType='inputOnly' type='SFVec3f' name='set_hitPoint'/>
<field accessType='outputOnly' type='MFNode' name='addChildren'/>
<field accessType='initializeOnly' type='SFNode' name='Ball'>
<Shape>
<Appearance>
<Material diffuseColor='1 0 0'/>
</Appearance>
<Sphere radius='0.1'/>
</Shape>
</field>
<field accessType='initializeOnly' type='MFFloat' name='key_0' value='0 0.25 0.5 0.75 1'/>
<field accessType='initializeOnly' type='MFVec3f' name='keyValue_0' value='0 0 0 0 1 0 0 4 0 0 9 0 0 16 0'/>
<![CDATA[ecmascript:
function set_hitPoint(vec,et) {
// TimeSensor ノードを生成し、イベント時刻を startTime にセットする。
var TiS = new SFNode ('TimeSensor { cycleInterval 20 }');
TiS.startTime = et + 1;
// PositionInterpolator ノードを生成し、key と keyValue をセットする。
var PI = new SFNode ('PositionInterpolator {}');
PI.key = key_0;
PI.keyValue = keyValue_0;
// Transform ノードを生成し、その子ノードをセットする。
var ballTf = new SFNode ('Transform {}');
ballTf.children = new MFNode ( Ball, TiS, PI );
// ルートを追加する。
Browser.addRoute( TiS, 'fraction_changed', PI, 'set_fraction' );
Browser.addRoute( PI, 'value_changed', ballTf, 'translation' );
// Transform ノードを生成し、カーソルが触れた場所に球をセットする。
var Tf = new SFNode ('Transform {}');
Tf.translation = vec;
Tf.children[0] = ballTf;
addChildren[0] = Tf;
}
]]>
</Script>
<ROUTE fromNode='ThS' fromField='hitPoint_changed' toNode='Sc' toField='set_hitPoint'/>
<ROUTE fromNode='Sc' fromField='addChildren' toNode='Balls-Gp' toField='addChildren'/>
</Scene>
</X3D>