|
<br/> 1.构建VRML文件的几种方法 <br/> 构建VRML文件一般有三种方法: <br/> 使用文本编辑器直接进行VRML文件的书写。这样做的不足之处是只能创建比较简单的物体和场景。创建复杂场景的时候,几乎不可能使用文本编辑器来直接编写。第一是因为场景之间相互关系和位置确定比较复杂,第二是对于复杂物体的建模显得无能为力(精确到小数位两位已经是计算的一个极限了),第三对数学能力要求较高。 <br/> 一般的方法是使用可视化编辑器来建模。使用可视化编辑器避免了直接使用文本建模时的一些问题,例如不能生成复杂场景等。这些工具的一个突出的优点就是使用起来相当方便,它不需要手工地输入大量的命令而只需要轻轻拖动鼠标即可实现大量程序才可能完成的功能。 <br/> 常见的几个可视化编辑器有:Cosmo World 2.0、Paragraph’s Virtual Home Space Builder、Home Space、Caligari’s Pioneer、Virtus WalkThrough Pro和3-D Website Builder等。 <br/> 第三种方法就是使用其它常见的图形格式进行转换。在Web网上,存在着大量的各种各样的三维文件格式,转换工具的作用就是在这些文件格式之间进行转换。需要注意的是,所有的转换程序都有局限性,例如在转换特定文件中的光照和纹理贴图时就会失败。 <br/> InterChange是Syndesis公司(<a href="http://www.threedee.com/" target="_blank">http://www.threedee.<wbr></wbr><wbr></wbr>com</a>)的一项产品,它可以执行大约五十种文件格式之间的转换,VRML就是这五十种文件格式中的一种。 <br/> Extreme 3-D是Macromedia公司(<a href="http://www.macromedia.com/" target="_blank">http://www.macromedi<wbr></wbr><wbr></wbr>a.com</a>)的一项功能非常强大的产品,它对于VRML文件的转换功能在多媒体创作人员当中是深受欢迎的。使用Extreme 3-D,你就可以通过点击鼠标来把二维模型转换成三维模型。 <br/> DoomToVrml2使你可以在网上发布你自己的Doom文件,它使得你可以把Doom层次的多边形和纹理信息转换成为VRML 2.0格式的文件(<a href="http://vrml.sig.com/tools/" target="_blank">http://vrml.sig.com/<wbr></wbr><wbr></wbr>tools/</a> doomtovrml2 /index.html)。 <br/> VRML1to2可以将符合VRML 1.0格式的文件转换成为符合VRML 2.0格式的文件,Sony公司(<a href="http://vrml.sgi.com/cgi-bin/vrmlToVrml2.cgi" target="_blank">http://vrml.sgi.com/<wbr></wbr><wbr></wbr>cgi-bin/vrmlToVrml2.<wbr></wbr><wbr></wbr>cgi</a>)在这个领域开了先河。 <br/> VRML1toVRML2来自SGI公司,它执行的功能和上面的转换器一样。 <br/> 2.浏览VRML的方法及几种常见的VRML插件 <br/> 浏览VRML的一般方法是使用VRML浏览器,也可以在IE等通用浏览器上通过VRML浏览器插件对VRML文件进行浏览。 <br/> 3.VRML中的动画效果 <br/> 要理解VRML中动画的概念,必需首先理解路由和事件。为了使虚拟空间具有动感,构造指令可以包含绑定指令,绑定指令描述如何将节点绑定在一起。VRML绑定包括:绑定在一起的节点和在节点之间绑定的路由或者叫做路径。绑定两个节点之后,第一个节点通过这样的路径传送给第二个节点的信息叫作事件。事件包含一个值。当一个节点接收到一个事件时,它将根据节点的特征开始动画或者其它事情。通过绑定多个节点,用户可以创建许多路由,从而使空间更加具有动感。 <br/> 大多数VRML节点都可以绑定在线路之上,每个节点都有输入、输出插座。一些节点同时具有输入、输出插座,而另外的一些节点仅有其中的一种。节点的输入插座称为eventIn,输出插座称为eventOut。当链接一个路由时,eventIn接受输入,eventOut将事件输出。 <br/> 节点的每个输入输出路由也有类型,例如一个SFFloat类型的eventOut,当它绑定一个路由时,输出浮点数。SFFloat类型的eventIn,能够接收浮点值。创建路由之后,线路路由将处于睡眠状态,直到有一个事件从发送节点发送到接收节点。接收节点接收事件之后将作出反应,反应类型依赖于: <br/> ·接收事件节点的类型 <br/> ·路由所绑定的节点输入插座 <br/> ·事件所包含的数值 <br/> ·当 前节点的活动状态 <br/> VRML中的动画产生是由于变动了任何一个坐标系的位置、方向和形体比例,从而使物体按你所想的方式飞行、平移、旋转或按比例缩放。 <br/> TimeSensor节点的作用象一个时钟,它可以被用来执行开始,停止或者其他控制动画的动作。随着时间的流逝,这个传感器就会产生事件来表示时间的变化。通过将这些事件人TimeSensor节点的eventOut路由到其他节点,当TimeSensor节点的时钟计时时,你可以使这些节点发生相应的变化。如果要使一个坐标系平移、旋转和按比例缩放的话,你可以将TimeSensor节点事件路由至PositionInerpolator和OrientationInterpolator节点。这些节点中的每一个产生新的位置和旋转值,并通过他们的eventOut传送这些值。按顺序将这些值路由到Tranform节点,就可以使节点的坐标系随动画过程的发展而发生平移、旋转和按比例缩放。 <br/> 4.VRML中的自身交互可以做到什么程度 <br/> 如果要使你的空间具有交互性,你可以给一个造型附带一个传感器,该传感器使用一个定点设备来感知观察者的动作。当观察者点击到一个附带有传感器的造型时,传感器就输出一个事件,这个事件就被路由到其它的节点来开始一个动画。 <br/> TouchSensor是一种用来检测观察者的接触和将事件输出的传感器。这些输出描述了在何时、何地,观察者接触到了可感知的造型。CylinderSensor、PlaneSensor和SphereSensor节点也可用来检测何时观察者接触到一个可感知的造型,并且提供了用来改变造型位置和方向的输出。 <br/> 在VRML中,你可以将一个传感器附在一个造型上,用它来检测观察者的移动、点击和拖动。当观察者与一个可感知的造型相互作用时,你就可以把传感器的输出连入一个线路中,从而引起造型的移动和动画的播放。 <br/> 感知观察者接近常使用三种方法:感知观察者的可视性、感知观察者的接近性和通过碰撞检测。 <br/> 可见传感器从观察者的位置和方向来感知在空间中的一个长方体区域是否可视。你可以通过这些传感器来启动和停止动画或者控制其他的动作,这些动作仅当一个可感知的区域可见时是必要的。通过给出中心和尺寸,你可以指定一个由VisibilitySensor节点感测的空间区域。 <br/> 碰撞检测是检测空间中观察者与造型接近和碰撞的时间。碰撞节点在检测观察者的碰撞时做两件事: <br/> 通过CollideTime eventOut事件输出当前的绝对时间。 <br/> 提示浏览器。 <br/> 以上就是VRML场景中的几种交互,使用这些交互我们可以做到类似电灯开启,自动滑动门等效果。但是更为复杂的交互使用它本身所提供的传感器就显得无能为力了,这就需要利用Script和Proto节点等对其进行功能上的扩展,最好是利用Java技术完成这些扩展工作,因为Sun公司对VRML技术也非常看好。<br/> |
|