VRML VRML Shape V2.0 VRML (Presence) VR Toolkit World Toolkit VRML Java 3D VRML (Virtual Reality Modeling Language) JavaScript Java VRML (EAI) Java 3D Java utf8 1.0 VRML #VRML V1.0 ascii 2.0 (Interactivity) VRML 律 (Autonomy) VRML VRML VRML VRML VRML DXF VRML 1 2
Shape geometry appearance Shape Box Shape geometry Box Sphere Cone Shape geometry Shape geometry Sphere Cone 3 4
5 Cylinder Shape geometry Cylinder Appearance Shape appearance Appearance 6 Material Appearance material Material
EmEditor OK sample1.wrl geometry Sphere { geometry Sphere { Web geometry Sphere { diffusecolor 1 0 0 geometry Sphere { radius 2 diffusecolor 1 0 0 7 8
NavigationInfo Transform 1. [0.25, 1.6, 0.75 2. headlight ON 3. speed 2. translation children 1.0 2.0 4. type 3. rotation children x y z WALK, FLY, EXAMINE, NONE 5. visibilitylimit 0.0 4. scale children x y z NavigationInfo 1. Group children Shape Group r x y z > 0 5. scaleorientation scale children x y z r Transform Group translation 5 0 0 Billboard 1. children Shape Group 2. bboxcenter bboxsize 3. bboxsize 1 1 1 1. Billboard Transform children 4. VRML Z 2. axisofrotation Group 0 1 0y 9 10
Billboard Text Background 1. string 2. fontstyle FontStyle 3. length 0 4. maxextent 0 Text ImageTexture 1. Appearance url VRML url http:// url GIF, JPEG 2. repeats repeatt TRUE TRUE ImageTexture TextureTransform 11 12 1. center rotation scale 2. rotation, scale translation scale scale 2 1 S 1. skycolor skyangle 2. groundcolor skyangle 3. backurl, fronturl, righturl, lefturl, topurl, bottomurl z z x x y y url
Extrusion Shape geometry Extrusion ElevationGrid Shape geometry ElevationGrid 13 14
IndexedFaceSet Shape geometry IndexedFaceSet IndexedLineSet Shape geometry IndexedLineSet 15 16
PointSet Shape geometry PointSet 17 18
Coordinate IndexedFaceSet IndexedLineSet PointSet coord Coordinate Normal 2-3 0 3 IndexedFaceSet ElevationGrid normal 3 3 0 3 Normal point [ 0 4 0, -3 0-3, -3 0 3, 3 0 3, 3 0-3 Color IndexedFaceSet IndexedLineSet ElevationGrid PointSet color Color 0 0 1 2 a, b, c, d, e x y z 0 0 4 0 1-3 0-3 4 3 0-3 Coordinate Coordinate { z 1 2 3 4 0 2 3 0 3 4 0 4 1 4 3 2 1 IndexedFaceSet coord Coordinate coordinateindex Coordinate -1 IndexedFaceSet { coord Coordinate { point [0 4 0, -3 0-3, -3 0 3, 3 0 3, 3 0-3 coordindex [ 0, 1, 2, -1, 0, 2, 3, -1, 0, 3, 4, -1, 0, 4, 1, -1, 4, 3, 2, 1, -1 y O x 19 20
IndexedFaceSet Extrusion 1. (cross y section) (0, 2, 0) (2, 4, 0) 2. crosssection 3. spine O 4. scale z 5. orientation x Extrusion { crosssection [1 1, 1-1, -1-1, -1 1 spine [0 0 0, 0 2 0, 2 4 0 scale [1 1, 1 1, 1 1 orientation [0 1 0 0, 0 1 0 0, 0 1 0 0 21 22
PointLight location: 0 0 0 color : RGB 01 1 1 1 SpotLight intensity: 01 1 on: on/off TRUE on FALSE off TRUEon ambientintensity: 01 DirectionalLight attenuation: r DirectionalLight { 1/r 2 direction 0 0 1 # attenuation color 1 1 1 # a 1,a,a 1/(a 1 +a *r+a *r 2 ) intensity 1 # (1 0 0) on TRUE # on/off radius: 100 ambientintensity 0 # PointLight { direction: location 0 0 2 # Z (0 0 2) 0 0 1 Z color 0 1 0 # color : RGB 01 1 1 1 attenuation 1 1 0 # intensity: 01 1 geometry Sphere { on: on/off TRUE on FALSE off TRUEon ambientintensity: 01 SpotLight DirectionalLight { direction 1 0 0 # X color 0 1 0 # ambientintensity 0.2 # geometry Sphere { PointLight PointLight { location 0 0 0 # DirectionalLight SpotLight color 1 1 1 # SpotLight intensity 1 # on TRUE # on/off ambientintensity 0 # attenuation 1 0 0 # DirectionalLight radius 100 # SpotLight { direction 0 0 1 # location 0 0 0 # color 1 1 1 # intensity 1 # on TRUE # on/off ambientintensity 0 # attenuation 1 0 0 # radius 100 # beamwidth 1.570796 # cutoffangle 0.785398 # 23 24
direction: 0 0 1 Z location: 0 0 0 color : RGB 01 1 1 1 Viewpoint intensity: 01 1 Viewpoint on: on/off TRUE on FALSE off NavigationInfo type TRUEon NONE ambientintensity: 01 attenuation: r Viewpoint 1/r 2 attenuation a 1,a,a 1/(a 1 +a *r+a *r 2 Viewpoint { ) position 0 0 10 # (1 0 0) orientation 0 1 0 0 # radius: 100 fieldofview 0.785398 # beamwidth: /2 jump TRUE # cutoffangle: /4 description "" # SpotLight { location 0 0 2 cutoffangle position: 0 0 10 direction 0 0-1 beamwidth orientation: Z color 0 1 0 0 0 1 attenuation 1 1 0 fieldofview: beamwidth 1 /4 cutoffangle 0.2 ambientintensity 0.2 jump: TRUE description: geometry Sphere { Viewpoint { posision 5 5 5 # orientation 1 0 1 1.5 # descriptin position1 # NavigationInfo Viewpoint { NavigationInfo { headlight FALSE # posision -5 5 5 # orientation 1 0-1 1.5 # descriptin position2 # geometry Box { size 2 3 4 25 26
DEF USE geometry Box { size 1 3 1.5 DEF.wrl Web PROTO diffusecolor 1 1 1 DEF # Shape USE # DEF building building geometry Box { size 1 3 1.5 # diffusecolor 1 1 1 geometry Box { size 6 3.6 2 DEF building geometry Box { size 1 3 1.5 translation -2 2 1 diffusecolor 1 1 1 DEF WHEEL geometry Cylinder { radius 1 height 0.4 USE building diffusecolor 0.8 0.5 0.2 DEF building geometry Box { size 1 3 1.5 diffusecolor 1 1 1 translation 2 2 1 USE WHEEL translation 2 0 0 translation -2-2 1 USE WHEEL USE building translation 2-2 1 DEF building USE WHEEL geometry Box { size 1 3 1.5 diffusecolor 1 1 1 27 28 translation 2 0 0 USE building
translation -2 0 0 USE building Group { DEF building geometry Box { size 1 3 1.5 diffusecolor 1 1 1 translation 2 0 0 USE building translation -2 0 0 USE building DEF buildings Group { buildings DEF building geometry Box { size 1 3 1.5 diffusecolor 1 1 1 translation 2 0 0 USE building translation -2 0 0 USE building DEF buildings Group { DEF building geometry Box { size 1 3 1.5 diffusecolor 1 1 1 29 30 translation 2 0 0 USE building translation -2 0 0 USE building translation 0 0 2.5 USE buildings DEF buildings Group { VRML translation 0 0 2.5 USE buildings NavigationInfo { headlight FALSE NavigationInfo { headlight FALSE DirectionalLight { direction -4-5 -3 DirectionalLight { direction -4-5 -3 ambientintensity 0.5 DirectionalLight { direction -4-5 -3 ambientintensity 0.5
SpotLight { location 0 0 5 direction 0 0 1 color 1 0.2 0 VRML SpotLight { location 0 0 5 direction 0 0 1 radius color 1 0.2 0 attenuation 0 1 0 PointLight location SpotLight { Transform location 0 0 5 direction 0 0 1 color 1 0.2 0 attenuation 0 1 0 translation 1 0 1 DEF streetlight PointLight { color 1 1 0.3 attenuation 0 1 0 z x translation 1 0 1 DEF streetlight PointLight { color 1 1 0.3 attenuation 0 1 0 translation 1 0 1 USE streetlight 31 32 translation 1 0 1 USE streetlight Viewpoint { position 1 1.3 1.5 orientation 0 1 0 1.5708 0.785398 /4=45 60 Viewpoint { position 1 1.3 1.5 orientation 0 1 0 1.5708 fieldofview 1.0472 Viewpoint { position 1 1.3 1.5 VRML orientation 0 1 0 1.5708 fieldofview 1.0472 description "position1" Viewpoint { position -1 1.3 1.5 orientation 0 1 0 1.5708 fieldofview 1.0472 description "position2" Viewpoint { position -1 1.3 1.5 orientation 0 1 0 1.5708 fieldofview 1.0472 description "position2" Viewpoint { position -1 1.3 3.5 orientation 0 1 0-1.5708 fieldofview 1.0472 description "position3" Viewpoint { position 1 1.3 3.5 orientation 0 1 0-1.5708 fieldofview 1.0472 description "position4"
TouchSensor TouchSensor { enabled (TRUE)/ (FALSE) Anchor hitpoint_changed URL hitnormal_changed TouchSensor hittexcoord_changed isactive TRUE isover touchtime TRUE SphereSensor CylinderSensor Group { DEF TS TouchSensor { PlaneSensor geometry Sphere { xy ProximitySensor DEF SL SpotLight { VisibilitySensor direction 0 0 1 position 0 0 2 on FALSE Collision ROUTE TS.isActive TO SL.set_on SphereSensor Anchor Anchor { url URL parameter description children bboxcenter bboxsize URL Sphere { enabled (TRUE)/ (FALSE) autooffset (TRUE)/ (FALSE) offset x y z r isactive TRUE rotation_changed trackpoint_changed Anchor { url another.wrl # VRML HTML description Link to another VRML file geometry Sphere { Group { DEF SS SphereSensor { DEF HAKO geometry Box { 33 34
ROUTE SS.rotation_changed TO HAKO.set_rotation CylinderSensor ROUTE PS.translation_changed TO HAKO.set_translation ProximitySensor CylinderSensor { enabled (TRUE)/ (FALSE) diskangle maxangle minangle autooffset (TRUE)/ (FALSE) offset enabled (TRUE)/ (FALSE) center size isactive TRUE rotation_changed trackpoint_changed isactive TRUE entertime exittime Group { position_changed DEF CS CylinderSensor { orientation_changed DEF HAKO geometry Box { ROUTE CS.rotation_changed TO HAKO.set_rotation PlaneSensor PlaneSensor { enabled (TRUE)/ (FALSE) maxposition minposition autooffset (TRUE)/ (FALSE) offset ProximitySensor { VisibilitySensor isactive TRUE translation_changed trackpoint_changed VisibilitySensor { enabled center size # Billboard rotation 1 0 0 0.5 # PlaneSensor DEF PS PlaneSensor { isactive DEF HAKO entertime exittime 35 36 geometry Box { DEF PS ProximitySensor { center 0 0 0 size 2 2 2 Group { DEF SS SphereSensor { DEF HAKO geometry Box { # SphereSensor ROUTE PS.isActive TO SS.enabled ROUTE SS.rotation_changed TO HAKO.set_rotation (TRUE)/ (FALSE) TRUE
DEF VS ProximitySensor { center 0 0 0 size 2 2 2 Group { DEF SS SphereSensor { DEF HAKO geometry Box { # SphereSensor ROUTE VS.isActive TO SS.enabled ROUTE SS.rotation_changed TO HAKO.set_rotation Collision Collision { collide children collidetime (TRUE)/ (FALSE) proxy bboxcenter bboxsize Collision { geometry Box { size 5 5 1.wrl geometry Sphere { Web diffusecolor 1 0 0 Anchor Anchor { url "http://www.yahoo.co.jp/" description "Yahoo! Japan" Anchor url Web URL geometry Sphere { diffusecolor 1 0 0 translation 3 0 0 geometry Sphere { VRML diffusecolor 0 0 1 translation 3 0 0 geometry Sphere { diffusecolor 0 0 1 SpotLight { location 3 0 3 direction 0 0-1 37 38
translation 3 0 0 geometry Sphere { diffusecolor 0 0 1 SpotLight { location 3 0 3 direction 0 0 1 on FALSE Transform translation 3 0 0 TouchSensor DEF TS TouchSensor { geometry Sphere { TouchSensor TS diffusecolor 0 0 1 SpotLight SL DEF SL SpotLight { location 3 0 3 direction 0 0 1 on FALSE TouchSensor translation 3 0 0 isactive DEF TS TouchSensor { TRUE geometry Sphere { SpotLight on ROUTE DEF SL SpotLight { location 3 0 3 direction 0 0 1 on FALSE diffusecolor 0 0 1 ROUTE TS.isActive TO SL.set_on 39 TouchSensor isactive isover translation 3 0 0 DEF TS TouchSensor { isactive isover geometry Sphere { diffusecolor 0 0 1 ROUTE TS.isOver TO SL.set_on translation -3 0 0 VRML geometry Box { diffusecolor 0 1 0 Transform DEF SP Transform translation -3 0 0 translation rotation geometry Box { Transform diffusecolor 0 1 0 Transform SP DEF SP PlaneSensor { DEF PS PlaneSensor { PlaneSensor PS translation -3 0 0 PlaneSensor geometry Box { translation_changed 40 DEF SL SpotLight { location 3 0 3 direction 0 0 1 on FALSE
translation_changed diffusecolor 0 1 0 ROUTE Transform translation ROUTE PS.translation_changed TO SP.set_translation SphereSensor DEF SP DEF PS SphereSensor { rotation_changed translation -3 0 0 ROUTE geometry Box { Transform rotation PlaneSensor SphereSensor translation_changed rotation_changed set_translation set_rotation diffusecolor 0 1 0 ROUTE PS.rotation_changed TO SP.set_rotation SphereSensor DEF SP Transform DEF PS SphereSensor { DEF SP translation -3 0 0 DEF SP CylinderSensor DEF PS CylinderSensor { SphereSensor DEF SP translation -3 0 0 CylinderSensor DEF PS CylinderSensor { DEF SP translation -3 0 0 geometry Box { diffusecolor 0 1 0 41 ROUTE SS CY 42 rotation 0 0 1 1.5708 translation 3 0 0 geometry Cylinder { radius 0.3 height 2 ROUTE PS.rotation_changed TO SP.set_rotation Transform CY DEF PS CylinderSensor { DEF SP translation -3 0 0 SphereSensor SS geometry Box { DEF diffusecolor 0 1 0 CY SS DEF CY rotation 0 0 1 1.5708 translation 3 0 0 DEF SS SphereSensor { geometry Cylinder { radius 0.3 height 2 ROUTE PS.rotation_changed TO SP.set_rotation ROUTE SS.rotation_changed TO CY.set_rotation
DEF TIMER TimeSensor { cycleinterval 2 DEF SI ScalarInterpolator { TimeSensor TimeSensor ScalarInterpolator radius PositionInterpolator Transform translation ROUTE TS.touchTime TO TIMER.startTime # OrientationInterpolator ROUTE TIMER.fraction_changed TO SI.set_fraction # SI Transform rotation ROUTE SI.value_changed to SP.set_radius # SI radius ColorInterpolator Material diffusecolor PositionInterpolator { CoordinateInterpolator key Coordinate point NormalInterpolator Normal vector key [0.0 0.5 1.0 keyvalue [1.0 2.0 1.0 # 1 1 2 2 1 Group { DEF TS TouchSensor { DEF SP geometry Sphere { PositionInterpolator keyvalue value_changed TimeSensor TimeSensor { enabled (TRUE)/ (FALSE) cycleinterval loop (TRUE)/ (FALSE) starttime stoptime isactive fraction_changed cycletime time ScalarInterpolator ScalarInterpolator { key keyvalue value_changed TimeSensor TRUE 43 44 DEF TIMER TimeSensor { loop TRUE cycleinterval 2 DEF PI PositionInterpolator { key [0.0 0.25 0.5 0.75 1.0 keyvalue [ 1.0 0.0 0.0, 0.0 0.0 1.0, -1.0 0.0 0.0, 0.0 0.0 1.0, 1.0 0.0 0.0 DEF PLANET translation 1.0 0.0 0.0 geometry Sphere { ROUTE TIMER.fraction_changed TO PI.set_fraction ROUTE PI.value_changed TO PLANET.set_translation
OrientationInterpolator OrientationInterpolator { key keyvalue value_changed DEF TIMER TimeSensor { cycleinterval 3 loop TRUE DEF OI OrientationInterpolator { key [0.0 0.3333 0.6667 1.0 keyvalue [ 0.0 1.0 0.0 0.0, 0.0 1.0 0.0 2.0944, 0.0 1.0 0.0 4.1888, 0.0 1.0 0.0 0.0 DEF DICE translation 1.0 0.0 0.0 geometry Box { ROUTE TIMER.fraction_changed TO OI.set_fraction ROUTE OI.value_changed TO DICE.set_translation CoordinateInterpolator CoordinateInterpolator { key keyvalue -2.0 0.0-2.0, -2.0 0.0 2.0, # key:0.5 0.0 4.0 0.0, 1.0 0.0 1.0, 1.0 0.0-1.0, -1.0 0.0-1.0, -1.0 0.0 1.0, # key:1 0.0 2.0 0.0, 2.0 0.0 2.0, 2.0 0.0-2.0, -2.0 0.0-2.0, -2.0 0.0 2.0, geometry IndexedFaceSet { coord DEF PYRAMID Coordinate { point [ # key:0 0.0 2.0 0.0, 2.0 0.0 2.0, 2.0 0.0-2.0, -2.0 0.0-2.0, -2.0 0.0 2.0, coordindex [ 0 1 2 0-1 0 2 3 0-1 0 3 4 0-1 0 4 1 0-1 4 3 2 1 4 1 ROUTE TIMER.fraction_changed TO CI.set_fraction ROUTE CI.value_changed TO PYRAMID.set_point value_changed DEF TIMER TimeSensor { cycleinterval 3 loop TRUE DEF CI CoordinateInterpolator { key [0.0 0.5 1.0 keyvalue [ # key:0 0.0 2.0 0.0, 2.0 0.0 2.0, 2.0 0.0-2.0, 45 46
DEF HAKO TimeSensor cycleinterval DEF JIKAN TimeSensor { Transform DEF HAKO loop TRUE cycleinterval 4 cycleinterval geometry Box { Transform TimeSensor HAKO fraction_chanaged DEF KISEKI PositionInterpolator { diffusecolor 0.2 0.8 0.4 key [ 0 0.5 1 keyvalue [ 0 0 0, 0 2 0, 0 0 0.wrl Web cycleinterval ROUTE JIKAN.fraction_changed TO KISEKI.set_fraction ROUTE KISEKI.value_changed TO HAKO.set_translation TimeSensor PositionInterpolator JIKAN DEF HAKO key 0.25 0.75 DEF HAKO loop TRUE DEF JIKAN TimeSensor { TimeSensor loop TRUE TimeSensor PotisonInterpolator DEF HAKO key DEF JIKAN TimeSensor { loop TRUE keyvalue key DEF KISEKI PositionInterpolator { key [ 0 0.5 1 keyvalue [ 0 0 0, 0 2 0, 0 0 0 key:0 (0, 0, 0) key:0.5 (0, 2, 0) key:1 (0, 0, 0) TimeSensor (JIKAN) fraction_changed DEF HAKO PositionInterpolator (KISEKI)fraction DEF JIKAN TimeSensor { loop TRUE PositionInterpolator (KISEKI)value_changed DEF KISEKI PositionInterpolator { Transform key [ 0 0.5 1 (HAKO)translation keyvalue [ 0 0 0, 0 2 0, 0 0 0 ROUTE JIKAN.fraction_changed TO KISEKI.set_fraction ROUTE KISEKI.value_changed TO HAKO.set_translation 47 DEF JIKAN TimeSensor { keyvalue loop TRUE cycleinterval 4 48 DEF KISEKI PositionInterpolator { key [ 0 0.25 0.5 0.75 1 keyvalue [ 0 0 0, 1 1 0, 0 2 0, -1 1 0, 0 0 0 ROUTE JIKAN.fraction_changed TO KISEKI.set_fraction ROUTE KISEKI.value_changed TO HAKO.set_translation TimeSensor loop FALSE DEF HAKO DEF JIKAN TimeSensor { loop FALSE cycleinterval 4 DEF KISEKI PositionInterpolator { key [ 0 0.25 0.5 0.75 1 keyvalue [ 0 0 0, 1 1 0, 0 2 0, -1 1 0, 0 0 0 ROUTE JIKAN.fraction_changed TO KISEKI.set_fraction ROUTE KISEKI.value_changed TO HAKO.set_translation
DEF HAKO TouchSensor Sphere children DEF JIKAN TimeSensor { TouchSensor loop FALSE HAJIME cycleinterval 4 TouchSensor (HAJIME) DEF KISEKI PositionInterpolator { key [ 0 0.25 0.5 0.75 1 touchtime TimeSensor keyvalue [ 0 0 0, 1 1 0, 0 2 0, -1 1 0, 0 0 0 (JIKAN)startTime ROUTE JIKAN.fraction_changed TO KISEKI.set_fraction TimeSensor (JIKAN) ROUTE KISEKI.value_changed TO HAKO.set_translation loop FALSE # translation 3-3 0 starttime TouchSensor (HAJIME) geometry Sphere { radius 0.5 TimeSensor diffusecolor 0.2 0.2 0.8 DEF HAJIME TouchSensor { ROUTE HAJIME.touchTime TO JIKAN.startTime DEF HAKO TouchSensor DEF JIKAN TimeSensor { OWARI loop FALSE cycleinterval 4 stoptime TouchSensor (OWARI) DEF KISEKI PositionInterpolator { key [ 0 0.25 0.5 0.75 1 keyvalue [ 0 0 0, 1 1 0, 0 2 0, -1 1 0, 0 0 0 TimeSensor ROUTE JIKAN.fraction_changed TO KISEKI.set_fraction ROUTE KISEKI.value_changed TO HAKO.set_translation key:0 (0, 0, 1), 0 key:0.5 (0, 0, 1), key:1 (0, 0, 1), 2 geometry Sphere { radius 0.5 diffusecolor 0.8 0.2 0.2 DEF OWARI TouchSensor { ROUTE OWARI.touchTime TO JIKAN.stopTime DEF HAKO OrientationInterpolator KAITEN DEF JIKAN TimeSensor { loop FALSE cycleinterval 4 key DEF KISEKI PositionInterpolator { keyvalue key key [ 0 0.25 0.5 0.75 1 keyvalue [ 0 0 0, 1 1 0, 0 2 0, -1 1 0, 0 0 0 ROUTE JIKAN.fraction_changed TO KISEKI.set_fraction ROUTE KISEKI.value_changed TO HAKO.set_translation # Z TimeSensor ROUTE HAJIME.touchTime TO JIKAN.startTime # ROUTE OWARI.touchTime TO JIKAN.stopTime DEF KAITEN OrientationInterpolator { key [ 0 0.5 1 keyvalue [ 0 0 1 0, 0 0 1 3.1416, 0 0 1 6.2832 ROUTE JIKAN.fraction_changed TO KAITEN.set_fraction ROUTE KAITEN.value_changed TO HAKO.set_rotation # ROUTE HAJIME.touchTime TO JIKAN.startTime # translation 3-3 0 49 50
IndexedFaceSet Coordinate DEF HAKO Coordinate point CoordinateInterpolator DEF KAITEN OrientationInterpolator { key [ 0 0.5 1 keyvalue [ 0 0 1 0, 0 0 1 3.1416, 0 0 1 6.2832 ROUTE JIKAN.fraction_changed TO KAITEN.set_fraction ROUTE KAITEN.value_changed TO HAKO.set_rotation translation 0-3 0 geometry IndexedFaceSet { coord Coordinate { point [ 0.0 2.0 0.0, 2.0 0.0 2.0, 2.0 0.0-2.0, -2.0 0.0-2.0, -2.0 0.0 2.0, coordindex [ 0 1 2 0-1 0 2 3 0-1 0 3 4 0-1 0 4 1 0-1 4 3 2 1 4-1 Coordinate PYRAMID DEF HAKO Coordinate point CoordinateInterpolator DEF KAITEN OrientationInterpolator { key [ 0 0.5 1 CoordinateInterpolator keyvalue [ 0 0 1 0, 0 0 1 3.1416, 0 0 1 6.2832 key keyvalue IndexedFaceSet ROUTE JIKAN.fraction_changed TO KAITEN.set_fraction ROUTE KAITEN.value_changed TO HAKO.set_rotation geometry IndexedFaceSet { coord DEF PYRAMID Coordinate { point [ 0.0 2.0 0.0, 2.0 0.0 2.0, 2.0 0.0-2.0, -2.0 0.0-2.0, -2.0 0.0 2.0, coordindex [ 0 1 2 0-1 0 2 3 0-1 0 3 4 0-1 0 4 1 0-1 4 3 2 1 4-1 DEF HENKEI CoordinateInterpolator { key [0.0 0.5 1.0 keyvalue [ # key:0 0.0 2.0 0.0, 2.0 0.0 2.0, 2.0 0.0-2.0, -2.0 0.0-2.0, -2.0 0.0 2.0, # key:0.5 0.0 4.0 0.0, 1.0 0.0 1.0, 1.0 0.0-1.0, -1.0 0.0-1.0, -1.0 0.0 1.0, # key:1 0.0 2.0 0.0, 2.0 0.0 2.0, 2.0 0.0-2.0, -2.0 0.0-2.0, -2.0 0.0 2.0, ROUTE JIKAN.fraction_changed TO HENKEI.set_fraction ROUTE HENKEI.value_changed TO PYRAMID.set_point translation 0-3 0 51 52