VRML---第五章(动画流程和交互功能)
来源:互联网 发布:11.3非农数据预测 编辑:程序博客网 时间:2024/06/01 08:15
事件和路由的互访
VRML动画流程
VRML中的动画由许多发送事件经过一系列的阶段组成,这些阶段主要有:触发阶段、逻辑处理阶段、计时阶段、引擎和目标阶段。
触发阶段
逻辑处理阶段
记时阶段
引擎和目标阶段
动画实现
时间传感器
TimeSensor{
exposedField SFBool enabled TRUE
exposedField SFTime cycleInterval 1.0
exposedField SFTime startTime 0
exposedField SFTime stopTime 0
exposedField SFBool loop FALSE
eventOut SFBool isActive
eventOut SFTime time
eventOut SFTime cycleTime
eventOut SFFloat fraction_changed
}
enable用于设定时间传感器的使用状态。TRUE(打开)或FALSE(关闭)。
cycleInterval域的域值用于设定一个时间长度,从0.0到1.0时刻之间的周期间隔,单位为秒。该域值必须大于0.0,其默认值为
1.0秒。
loop域的域值用于设定时间传感器是否循环输出。如果该域值为TRUE,则从0.0到1.0这段时间间隔内输出浮点时刻,而在时间
间隔的结尾,返回到0.0,开始新的循环。如果该域值为FALSE,时间传感器不循环。
插补器节点
颜色插补器节点
ColorInterpolator{
exposedField MFFloat key [ ]
exposedField MFColor keyValue [ ]
eventIn SFFloat set_fraction
eventOut SFColor value_changed
}
#VRML V2.0 utf8Group{children [Shape {appearance Appearance {material DEF Bmeterial Material{diffuseColor 1.0 0.0 0.0}}geometry Cylinder {}}DEF Clock TimeSensor {cycleInterval 3.0loop TRUE}DEF Bcolorpath ColorInterpolator {key [0.0 0.33 0.67 1]keyValue [1 0 0,0 1 0,0 0 1,1 0 0]}]}ROUTE Clock.fraction_changed TO Bcolorpath.set_fractionROUTE Bcolorpath.value_changed TO Bmeterial.set_diffuseColor
坐标插补器节点
CoordinateInerpoator{
exposedField MFFloat key [ ]
exposedField MFVec3f keyValue [ ]
eventIn SFFloat set_fraction
eventOut MFVec3f value_changed
}
keyValue域的域值提供了一张关键三维坐标的列表。每一个坐标都包含三个浮点数值,分别为此向量的X、Y、Z分量。KeyValue
域可提供两个或更多的关键坐标点,如果有N个时刻值和每个时刻值对应的M个关键坐标点,那么该域就包含了N×M个坐标
点。其默认值为一张空列表。
#VRML V2.0 utf8Background {skyColor[ 0.9 0.9 0.9 ]}Shape { #四棱锥体造型geometry IndexedFaceSet{coord DEF slz Coordinate { #定义四棱锥体坐标节点point [0 3 0,3 0 0,0 -3 0,-3 0 0,0 0 3]}coordIndex [0,3,4,-13,2,4,-12,1,4,-11,0,4,-10,1,2,3]colorPerVertex FALSEcolor Color{color [1 0 0,0 1 0,1 1 0,0 0 1,1 1 1]}}}DEF clock TimeSensor { #定义时间传感器节点cycleInterval 8loop TRUE}DEF path CoordinateInterpolator{ #定义坐标插补器节点key [ #时间关键点0 0.25 0.5 0.75 1]keyValue [ #坐标关键值0 3 0,3 0 0,0 -3 0,-3 0 0,0 0 30 0 0,3 0 0,0 -3 0,-3 0 0,0 0 30 3 0,3 0 0,0 0 0,-3 0 0,0 0 30 3 0,3 0 0,0 -3 0,0 0 0,0 0 30 3 0,0 0 0,0 -3 0,-3 0 0,0 0 3]}ROUTE clock.fraction_changed TO path.set_fractionROUTE path.value_changed TO slz.point
位置插补器节点
PositionInterpolator{
exposedField MFFloat key [ ]
exposedField MFVec3f keyValue [ ]
eventIn SFFloat set_fraction
eventOut SFVec3f value_changed
}
#VRML V2.0 utf8Group{children[DEF Bsphere Transform{children[Shape{appearance Appearance{material Material{diffuseColor 0.2 0.9 0.2}}geometry Sphere{radius 1.0}}]}DEF Clock TimeSensor {cycleInterval 5loop TRUE}DEF BspherePath PositionInterpolator {key[0.0 0.2 0.4 0.6 0.8 1.0]keyValue [0 0 -10,5 0 -10,5 5 -10,-5 -5 -10,-5 0 -10,0 0 -10]}]}ROUTE Clock.fraction_changed TO BspherePath.set_fractionROUTE BspherePath.value_changed TO Bsphere.set_translation
朝向插补器节点
OrientationInterpolator{
exposedField MFFloat key [ ]
exposedField MFVec3f keyValue [ ]
eventIn SFFloat set_fraction
eventOut MFVec3f value_changed
}
#VRML V2.0 utf8DEF bar1 Transform { #定义第一根棒坐标变换节点children [Shape{appearance Appearance {material DEF cbar1 Material {diffuseColor 0.5 0.5 0.7ambientIntensity 0.4specularColor 0.8 0.8 0.9shininess 0.2}}geometry DEF C1 Cylinder {height 5radius 0.2}}]}DEF bar2 Transform { #定义第二根棒坐标变换节点children [Shape {appearance Appearance {material DEF cbar2 Material {diffuseColor 0.8 0.8 0.9ambientIntensity 0.4specularColor 0.8 0.8 0.9shininess 0.2}}geometry USE C1}]}DEF clock TimeSensor { #定义时间传感器节点cycleInterval 9loop TRUE}DEF path1 OrientationInterpolator { #定义第一根棒的朝向插补器key [0 0.5 1] #时间关键点keyValue [ #朝向关键值0 0 1 0,0 0 1 3.141,0 0 1 6.281]}DEF path2 OrientationInterpolator { #定义第二根棒的朝向插补器key[0 0.5 1] #时间关键点keyValue [ #朝向关键值0 0 1 1.571, 0 0 1 4.712,0 0 1 7.851]}DEF cpath1 ColorInterpolator { #定义第一根棒的颜色插补器key[0 0.5 1] #时间关键点keyValue [ #颜色关键值1 0 0, 0 1 0, 0 0 1]}DEF cpath2 ColorInterpolator { #定义第二根棒的颜色插补器key[0 0.5 1] #时间关键点keyValue [ #颜色关键值0.8 0.6 0.2, 0.6 0.4 0.9, 0.1 0.8 0.4]}ROUTE clock.fraction_changed TO path1.set_fractionROUTE clock.fraction_changed TO path2.set_fractionROUTE clock.fraction_changed TO cpath1.set_fractionROUTE clock.fraction_changed TO cpath2.set_fractionROUTE path1.value_changed TO bar1.rotationROUTE path2.value_changed TO bar2.rotationROUTE cpath1.value_changed TO cbar1.diffuseColorROUTE cpath2.value_changed TO cbar2.diffuseColor
标量插补器节点
ScalarInterpolator{
exposedField MFFloat key [ ]
exposedField MFFloat keyValue [ ]
eventIn SFFloat set_fraction
eventOut SFFloat value_changed
}
#VRML V2.0 utf8Group{children[Shape{appearance Appearance{material DEF Bboxmeterial Material {diffuseColor 0 0 1}}geometry Box {size 2 2 2}}Shape{appearance Appearance{material Material{diffuseColor 1 1 0}}geometry Sphere{radius 0.5}}DEFClock TimeSensor {cycleInterval 10loop TRUE},DEF Btrancpath ScalarInterpolator {key[ 0,0.5,1 ]keyValue[ 0,1,0 ]}]}ROUTE Clock.fraction_changed TO Btrancpath.set_fractionROUTE Btrancpath.value_changed TO Bboxmeterial.set_transparency
法向量插补器节点
NormalInterpolator{
exposedField MFFloat key [ ]
exposedField MFVec3f keyValue [ ]
eventIn SFFloat set_fraction
eventOut MFVec3f value_changed
}
#VRML V2.0 utf8Group{children[Shape{appearance Appearance {material Material {diffuseColor 1 1 0}}geometry IndexedFaceSet{coord Coordinate {point[-2 -2 0,2 -2 0,2 2 0,-2 2 0]}coordIndex[ 0,1,2,3 ]normal DEF Bnormal Normal {vector[1 0 0,0 0 1,0 0 1,0 0 1]}normalIndex [ 0,1,2,3 ]}}DEF Clock TimeSensor{cycleInterval 1loop TRUE}DEFBpath NormalInterpolator {key[0,0.4,0.8,1]keyValue [1 0 0,0 0 1,0 0 1,0 0 10 0 1,1 0 0,0 0 1,0 0 10 0 0,0 0 1,0 0 1,1 0 01 0 0,0 0 1,0 0 1,0 0 1]}]}ROUTE Clock.fraction_changed TO Bpath.set_fractionROUTE Bpath.value_changed TO Bnormal.set_vector
触动传感器
PlaneSensor平面传感器
CylinderSensor圆柱体传感器
SphereSensor球体传感器
ProximitySensor接近传感器
VisibilitySensor可视传感器
Collision碰撞传感器
触摸传感器节点
TouchSensor{
exposedField SFBool enabled TRUE
eventOut SFBool isOver
eventOut SFVec3f hitPoint_changed
eventOut SFVec3f hitNormal_changed
eventOut SFVec3f hitTexCoord_changed
eventOut SFBool isActive
eventOut SFTime touchTime
}
#VRML V2.0 utf8Background {skyColor [0.8 0.8 0.8]}DEF TRANS Transform{children[Shape{appearance Appearance{material Material{diffuseColor 1 0 0}}geometry Sphere {}}DEF Tou TouchSensor{} ]}DEF TS TimeSensor{cycleInterval 5}DEF PI PositionInterpolator{key[0 0.5 1]keyValue[0 0 0,0 3 0, 0 0 0]}ROUTE Tou.touchTime TO TS.startTimeROUTE TS.fraction_changed TO PI.set_fractionROUTE PI.value_changed TO TRANS.translation
平面传感器节点
PlaneSensor{
exposedField SFBool enabled TRUE
exposedField SFVec3f offset 0 0 0
exposedField SFBool autoOffset TRUE
exposedField SFVec2f maxPosition -1 -1
exposedField SFVec2f minPosition 0 0
eventOut SFBool isActive
eventOut SFVect3 trackPoint_changed
eventOut SFVect3 translation_changed
}
#VRML V2.0 utf8DEF box Transform {children [Shape {appearance Appearance {material Material {}}geometry Box {}}]}DEF sensor PlaneSensor {offset 2 2 0 #设定造型的初始移动位置maxPosition 4 3 #设定造型的最大移动位置}ROUTE sensor.translation_changed TO box.translation
圆柱体传感器节点
CylinderSensor{
exposedField SFBool enabled TRUE
exposedField SFFloat offset 0
exposedField SFBool autoOffset TRUE
exposedField SFFloat maxAngle -1
exposedField SFFloat minAngle 0
exposedField SFFloat diskAngle 0.262
eventOut SFBool isActive
eventOut SFVec3f trackPoint_changed
eventOut SFRotation rotation_changed
}
#VRML V2.0 utf8Group {children [DEFBtransbox Transform{rotation 0.0 1.0 0.0 0.785children[ Shape {appearance Appearance {material Material {diffuseColor 1.0 0.0 0.6}}geometry Box {size 2.0 2.0 2.0}}]}DEF Bsensor CylinderSensor {offset 0.785autoOffset TRUEmaxAngle 1.0minAngle 0.0}]}ROUTE Bsensor.rotation_changed TO Btransbox.set_rotation
球体传感器节点
SphereSensor{
exposedField SFBool enabled TRUE
exposedField SFRotation offset 0 1 0 0
exposedField SFBool autoOffset TRUE
eventOut trackPoint_changed
eventOut rotation_changed
}
#VRML V2.0 utf8Group {children [DEFBtransSphere Transform {children[ Shape {appearance Appearance {material Material {diffuseColor 0.0 0.6 0.6}}geometry Cone {bottomRadius 1.0height 5.0}}]}DEFBsensor SphereSensor {}]}ROUTE Bsensor.rotation_changed TO BtransSphere.set_rotation
感知传感器
可视传感器节点
VisibilitySensor{
exposedField SFBool enabled TRUE
exposedField SFVec3f center 0.0 0.0 0.0
exposedField SFVec3f size 0.0 0.0 0.0
eventOut SFBool isActive
eventOut SFTime enterTime
eventOut SFTime exitTime
}
#VRML V2.0 utf8Background {skyColor[ 0 0.6 0.8]}DEF rot Transform {children [Shape {appearance Appearance {material Material {diffuseColor 1 1 1}}geometry Box {size 2 2 2}}]}Transform {translation 0 5 0children [Shape {appearance Appearance {material Material {diffuseColor 1 0 1}}geometry Sphere{radius 0.3}}]}DEF sensor VisibilitySensor {center 0 5 0size 0.6 0.6 0.6}DEF clock TimeSensor{cycleInterval 5}DEF path OrientationInterpolator {key [0 0.5 1]keyValue [1 1 0 0 1 1 0 3.141 1 1 0 6.281]}ROUTE sensor.enterTime TO clock.startTimeROUTE sensor.isActive TO clock.loopROUTE sensor.exitTime TO clock.stopTimeROUTE clock.fraction_changed TO path.set_fractionROUTE path.value_changed TO rot.rotation
接近传感器节点
ProximitySensor{
exposedField SFBool enabled TRUE
exposedField SFVec3f center 0 0 0
exposedField SFVec3f size 0 0 0
eventOut SFBool isActive
eventOut SFVec3f position_changed
eventOut SFRotation orientation_changed
eventOut SFTime enterTime
eventOut SFTime exitTime
}
#VRML V2.0 utf8Background {skyColor [0.6 0.2 1]}Group {children [DEF ball Transform { #设置小球位置和形状translation 0 0 -3children [ Shape {appearance Appearance {material Material {diffuseColor 1 1 0}}geometry Sphere{radius 1}}]}DEFprox ProximitySensor {size 2 2 2}DEF clock TimeSensor{cycleInterval 4}DEF path PositionInterpolator {key[0 0.2 0.4 0.6 0.8 1]keyValue [0 0 0, 0 0 -30,5 0 -10, -5 0 -10, 0 0 -30, 0 0 -10]}]}ROUTE prox.enterTime TOclock.startTimeROUTE clock.fraction_changed TO path.set_fractionROUTE path.value_changed TO ball.translation
碰撞传感器节点
Collision{
exposedfield MFNode children [ ]
exposedfield SFBool collide TRUE
field SFNode proxy NULL
field SFVec3f bboxCenter 0.0 0.0 0.0
field SFVec3f bboxSize -1.0 1.01.0
eventIn MFNode addChildren
eventOut MFNode reomveChildren
eventOut SFTime collideTime
}
#VRML V2.0 utf8Group {children [DEFBcollision Collision {children [DEFLeftDoor Transform {children[ Transform {translation-0.75 0.0 0.0children[ DEF Door Shape{appearance Appearance {material Material {diffuseColor 0.30 0.11 0.00specularColor 0.70 0.33 0.00shininess 0.10ambientIntensity 0.30}}geometry Box {size 1.5 3.0 0.2} }] }]}DEFRightDoor Transform{children[ Transform {translation0.75 0.0 0.0children[ USE Door ]}]}]}DEFClock TimeSensor {cycleInterval 5.0}DEFLeftOpen PositionInterpolator {key[0.0,0.1,0.9,1.0]keyValue [0.0 0.0 -13.0,1.3 0.0 -13.0,-1.3 0.0 -13.0,0.0 0.0 -13.0]}DEFRightOpen PositionInterpolator {key[0.0,0.1,0.9,1.0]keyValue [0.0 0.0 -13.0,1.3 0.0 -13.0,1.3 0.0 -13.0,0.0 0.0 -13.0]}]}ROUTE Bcollision.collideTime TOClock.set_startTimeROUTE Clock.fraction_changed TOLeftOpen.set_fractionROUTE Clock.fraction_changed TORightOpen.set_fractionROUTE LeftOpen.value_changed TOLeftDoor.set_translationROUTE RightOpen.value_changed TO RightDoor.set_translation
- VRML---第五章(动画流程和交互功能)
- VRML与Javascript和VBscript交互的实例
- 什么是 VRML 和 X3D
- vrml 读取和写入
- Essential Silverlight翻译连载---第五章 交互和事件处理
- VRML---第三章第三部分(原型定义和调用)
- vrml
- JQuery 第五章 事件和动画 上机+课后
- 《构建之法》第五章 团队和流程
- 【Processing入门】第五章:动画
- 第五章 流程控制语句
- svg基础 6 动画和交互性
- 酷炫的交互动画和视觉效果
- VRML与JAVA在网络课件交互运用
- VRML与JAVA在网络课件中交互运用分析
- 交互动画
- Memcache和mysql交互流程操作原理
- Unity和android的交互流程
- 如何使用Oracle的Decode函数进行多值判断
- Global Cache Miss
- java 学习路线
- java在acm中大数运算教程
- Java RandomAccessFile的使用
- VRML---第五章(动画流程和交互功能)
- Nginx: error while loading shared libraries: libpcre.so.1
- 优秀的课外读物和推荐电影-来自于蔡朝阳的《以自由看待教育》
- 虚拟索引virtua indexing
- c++小点回忆
- Servlet3.1规范翻译——概览 (转)
- Java学习笔记 - java多线程
- Percona-Toolkit命令集合工具,Mysql不可或缺的必备利器之一
- 求实数绝对值 gcc