#VRML V2.0 utf8
Background
{
skyColor
[
0.3 0.8 0.3
]
}
DEFbox Transform
{
children
[
Shape
{
appearanceAppearance
{
materialMaterial
{
diffuseColor0.2 0.2 0.6
}
}
geometryBox
{
size1.0 1.0 1.0
}
}
DEFtouchTouchSensor { }
]
}
Transform
{
translation1.0 0.0 0.0
children
[
Shape
{
appearanceAppearance
{
materialMaterial
{
diffuseColor0.5 0.3 0.2
}
}
geometryText
{
string"Welcome"
fontStyleFontStyle
{
family"TYPEWRITER"
style"ITALIC"
}
}
}
]
}
DEFclock TimeSensor
{
cycleInterval 2.0
loop TRUE
}
DEFway Script
{
eventInSFTime clicked
eventInSFFloatnow
eventOutSFRotationrotation
eventOut SFVec3ftranslation
eventOut SFVec3f scale
field SFBool on FALSE
url"javascript:
functioninitialize()
{
rotation[0]=0;
rotation[1]=0;
rotation[2]=1;
rotation[3]=0.0;
on = 0;
}
function clicked(time)
{
on=TRUE;
}
functionnow(fraction)
{
if(on)
{
rotation[3]=(fraction*6.28);
}
}
"
}
ROUTE touch.touchTimeTOclock.startTime
ROUTE touch.touchTimeTOway.clicked
ROUTEclock.fraction_changedTO way.now
ROUTE way.rotation TObox.set_rotation
ROUTE way.translationTObox.set_tran slation
效果如图:
执行之后,会发现,立方体是旋转的。
这个例子使用了多个VRML结点,如Transform结点用来确定造型所在坐标系,Shape结点用来创建造型,TouchSensor结点用来创建触动传感器,TimeSensor结点创建了时间传感器,Script节点给VRML文件加入了脚本语言,DEF命令给结点命名,ROUTE命令创建了路由。
当浏览者点击图中的方块时,方块便开始旋转。这个例子所创建的VRML场景体现了VRML的部分功能,如立体的视觉效果、脚本功能、交互功能、动态显示等。