VRML---第五章(动画流程和交互功能)
事件和路由的互访
VRML动画流程
VRML中的动画由许多发送事件经过一系列的阶段组成,这些阶段主要有:触发阶段、逻辑处理阶段、计时阶段、引擎和目标阶段。
触发阶段
逻辑处理阶段
记时阶段
引擎和目标阶段
动画实现
时间传感器
该节点通常放在最外层组节点的后面,可供任何组节点的子节点使用。但TimeSensor时间传感器节点部是独立于所选用的坐标系之外。
TimeSensor{
exposedFieldSFBoolenabled TRUE
exposedFieldSFTimecycleInterval1.0
exposedFieldSFTimestartTime0
exposedFieldSFTimestopTime0
exposedFieldSFBoolloop FALSE
eventOutSFBoolisActive
eventOutSFTimetime
eventOutSFTimecycleTime
eventOutSFFloatfraction_changed
}
enable用于设定时间传感器的使用状态。TRUE(打开)或FALSE(关闭)。
cycleInterval域的域值用于设定一个时间长度,从0.0到1.0时刻之间的周期间隔,单位为秒。该域值必须大于0.0,其默认值为
1.0秒。
loop域的域值用于设定时间传感器是否循环输出。如果该域值为TRUE,则从0.0到1.0这段时间间隔内输出浮点时刻,而在时间
间隔的结尾,返回到0.0,开始新的循环。如果该域值为FALSE,时间传感器不循环。
插补器节点
颜色插补器节点
ColorInterpolator{
exposedFieldMFFloatkey [ ]
exposedFieldMFColorkeyValue[ ]
eventInSFFloatset_fraction
eventOutSFColorvalue_changed
}
#VRML V2.0 utf8
Group{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_fraction
ROUTE Bcolorpath.value_changed TO Bmeterial.set_diffuseColor
坐标插补器节点
CoordinateInerpoator{
exposedFieldMFFloatkey [ ]
exposedFieldMFVec3fkeyValue[ ]
eventInSFFloatset_fraction
eventOutMFVec3fvalue_changed
}
keyValue域的域值提供了一张关键三维坐标的列表。每一个坐标都包含三个浮点数值,分别为此向量的X、Y、Z分量。KeyValue
域可提供两个或更多的关键坐标点,如果有N个时刻值和每个时刻值对应的M个关键坐标点,那么该域就包含了N×M个坐标
点。其默认值为一张空列表。
#VRML V2.0 utf8
Background {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_fraction
ROUTE path.value_changed TO slz.point
位置插补器节点
PositionInterpolator{
exposedFieldMFFloatkey [ ]
exposedFieldMFVec3fkeyValue[ ]
eventInSFFloatset_fraction
eventOutSFVec3fvalue_changed
}
#VRML V2.0 utf8
Group{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_fraction
ROUTE BspherePath.value_changed TO Bsphere.set_translation
朝向插补器节点
OrientationInterpolator{
exposedFieldMFFloatkey [ ]
exposedFieldMFVec3fkeyValue[ ]
eventInSFFloatset_fraction
eventOutMFVec3fvalue_changed
}
#VRML V2.0 utf8
DEF 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_fraction
ROUTE clock.fraction_changed TO path2.set_fraction
ROUTE clock.fraction_changed TO cpath1.set_fraction
ROUTE clock.fraction_changed TO cpath2.set_fraction
ROUTE path1.value_changed TO bar1.rotation
ROUTE path2.value_changed TO bar2.rotation
ROUTE cpath1.value_changed TO cbar1.diffuseColor
ROUTE cpath2.value_changed TO cbar2.diffuseColor
标量插补器节点
ScalarInterpolator{
exposedFieldMFFloatkey [ ]
exposedFieldMFFloatkeyValue[ ]
eventInSFFloatset_fraction
eventOutSFFloatvalue_changed
}
#VRML V2.0 utf8
Group{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}}DEF Clock TimeSensor {cycleInterval 10loop TRUE},DEF Btrancpath ScalarInterpolator {key[ 0,0.5,1 ]keyValue[ 0,1,0 ]}]
}
ROUTE Clock.fraction_changed TO Btrancpath.set_fraction
ROUTE Btrancpath.value_changed TO Bboxmeterial.set_transparency
法向量插补器节点
NormalInterpolator{
exposedFieldMFFloatkey [ ]
exposedFieldMFVec3fkeyValue[ ]
eventInSFFloatset_fraction
eventOutMFVec3fvalue_changed
}
#VRML V2.0 utf8
Group{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}DEF Bpath 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_fraction
ROUTE Bpath.value_changed TO Bnormal.set_vector
触动传感器
PlaneSensor平面传感器
CylinderSensor圆柱体传感器
SphereSensor球体传感器
ProximitySensor接近传感器
VisibilitySensor可视传感器
Collision碰撞传感器
触摸传感器节点
TouchSensor{
exposedFieldSFBoolenabled TRUE
eventOutSFBoolisOver
eventOutSFVec3fhitPoint_changed
eventOutSFVec3fhitNormal_changed
eventOutSFVec3fhitTexCoord_changed
eventOutSFBoolisActive
eventOutSFTimetouchTime
}
#VRML V2.0 utf8
Background {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.startTime
ROUTE TS.fraction_changed TO PI.set_fraction
ROUTE 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 utf8
DEF 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{
exposedFieldSFBoolenabled TRUE
exposedFieldSFFloatoffset 0
exposedFieldSFBoolautoOffsetTRUE
exposedFieldSFFloatmaxAngle-1
exposedFieldSFFloatminAngle0
exposedFieldSFFloatdiskAngle0.262
eventOutSFBoolisActive
eventOutSFVec3ftrackPoint_changed
eventOutSFRotationrotation_changed
}
#VRML V2.0 utf8
Group {children [DEF Btransbox 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{
exposedFieldSFBoolenabled TRUE
exposedFieldSFRotationoffset 0 1 0 0
exposedFieldSFBoolautoOffsetTRUE
eventOuttrackPoint_changed
eventOutrotation_changed
}
#VRML V2.0 utf8
Group {children [DEF BtransSphere Transform {children[Shape {appearance Appearance {material Material {diffuseColor 0.0 0.6 0.6}}geometry Cone {bottomRadius 1.0height 5.0}}] }DEF Bsensor SphereSensor {}]
}
ROUTE Bsensor.rotation_changed TO BtransSphere.set_rotation
感知传感器
可视传感器节点
VisibilitySensor{
exposedFieldSFBoolenabled TRUE
exposedFieldSFVec3f center 0.0 0.0 0.0
exposedFieldSFVec3f size 0.0 0.0 0.0
eventOutSFBoolisActive
eventOutSFTimeenterTime
eventOutSFTimeexitTime
}
#VRML V2.0 utf8
Background {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 01 1 0 3.1411 1 0 6.281]
}
ROUTE sensor.enterTime TO clock.startTime
ROUTE sensor.isActive TO clock.loop
ROUTE sensor.exitTime TO clock.stopTime
ROUTE clock.fraction_changed TO path.set_fraction
ROUTE path.value_changed TO rot.rotation
接近传感器节点
ProximitySensor{
exposedFieldSFBoolenabled TRUE
exposedFieldSFVec3f center 0 0 0
exposedFieldSFVec3f size 0 0 0
eventOutSFBoolisActive
eventOutSFVec3fposition_changed
eventOutSFRotationorientation_changed
eventOutSFTimeenterTime
eventOutSFTimeexitTime
}
#VRML V2.0 utf8
Background {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}}]}DEF prox 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 TO clock.startTime
ROUTE clock.fraction_changed TO path.set_fraction
ROUTE path.value_changed TO ball.translation
碰撞传感器节点
Collision{
exposedfieldMFNodechildren [ ]
exposedfieldSFBoolcollide TRUE
field SFNodeproxy NULL
field SFVec3f bboxCenter0.0 0.0 0.0
field SFVec3f bboxSize-1.0 1.01.0
eventInMFNodeaddChildren
eventOutMFNodereomveChildren
eventOutSFTimecollideTime
}
#VRML V2.0 utf8
Group {children [DEF Bcollision Collision {children [DEF LeftDoor 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}}] }]}DEF RightDoor Transform {children[ Transform {translation 0.75 0.0 0.0children[ USE Door ]}]}]}DEF Clock TimeSensor {cycleInterval 5.0}DEF LeftOpen 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]}DEF RightOpen 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 TO Clock.set_startTime
ROUTE Clock.fraction_changed TO LeftOpen.set_fraction
ROUTE Clock.fraction_changed TO RightOpen.set_fraction
ROUTE LeftOpen.value_changed TO LeftDoor.set_translation
ROUTE RightOpen.value_changed TO RightDoor.set_translation
VRML---第五章(动画流程和交互功能)相关推荐
- 莫烦Matplotlib可视化第五章动画代码学习
5.1 Animation 动画 import numpy as np import matplotlib.pyplot as plt from matplotlib import animation ...
- spaa的交互式绘图_第五章:SPSS统计绘图功能详解
5.1常用统计图 5.1.1操作界面介绍(条图) 5.1.1.1条图的通用界面 5.1.1.2复式条图与分段条图的界面 5.1.2其他常用统计图 5.1.2.1散点图 5.1.2.2线图 5.1.2. ...
- 《计算机组成原理》复习第五章—中央处理器
第五章 中央处理器 5.1 CPU功能和组成 5.1.1 CPU的基本功能 CPU主要包括了运算器和控制器两大部分,运算器的功能实现第二章已经学过了,这里我们中点讨论一下控制器的内容. 当一条指令进入 ...
- 《GitHub入门与实战》第五章
第五章 详细解说GitHub的功能 注意: 随着版本的更新,github上的界面也随之改变了很多,但是功能还是不变的,只是放在了不同的位置上. GitHub 为实现社会化编程提供了诸多功能. 5. ...
- SRPG游戏开发(九)第五章 颜色映射与职业动画 - 一 颜色映射流程(Flow Chart)
返回目录 第五章 颜色映射与职业动画 这一章我们来完成2D游戏中颜色映射(Palette Swap)调色盘的相关内容,并初步建立一个职业的动画控制器(Animator)与相关动画(Animations ...
- SRPG游戏开发(十)第五章 颜色映射与职业动画 - 二 颜色组(Color Chart)
返回目录 第五章 颜色映射与职业动画 二 颜色组(Color Chart) 颜色组是保存许多颜色的一个容器,可以在Swapper中直接创建List<Color>或Color[] ...
- jQuery系列 第五章 jQuery框架动画特效
第五章 jQuery框架动画特效 5.1 jQuery动画特效说明 jQuery框架中为我们封装了众多的动画和特效方法,只需要调用对应的动画方法传递合适的参数,就能够方便的实现一些炫酷的效果,而且jQ ...
- 54:第五章:开发admin管理服务:7:人脸入库流程;人脸登录流程;浏览器开启视频调试模式(以便能够在本机的不安全域名的情况下,也能去开启摄像头);
说明: (1)本篇博客内容:介绍人脸入库流程,人脸登录流程:人脸入库流程:Chrome开启视频调试模式,以便能够在本机的不安全域名的情况下,也能去开启摄像头: 目录 一:人脸入库流程,人脸登录流程: ...
- 《操作系统真象还原》第十五章 ---- 实现系统交互 操作系统最终章 四十五天的不易与坚持终完结撒花(上)
文章目录 专栏博客链接 相关查阅博客链接 本书中错误勘误 闲聊时刻 实现fork 实现fork的介绍 实现fork的原理 编写完的thread.c(fork_pid) 编写完的thread.h(str ...
最新文章
- SAP MM 不常用事务代码MIDO
- [Node.js]回调函数
- shell中join链接多个域_Linux Shell中使用awk完成两个文件的关联Join
- Apache Flink Meetup 8.7 深圳站,企业实践 + 1.14 版本预热
- OnlineJudge 离线题库采集
- 《Sibelius 脚本程序设计》连载(五) - 1.2 编辑第一个插件
- Visual Studio 20xx试用版升级为正式版(WIN7同样有效)图解、附带序列号
- 收藏 | 使用PyTorch时,最常见的4个错误
- UNIX网络编程——使用线程的TCP回射服务器程序
- java string 精度_Java 中的浮点数取精度方法
- 基于JAVA+SpringBoot+Mybatis+MYSQL的高铁售票系统
- 支付业务与技术架构学习总结(4)——对账相关业务知识及对账系统总结
- 深度学习——最优化的学习笔记
- SPSS简介【SPSS 004期】
- python实现自动化打印
- 来自安徽、关心安徽的朋友一定要看!快报记者3点准时登陆在线聊天 - 评说天下 - 19楼互动生活空间
- shell日志分析脚本
- 【中秋系列】这款秘制Python月饼游戏,拿走不谢~
- 新的用户故事待办列表就是一副地图
- 正睿OIday3总结
热门文章
- vue页面实现拨打电话功能
- 打电话蓝牙耳机什么牌子好?打电话音质清晰的蓝牙耳机
- SLAM算法知识荟萃
- 重仓农业,巨头鏖战社区团购“广积粮”
- 计算机知识点汇总职高,职校学生必备三个必考知识点
- 微信小程序接入客服功能
- 阿里巴巴校园招聘笔试(答案版)
- 痔疮需要用php吗,长了痔疮,一定要做手术根除?辟谣:2种情况才考虑切除
- 处理JDBC requires that the JdbcType must be specified for all nullable parameters.问题
- 【AR技术点】(三)完整的AR效果