<?xml version="1.0" encoding="UTF-8"?>
<X3D>
<Scene>
<Viewpoint/>
<NavigationInfo
type='"EXAMINE"'
/>
<!-- 赤円錐 -->
<Transform DEF='Cone-Tf'>
<Transform translation='3 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='1 0 0'/>
</Appearance>
<Cone height='0.5' bottomRadius='0.2'/>
</Shape>
</Transform>
</Transform>
<!-- スライダー -->
<Group>
<Transform DEF='Slider-Tf'>
<Shape>
<Appearance>
<Material diffuseColor='0 0.8 0'/>
</Appearance>
<Sphere radius='0.2'/>
</Shape>
</Transform>
<Shape>
<Appearance>
<Material diffuseColor='0.5 0 0'/>
</Appearance>
<Box size='2 0.1 0.1'/>
</Shape>
<PlaneSensor DEF='Slider-PlS' minPosition='-1 0' maxPosition='1 0'/>
</Group>
<ROUTE fromNode='Slider-PlS' fromField='translation_changed' toNode='Slider-Tf' toField='translation'/>
<!-- タイムセンサー -->
<TimeSensor DEF='TiS' loop='TRUE' cycleInterval='5'/>
<!-- 回転アニメ -->
<OrientationInterpolator DEF='OI'
key='0 0.25 0.5 0.75 1'
keyValue='0 0 1 0
0 0 1 1.5708
0 0 1 3.1416
0 0 1 4.7124
0 0 1 6.2832
'
/>
<!-- スピード調整スクリプト -->
<Script DEF='Sc'>
<field accessType='inputOnly' type='SFVec3f' name='adjustSpeed'/>
<field accessType='inputOnly' type='SFFloat' name='set_fraction'/>
<field accessType='outputOnly' type='SFFloat' name='fraction_out'/>
<field accessType='initializeOnly' type='SFFloat' name='speed' value='0'/>
<field accessType='initializeOnly' type='SFFloat' name='oldF' value='0'/>
<![CDATA[ecmascript:
function adjustSpeed (vec) {
speed = vec.x;
}
function set_fraction (f) {
var df = f - oldF;
if ( df < 0 ) df++;
oldF = f;
fraction_out += df * speed;
if ( fraction_out > 1 ) fraction_out--;
else if ( fraction_out < 0 ) fraction_out++;
}
]]>
</Script>
<ROUTE fromNode='Slider-PlS' fromField='translation_changed' toNode='Sc' toField='adjustSpeed'/>
<ROUTE fromNode='TiS' fromField='fraction_changed' toNode='Sc' toField='set_fraction'/>
<ROUTE fromNode='Sc' fromField='fraction_out' toNode='OI' toField='set_fraction'/>
<ROUTE fromNode='OI' fromField='value_changed' toNode='Cone-Tf' toField='rotation'/>
</Scene>
</X3D>