VRML虚拟汽车造型交互技术

时间:2022-06-25 07:19:35

VRML虚拟汽车造型交互技术

摘 要:以VRML为构建工具,以Solidworks建立车体模型,以JavaScript为VRML内部脚本和外部脚本接口编辑工具,通过VRML与HTML的整合集成,实现了虚拟汽车造型交互系统,具有选择车体外形、颜色、视角转换等功能。直接地展现了汽车造型,方便用户对汽车造型根据需要进行更改,取得了良好的效果。

关键词:虚拟汽车造型 虚拟现实模型语言 脚本接口

中图分类号:TP391.9

文献标识码:A

文章编号:1007-3973(2012)007-104-02

1 引言

制作传统的汽车外形模型,需要先进行汽车模型的的毛坯生产,还要给模型上色,通过样车模型整车比例、外观效果的检测、评审,决定其是否投入生产。然而,虚拟现实技术的产生,大大改善了上述过程带来的弊端。通过虚拟现实技术创建汽车模型,可以设计多种方案来供使用者选择,并可随使用者的喜好不断的改善,既省钱又省力,还缩短了整个过程的周期。本文使用VRML建模,实现人机交互,方便用户的操作。

2 系统创建采用的工具语言

2.1 VRML

虚拟现实造型语言VRML(Virtual Reality Modeling Language)是与互联网联合,面向web的三维模型语言,被因特网上三维互动网站广泛应用的语言,可用于三维交互。在网页中实现三维对象的交互功能和三维动画效果是VRML的主要目的。VRML具有创建三维场景和造型的功能,编程设计能力很强大,且文件的容量很小,具有想象性、交互性、低带宽网络传输等优点,具有交互性和导航功能的三维虚拟场景,可实现用户参与的虚拟设计。

2.2 脚本语言

脚本语言JavaScript是一种不需要编译,直接使用的解释性语言。VRML文件中采用JavaScript实现三维交互及 VRML与网页之间的交互。

3 虚拟汽车模型的创建与交互性的实现

3.1 虚拟汽车模型的创建

建模方法有两种:

(1)直接使用VRML编程实现。VRML是一种描述性的文本语言。VRML中创建三维结构是通过其内部的节点、场景、事件来形成的。由于一些VRML中一些节点和事件都具有交互功能,允许用户采用不同的方式、在不同的场景中实现交互功能。

(2)很多复杂的三维模型可在三维建模软件中创建生成。很多三维建模软件已相当成熟,在VRML中需要复杂编程的模型只需在三维建模软件中通过拉伸、扫描、阵列等功能轻松完成,更有一些复杂功能,如渲染、曲面创建等在VRML中很难实现的功能也可以在三维建模软件中通过相关操作来实现。此类三维建模软件有Pro/E、UG、Solidworks等。最后,将模型导入VRML文件。

基于上述两种建模方法,考虑到汽车建模复杂度较大,结合上面两种方法来完成汽车模型的整体建模。汽车建模过程按以下方法实现:

(1)汽车车体模型。根据汽车外形及内部结构,在Pro/E中通过拉伸、旋转、曲面特征等功能生成汽车模型,并添加材质等增强模型的真实感。这些模型包括车体外壳、车灯、车牌、挡风玻璃、车毂及轮胎等。

(2)模型组合及场景设置。通过内联节点Inline组合为汽车的整体模型,由于在Pro/E中生成的汽车模型导入VRML后文件所占内存过大,且存在很多无定义的节点,需对VRML文件进行优化、整理,删除多余节点。使用DEF/USE节点调用相同的素材,减少代码的重复编写,使代码更加简洁、阅读性更强。

3.2 汽车模型三维交互功能的实现

3.2.1 VRML与 HTML网页的交互与控制

待整体的汽车模型创建结束后,将VRML文件嵌入到HTML文件中,以OBJECT标记形式嵌入到网页中,并将文件传到网络服务器中,使使用者可以在客户端浏览。使用者可以通过VRML浏览器,在客户端浏览VRML的动态汽车造型。

3.2.2 交互性实现

(1)交互行为通过事件体系实现。

VRML中,使静态的模型实现动态仿真的步骤一般为:对于要实现交互的造型节点,需用DEF节点对其定义;使用传感节点触发并输出事件,实现人机交互;利用插补器设计关键帧;路由创建来实现交互。

VRML文件中, 插补器、传感器节点配合脚本节点Script,可以实现用户与汽车虚拟模型的三维动态交互。

通过插补器及传感器结点完成感知和反应的交互功能。通过使用HUD节点来制作控制面板,方便客户根据需求点击控制板选择相应的特征来改变汽车车体及车灯颜色、车毂类型、汽车轮胎花纹和车窗玻璃升降等功能。控制面板的制作使用了HUD节点,并使用TouchSensor触摸传感器、ProximitySensor接近传感器结合javaScript脚本文件,来达到当点击控制面板上相应按钮时,汽车做出相应的变化,即实现人机交互的目的。

其中,部分HUD节点程序如下:

PROTO HUD [ exposedField SFVec3f position 0 0 -25

field MFNode HudObjects [ ]

field SFVec3f proximitySize 10000 10000 10000 ]

{ Group { children[

DEF proximity ProximitySensor {

center 0 0 0

size IS proximitySize }

Collision { children DEF HUDshapes Transform {

children Transform { children IS HudObjects

translation IS position }

translation 0 0 0

上一篇:校企合作模式下高职学生思想教育工作的探索 下一篇:基于TRIZ理论的下水道弯头创新设计