#VRML V2.0 utf8
Viewpoint {
position 0 10 12
orientation 1 0 0 -0.78
}
NavigationInfo {
type "EXAMINE"
}
# 板
Transform {
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0.6 0.3 0
}
}
geometry Box {
size 10 0.1 10
}
}
DEF ThS TouchSensor {}
]
}
# ボールが追加される場所
DEF Balls-Gp Group {}
# スクリプト
DEF Sc Script {
eventIn SFVec3f set_hitPoint
eventOut MFNode addChildren
field SFNode Ball Shape {
appearance Appearance {
material Material {
diffuseColor 1 0 0
}
}
geometry Sphere {
radius 0.1
}
}
field MFFloat key_0 [ 0.0 0.25 0.5 0.75 1.0 ]
field MFVec3f keyValue_0 [ 0 0 0, 0 1 0, 0 4 0, 0 9 0, 0 16 0 ]
url "javascript:
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;
}
"
}
ROUTE ThS.hitPoint_changed TO Sc.set_hitPoint
ROUTE Sc.addChildren TO Balls-Gp.addChildren