虚拟场景中虚拟化身的应用

时间:2022-10-06 08:01:29

虚拟场景中虚拟化身的应用

针对浏览者在虚拟场景中游览迷失方向,缺少沉浸感的问题。提出一种有效的解决办法,即通过添加虚拟化身使虚拟环境更活泼,更有吸引力。 利用虚拟化身,自动带领浏览者参观虚拟场景,充分了解环境。

虚拟现实技术是20世纪80年代末90年代初崛起的一项实用性很强的技术。它可以真实的模拟出现实世界的事物或环境,用户投入到这种环境中,犹如“身临其境”的感觉。但是,随着虚拟现实的不断深入,仅有景色、障碍物的三维场景已经无法满足人们视觉的需求,需要引入一些生动的人物角色,即虚拟化身,并在虚拟化身身上完成各类交互,来增加浏览者的沉浸感。

1 建立虚拟化身模型

当一个虚拟的三维场景建好后,为了使虚拟场景更活泼更具吸引力,在虚拟场景中设计一个虚拟化身是很有必要的。虚拟化身的设计手先就是建立虚拟化身模型。目前有许多建立虚拟人体模型的方法,根据现有的实验条件和人体骨骼的构造,采用建模的方法建立虚拟化身模型。建模过程如下:

(1)绘出三维人体骨骼层次结构图

(2)通过VRML语言中的坐标变换节点(Transform)、内联结点(Inline)等进行设计生成人体三维骨骼图。

(3)采用Avatar Studio软件生成虚拟化身。通过Export VRML导出,生成wrl文件。使用Avatar Studio软件导出的虚拟替身,生成的avatar.wrl文件存在类型定义不匹配的问题,需要修改类型定义。Avatar Studio生成的avatar.wrl文件的PROTO节点position域的定义为exposedField SFVec3f position 0 0 0与后面要在Script节点调用position域的定义类型不匹配,需要修改为eventIn SFVec3f position。

2 实现人性化的虚拟化身

要想得到逼真的虚拟化身,就需要使虚拟化身具有人性化,实现真实的人体动作。其中最基本的就是行走,即虚拟化身在虚拟场景中如何引导浏览者浏览场景,在遇到障碍物时如何避障。

通过Avatar Studio软件生成的虚拟人能够产生一些简单动作,通过ROUTE节点的enentIn和eventOut域来进行传递,avatar.wrl文件的动作触发代码如下:

动效果,此时需要脚本语言。脚本语言是一种灵活的互动效果实现方式。VRML中常用的脚本语言是ECMAScript(典型的是JavaScript)、VrmlScript和Java。JavaScript和VrmlScript是VR Pad软件自带的两种脚本语言,只适合在简单的场景中使用,对于复杂的场景需要采用Java。这里通过加载path和obstacle文件实现虚拟人的导航路径规划。

目前VRML编程接口有以下四种方式:

1)内嵌在VRML的Script节点中的描述性脚本语言VrmlScript和JavaScript;

2)WWW浏览器+VRML插件方式,通过对VRML EAI外部创作接口进行编程,允许VRML世界与网页其它对象相互沟通;

3)在VRML的Script节点中引用外部Java类,用来实现一些特殊的、VrmlScript语言所不能实现的功能;

4)应用VRML解释器提供的Automation接口进行编程。

设计中主要使用了前三种编程接口,通过触发器ProximitySensor来检测用户在场景中的移动,当有用户进入或退出场景时,该节点产生事件。被感应的区域由size和center设定,它们在局部坐标空间定义一个矩形区域,该区域的各条边平行于各个主坐标轴。当用户进入该区域时,将产生两个事件isActive为真和enterTime为当前时间,当用户离开该区域时,将产生两个事件isActive为假和exitTime为当前时间。当用户在该区域时,位置的改变将会产生position_changed事件,方向的改变将产生orientation_changed事件。ProximitySensor的语法定义如下:

在Java程序中,通过EAI获得该ProximitySensor的position_changed事件出口。通过EAI要求自动捕获事件,即当事件发生时,外部的Java代码自动获得通知,并由参数获得事件数据进行处理。

3 结束语

虚拟现实是一个充满活力,具有巨大应用前景的高新技术领域。虚拟化身是虚拟现实领域一个很具有发展潜力的方向。文中通过在虚拟场景中添加虚拟化身,来增加场景的活力和浏览者的沉浸感。未来虚拟化身将不止应用于虚拟场景中,也将走入现实世界,服务人类,实现工作休息两不误的状态。

(作者单位:河北联合大学迁安学院)

上一篇:周邦彦《过秦楼》的结构艺术 下一篇:互联网金融背景下商业银行如何转型