X3D和Java的虚拟现实人体运动仿真研究
作者:青岛科技大学 王展旭 杨眉
摘要:人体运动仿真是虚拟现实领域新的研究热点,本文对X3D的相关知识进行了介绍,研究利用Java平台和X3D技术实现人体运动的仿真。
1、引言
由于计算机技术的不断发展和Internet的普及,虚拟现实技术发展成为数字化多维信息空间技术的支撑平台,并成为构建数字虚拟环境的关键技术之一。由Web3D联盟提出的X3D(Extensible 3D),整和了Java3D、流媒体、XML等先进技术,成为了最新的网络三维图形的标准。
2 、X3D的人性化节点
同时在过去几十年里,随着对3D图形研究的不断升温,已经出现了创作三维人体的软件,在这个时期出现了许多制作“真实”人体运动的软件。但是出现了一个问题阻碍了这个领域的发展,即不同制作公司的软件在这个领域的信息交换问题,缺少国际标准。国际标准规则H-Anim的出现解决了这个关键性的问题,它是一个抽象的三维人体模型表示,描述了一个人体模型的标准,在这个标准下,可以行进不同软件间的交互。 H-Anim的设计目标有三个:兼容性、适应性和简单性。
X3D人性化节点设计,即X3D人性化动画组件设计,是H-Anim的组件。其中HanimHumanoid节点作为整个人性化对象的容器,用来存储所涉及的Joint, Segment, Site and Displacer等节点,它们按照树状结构对人体进行组合, Humanoid节点是整个角色构成的根节点。如图1所示。
HanimHumanoid节点的定义和存储[1]:
interface Humanoid {
float[3] bboxCenter 0 0 0
float[3] bboxSize -1 -1 -1
float[3] center 0 0 0
sequence<string> info []
sequence<Object> joints []
string name ""
float[4] rotation 0 0 1 0
float[3] scale 1 1 1
float[4] scaleOrientation 0 0 1 0
sequence<Object> segments []
sequence<Object> sites []
sequence<Object> skeleton []
sequence<Object> skin []
sequence<float[3]> skinCoord []
sequence<float[3]> skinNormal []
float[3]