vrml实例

励志句子
评论 2024-04-18 07:23:14 浏览
一、能够实现门的旋转的VRml代码,求高手。请看补充。

1、是这个吗?#VRMLV0utf8DEFrdoorTransform{center10children(Shape{tappearanceAppearance{tttextureImageTexture{ttturl#exposedFieldMFStringttt(tttt"door.jpg"ttt)}ttttextureTransformTextureTransform{ttttcenter00#exposedFieldSFVec2fttttrotation0#exposedFieldSFFloatttttscale11#exposedFieldSFVec2ftttttranslation00#exposedFieldSFVec2fttt}}geometryIndexedFaceSet{ttcoordCoordinate{tttpoint#exposedFieldMFVec3fttt(500,000,050,50,tttt50-0.05,000.05,005,05,ttt)tt}ttttcoordIndex#fieldMFInt32tt(3,2,1,0,-1,4,5,6,7,-1)tttexCoordTextureCoordinate{tttpointttt(00,10,11,01,tttt00,10,11,01ttt)tt}}t}DEFropenOrientationInterpolator{tkey(0,1)tkeyValue(0100,010-57)}DEFrcloseOrientationInterpolator{tkey(0,1)tkeyValue(010-57,0100)})}DEFinProximitySensor{tcenter000tsize555}DEFoutProximitySensor{tcenter000tsize444}DEFclock1TimeSensor{tcycleInterval2}DEFclock2TimeSensor{tcycleInterval4}ROUTEin.enterTimeTOclockset_startTimeROUTEout.exitTimeTOclockset_startTimeROUTEclockfraction_changedTOtropen.set_fractionROUTEropen.value_changedTOrdoor.set_rotationROUTEclockfraction_changedTOrclose.set_fractionROUTErclose.value_changedTOrdoor.set_rotationROUTEclockstartTimeTOfdopen.set_startTimeROUTEclockstartTimeTOfdclose.set_startTime。

二、"VRML"物体旋转实例解析

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

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

3、再次,我们打开VRML编辑器,进行脚本程序的编写。整体的运动事件由两个事件组成,分别是物体1的旋转,和物体2的上下运动。所以这里需要进行两个脚本程序的编写。分别定义这两个程序为s1和s脚本程序中,有事件输出“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],分别定义了旋转中心轴和旋转角度。。

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

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

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

7、这里定义了两个事件控制器节点,分别定义在物体和插值器上。时间路由为文件开始传递到插值器传递到物体,同时物体时间节点传递脚本时间出入传递脚本时间输出传递插值器时间节点。其中,例子中物体定义为“transform”、插值器定义为“orientation”、时间节点分别定为“ACCSensor”、“sensor”。ROUTEsensor.fraction_changedTOorientation.set_fractionROUTEorientation.value_changed    TOtransform.rotationROUTEACCSensor.cycleTimeTOaccelerator.c1ROUTEaccelerator.c2TOsensor.cycleInterval。

三、VRML语言中实体能不能沿任意轴旋转?

1、以螺丝和螺母为例,来讲解VRML中如何实现物体旋转。

2、如图所示,图中标示出两个物体,分别是物体1——螺母、物体2——螺丝。

3、例子中的效果是,螺母逆时针旋转使螺丝向上运动,螺母顺时针旋转使螺丝向下运动。

4、在所有的VRML设计中,都涉及到一个“事件”名词。

5、例子中涉及到两个事件,物体1的旋转以及物体2的上下运动。

6、实现这两个事件,我们应用VRML中的节点定义、脚本编程、事件路由的设定来实现。

四、急求VRML语言实现三维坐标系绕任意轴旋转

1、#VRMLV0utf8DEFsSphereSensor{}DEFtTransform{tchildren(ttShape{tttappearanceAppearance{materialMaterial{diffuseColor111}}tttgeometryBox{size111}tt}t)}ROUTEs.rotation_changedTOtt.rotation。

五、vrml 里如何获取正在运动物体的位置?比如物体在平移或绕一个轴旋转。

1、#VRMLV0utf8DEFsSphereSensor{}DEFtTransform{tchildren(ttShape{tttappearanceAppearance{materialMaterial{diffuseColor111}}tttgeometryBox{size111}tt}t)}ROUTEs.rotation_changedTOtt.rotation。

六、vrml 里如何获取正在运动物体的位置?比如物体在平移或绕一个轴旋转。

1、#VRMLV0utf8DEFsSphereSensor{}DEFtTransform{tchildren(ttShape{tttappearanceAppearance{materialMaterial{diffuseColor111}}tttgeometryBox{size111}tt}t)}ROUTEs.rotation_changedTOtt.rotation。