"VRML"物体旋转实例解析

VRML,又叫做虚拟现实编程语言,它可以应用在很多地方,但是目前来看,VRML的应用并不广泛。可能是因为虚拟现实产品的更新换代所致,但是这并不影响它依然在一些领域发挥的作用。目前,VRML被国内很多高校用于教学演示和虚拟实验室。

鼠标控制旋转实例解析

  • 01

    以螺丝和螺母为例,来讲解VRML中如何实现物体旋转。 如图所示,图中标示出两个物体,分别是物体1——螺母、物体2——螺丝。 例子中的效果是,螺母逆时针旋转使螺丝向上运动,螺母顺时针旋转使螺丝向下运动。 在所有的VRML设计中,都涉及到一个“事件”名词。例子中涉及到两个事件,物体1的旋转以及物体2的上下运动。实现这两个事件,我们应用VRML中的节点定义、脚本编程、事件路由的设定来实现。

  • 02

    首先,我们需要对这两个物体进行定义。打开VRML编辑器来查看代码。 在代码中,我们分别定义物体1为“zp”、物体2为“lt”。 因为物体1需要使用鼠标选择,所以需要在物体1上定义“CylinderSensor”节点,使得物体1能够绕Y轴进行选择运动。当然“CylinderSensor”节点也需要定义一个“名字”,好方便在接下来的事件路由的设定中。 如果未定义“CylinderSensor”节点,在wrl文件中,当鼠标移动到物体1上时,不会出现“手型”图标。

  • 03

    再次,我们打开VRML编辑器,进行脚本程序的编写。整体的运动事件由两个事件组成,分别是物体1的旋转,和物体2的上下运动。所以这里需要进行两个脚本程序的编写。分别定义这两个程序为s1和s2。 脚本程序中,有事件输出“eventout”和事件输入“eventin”。如图所示,在这两个脚本中,分别的定义了pos和rot这两个变量。pos对应移动的位置,它由三个值组成,pos[0]、pos[1]、pos[2]分别对应X、Y、Z轴。例子中的物体2是只做Y轴运动的,所以只对pos[1]进行计算编写便可以。 rot对应旋转和位置,它由四个值组成,rot[0]、rot[1]、rot[2]、rot[3],分别定义了旋转中心轴和旋转角度。

  • 04

    最后,我们进行事件路由的设定。事件路由,就是按照事件发生的顺序进行设定。开始事件便是鼠标带动物体1进行旋转,触发整体事件的发生,物体2进行Y轴运动,并运动到一定高度时停止物体1的旋转和物体2的Y轴运动。 依据这个顺序,我们了解到,第一事件为鼠标触发的“CylinderSensor”节点传递到s2脚本程序,传递到物体1自身,传递到s1脚本程序,传递到物体2。 下方便是,设定的整个事件的过程。 ROUTE cs1.rotation_changed TO s2.set_rotation ROUTE s2.rot TO zp.set_rotation ROUTE zp.rotation_changed TO s1.set_rotation ROUTE s1.pos TO lt.set_translation 整个事件就完成了,我们来看看运动效果吧!

自动旋转实例解析

  • 01

    在VRML中,有一个叫做插值节点的节点定义。就是说,需要实现设定好物体事件的变量值。 在这里就以旋转为例,需要为物体定义旋转需要的中心轴和角度。这便是由四个数字组成,前三个数字分别代表X、Y、Z轴的值,后一个数字代表旋转角度。 例子中使用的内插器节点为“OrientationInterpolator”节点。

  • 02

    当然,还可以添加一个时间控制器节点,这样便能控制物体自旋转的速度快慢了。时间控制器节点“TimeSensor”,这里还是需要应用脚本程序来完成设定。 这里定义一个名为“accelerator”的脚本,脚本的输入输出时间均为时间变量。所以只需对时间进行简单的计算就可以实现旋转速度的控制。

  • 03

    这里定义了两个事件控制器节点,分别定义在物体和插值器上。时间路由为文件开始传递到插值器传递到物体,同时物体时间节点传递脚本时间出入传递脚本时间输出传递插值器时间节点。 其中,例子中物体定义为“transform”、插值器定义为“orientation”、时间节点分别定为“ACCSensor”、“sensor”。 ROUTE sensor.fraction_changed TO orientation.set_fraction ROUTE orientation.value_changed        TO transform.rotation ROUTE ACCSensor.cycleTime TO accelerator.c1 ROUTE accelerator.c2 TO sensor.cycleInterval

(0)

相关推荐

  • 静态路由设置实例解析(图文)

    静态路由设置实例解析 随着宽带接入的普及,很多家庭和小企业都组建了局域网来共享宽带接入。而且随着局域网规模的扩大,很多地方都涉及到2台或以上路由器的应用。当一个局域网内存在2台以上的路由器时,由于其下 ...

  • 3dsmax中关于物体旋转锁定旋转等技巧

    3dsmax中关于物体旋转锁定旋转等技巧 操作方法 01 新建一个茶壶,然后点击红框中的旋转工具按钮. 02 在工具栏空白处点击右键,将axis constraints 轴向约束点上对号,调出轴向约束 ...

  • Adobe Flash如何使物体旋转

    Flash中如何使物体旋转?下面,我们一起来看下操作方法. 操作方法 01 鼠标移到菜单栏,点击"插入":弹出的菜单中再点:新建元件 02 弹出创建元件对话框,点击确定. 03 进 ...

  • Windows 7 虚拟磁盘(VHD)应用实例解析

    大家对VHD的认识应该主要来源于微软虚拟机VPC,这是VPC所支持的文件格式。在Windows 7中微软将其作为系统的内置文件即虚拟磁盘文件,并且对其提供了很好的支持。在Windows 7中,用户不仅 ...

  • 实例解析 校园综合布线常见故障排查及解决方法

    校园网为高校数字化校园创造了一个良好的支撑环境,在行政管理、科学研究、人才培养、学科建设和师生员工的课余生活等方面产生了深远的影响.随着校园网的不断建设以及高校扩招,网络用户日益增长,网络故障所带来的 ...

  • unity3d围绕物体旋转,围绕某个点旋转

    unity3d做游戏的时候需要让一个或者多个物体围绕物体或者某些点旋转,这种情况我们可以使用RotateAround函数,然后设置围绕的物体或者点等就可以得到我们需要的围绕旋转效果. 围绕某个点旋转 ...

  • 实例解析4种形成构图线的方法

    一.用阴影形成构图线的方法 1.构图线的位置可以随意改动 在将阴影活用于三分线的构图中,最具代表性的例子是拍摄"山的顶端"的照片. 本案例为拍摄者拍摄的日出场景,案例中并未表现冉冉 ...

  • Oracle并行操作之并行查询实例解析

    操作方法 01 Oracle数据库的并行操作特性,其本质上就是强行榨取除数据库服务器空闲资源(主要是CPU资源),对一些高负荷大数据量数据进行分治处理.并行操作是一种非确定性的优化策略,在选择的时候需 ...

  • 实例解析硬盘更换电路板过程

    写在前面: 如果您使用PC-3000等专业工具修复过硬盘,一定对它们强大的功能有深刻的理解。但是,再好的软件也是针对软故障而设计的,所谓“巧妇难为无米之炊”,如果是驱动芯片或者线路板存在硬件问题的话, ...