虚拟手设计与实现述评

时间:2022-05-16 03:46:11

虚拟手设计与实现述评

算法描述

基本概念和定义在进行算法描述之前,对文中提到的基本概念进行如下的定义[10]:定义1位姿:在三维空间中,要确定一个物体的几何状态需要确定相对于各坐标轴的3个位移坐标和3个旋转坐标。在虚拟现实术语中,将一个空间物体的上述6个参数称为该物体的位姿。定义2变换矩阵:所谓变换矩阵就是对坐标系里面的点进行平移旋转之类的变换。算法具体描述本系统所描述的虚拟人手的模型事实上就是网格和骨架两个大的部分组成,网格就相当于真实人手的肌肉和皮肤,而骨架相当人手的骨骼。网格是由顶点和顶点间连线构成的。网格中顶点和骨架结构中对应的骨骼绑定在一起的,通过这种方式,网格附着在骨骼之上。骨架是虚拟人手仿真的基础,整个人手关节的控制都是通过控制骨骼的控制运动来实现的,当骨骼结构中的任意一块骨骼运动的时候,会改变网格的形状,从而实现虚拟人手的运动学仿真。骨骼链中的每一块骨骼的运动都是通过变换矩阵来实现的,本节研究的重点就是手指各骨骼的变换矩阵和顶点坐标变换算法。为方便描述,选取人手的模型的食指进行说明,初始位姿如图4(a)所示。joint0为指掌关节,joint1为中指关节,joint2为远指关节,joint3为食指末端,关节的长度分别用a,b,c表示。以joint0为绝对坐标系原点,建立如图4所示的坐标系。图4(b)为食指绕旋转θ角度后的示意图,首先需要计算出各个关节的局部变换矩阵和全局变换矩阵,所用到的算法就是动画插帧算法。算法结束由动画插帧算法可以知道各关节的相关的变换矩阵,但是到目前为止,我们还不知道人手模型网格和骨骼的具体关系。那么下面的顶点坐标变换算法就是要实现将顶点和骨骼绑定在一起,当骨骼运动的时候,和骨骼绑定在一起的模型网格也跟着骨骼发生形变。传统的网格形变方法是将一个整体的网格划分为几个独立的网格,如果需要控制网格的某部分的时候,只需要通过图形引擎提供的相应的函数来移动或者转动网格即可。对比图5和图6很容易发现,如果将人手模型划分为独立的网格模型,那么在仿真的过程中骨骼连接的地方容易产生裂缝,这种裂缝会严重的影响仿真模型的逼真度。本文采用的顶点坐标变换算法,有效地弥补了这种缺陷。网格模型的顶点通过顶点变换算法后,由于每个顶点受到多个骨骼的拉扯影响,因此不会出现裂缝的现象,而是比较平滑。

实验结果和分析

系统是基于VC++6.0实现的,三维人手模型的建立是用milkshape3D建模软件来完成的,这一步的工作量比较大。完成主要工作有:人手mesh网格模型的绘制,人手骨骼的绘制以及和mesh顶点的绑定,顶点权重的赋值,最后需要给模型蒙皮,就是给mesh网格上蒙上一层皮肤,可以很大程度上提升模型的逼真度。OpenGL图形库的移植,将OpenGL移植到开发环境中,在程序中创建着色描述表和进行OpenGL初始化。对OpenGL其它一些重要项的初始化包括:启动平滑着色模式,屏幕背景颜色,缓存深度设置,启动深度测试,视角计算,光源设置等。算法的具体实现已经在上文中做了详细的说明,图7为实验的结果。虚拟人手上面已经蒙上了真实人手的图片,增加了虚拟人手的逼真度。通过键盘相应按键的控制,可以设置各关节的旋转角度,从而实现人手的实时控制,从三维模型构建和仿真的效果来看,在关节转动的过程中,仿真人手并没有出现关节处的裂缝,较好的验证了动画插帧算法和顶点变换算法的可行性。

结束语

虚拟现实是计算机图形学的一个重要的方向,其核心就是三维模型的重建。传统的建模软件可以进行快速的三维建模,但是用户的实时交互一直是三维建模软件最大的缺陷。本文提出的动画插帧算法和顶点变换算法,既汲取了三维建模软件快速建模的优点,同时能够实现与模型之间的实时交互,较好的实现了虚拟人手实时交互,但是系统目前也存在着不完善的地方,虚拟人手手型的控制方面存在着不是很灵活的问题,下一步的工作是通过单个摄像头跟踪手型,实现真实人手型的跟踪,而不是通过键盘来控制虚拟人手。

作者:张晓龙 陶海峰 单位:武汉科技大学

上一篇:计算机虚拟化在无线电中的适用性 下一篇:政治家社会时空观的实践释解