| |||||||||||||||||
|
1.Общие сведения(структура программы,
простейший пример) Усложненный примерПриводящийся ниже пример предназначен для самостоятельного изучения. В качестве пояснения следует сказать, что данный пример, по сути, является усложненным вариантом предыдущего примера, с той лишь разницей, что изменяется не цвет наблюдаемого объекта, а его координаты. Данный пример демонстрирует перемещение объекта ( в данном случае - шара ) в четырех направлениях в результате нажатия на соответствующие управляющие элементы ( стрелки ). VRML V2.0 utf8 #Описание прототипа стрелки PROTO Pointer [ exposedField SFVec3f translation 0 0 0 exposedField SFRotation rotation 0 0 1 0 ] { Transform { translation IS translation rotation IS rotation children [ Transform { children [ Shape { appearance Appearance { material Material { diffuseColor 0 1 0 } } geometry Cylinder { height 3 radius 0.5 } } ] } Transform { translation 0 2 0 children [ Shape { appearance Appearance { material Material { diffuseColor 0 1 0 } } geometry Cone {} } ] } ] } } #Описание четырех стрелок Group { children [ Pointer { translation 22 -20 0 rotation 0 0 1 -1.57 } DEF Right TouchSensor {} ] } Group { children [ Pointer { translation 18 -20 0 rotation 0 0 1 1.57 } DEF Left TouchSensor {} ] } Group { children [ Pointer { translation -20 22 0 } DEF Up TouchSensor {} ] } Group { children [ Pointer { translation -20 18 0 rotation 0 0 1 3.14 } DEF Down TouchSensor {} ] } #Описание шара DEF Ball Transform { children [ Shape { appearance Appearance { material Material { diffuseColor 0.5 0.2 0.8 } } geometry Sphere { radius 3 } } ] } #Описание таймеров DEF Timer_Left TimeSensor { cycleInterval 2.0 } DEF Timer_Right TimeSensor { cycleInterval 2.0 } DEF Timer_Up TimeSensor { cycleInterval 2.0 } DEF Timer_Down TimeSensor { cycleInterval 2.0 } #Описание интерполяторов DEF Move_Left PositionInterpolator { key [0, 0.25, 0.5, 0.75, 1] keyValue [0 0 0, -10 0 0, -20 0 0, -10 0 0, 0 0 0] } DEF Move_Right PositionInterpolator { key [0, 0.25, 0.5, 0.75, 1] keyValue [0 0 0, 10 0 0, 20 0 0, 10 0 0, 0 0 0] } DEF Move_Up PositionInterpolator { key [0, 0.25, 0.5, 0.75, 1] keyValue [0 0 0, 0 10 0, 0 20 0, 0 10 0, 0 0 0] } DEF Move_Down PositionInterpolator { key [0, 0.25, 0.5, 0.75, 1] keyValue [0 0 0, 0 -10 0, 0 -20 0, 0 -10 0, 0 0 0] } #Описание путей трансляции сообщений ROUTE Left.touchTime TO Timer_Left.startTime ROUTE Timer_Left.fraction_changed TO Move_Left.set_fraction ROUTE Move_Left.value_changed TO Ball.translation ROUTE Right.touchTime TO Timer_Right.startTime ROUTE Timer_Right.fraction_changed TO Move_Right.set_fraction ROUTE Move_Right.value_changed TO Ball.translation ROUTE Up.touchTime TO Timer_Up.startTime ROUTE Timer_Up.fraction_changed TO Move_Up.set_fraction ROUTE Move_Up.value_changed TO Ball.translation ROUTE Down.touchTime TO Timer_Down.startTime ROUTE Timer_Down.fraction_changed TO Move_Down.set_fraction ROUTE Move_Down.value_changed TO Ball.translation
|
||||||||||||||||
Главная | Введение | Язык VRML | VRML 97 | Cсылки | Софт (Скачать) | О сайте |