#VRML++ draft utf8 # The VRML++ Logo in VRML++ ############### ## FILTER ############### CLASS PositionFilter [ field MFNode sources [] field PositionInterpolator filter NULL field MFNode targets [] ] EXTENDS SFNode { ROUTE sources.fraction_changed TO filter.set_fraction ROUTE filter.value_changed TO targets.set_translation } CLASS ColorFilter [ field MFNode sources [] field ColorInterpolator filter NULL field MFNode targets [] ] EXTENDS SFNode { ROUTE sources.fraction_changed TO filter.set_fraction ROUTE filter.value_changed TO targets.set_diffuseColor } CLASS OrientationFilter [ field MFNode sources [] field OrientationInterpolator filter NULL field MFNode targets [] ] EXTENDS SFNode { ROUTE sources.fraction_changed TO filter.set_fraction ROUTE filter.value_changed TO targets.set_rotation } ############### ## LOGO ############### DEF BALL Transform { children Shape { appearance Appearance { material DEF BALLCOL Material { } } geometry Sphere { radius 0.1 } } translation 0 2.4 0 } DEF CONE Transform { children Transform { children Shape { appearance Appearance { material DEF CONECOL Material { } } geometry Cone { } } rotation 1 0 0 3.14 } } DEF LOGO Transform { children Transform { children Shape { appearance Appearance { material DEF LOGOCOL Material { } } geometry Text { string "VRML++" fontStyle FontStyle { justify "MIDDLE" } } } translation 0 0 1.5 } } ################### ## INTERPOLATOR ################### DEF CPOL1 ColorInterpolator { key [ 0, 1 ] keyValue [ 1 0 0, 0 1 0 ] } DEF CPOL2 ColorInterpolator { key [ 0, 1 ] keyValue [ 0 0 1, 1 1 1 ] } DEF OPOL OrientationInterpolator { key [ 0, 0.5, 1 ] keyValue [ 0 1 -0.2 0.0, 0 1 -0.2 3.14, 0 1 -0.2 6.28 ] } DEF PPOL PositionInterpolator { key [ 0, 0.2, 0.4, 0.6, 0.8, 1 ] keyValue [ 0 2.4 0, 0 2.2 0 0 1.8 0 0 1 0 0 1.8 0 0 2.2 0 ] } ############### ## CLOCK ############### DEF CLOCK TimeSensor { loop TRUE } ############### ## ROUTING ############### OrientationFilter { sources USE CLOCK filter USE OPOL targets [ USE LOGO, USE CONE ] } ColorFilter { sources USE CLOCK filter USE CPOL1 targets [ USE LOGOCOL, USE BALLCOL ] } ColorFilter { sources USE CLOCK filter USE CPOL2 targets USE CONECOL } PositionFilter { sources USE CLOCK filter USE PPOL targets USE BALL }