虚拟模型 - 图文

更新时间:2024-07-03 17:28:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

研究内容

交互模型的建立

虚拟模型是虚拟现实技术在摄像机设备中的应用体现,是实际摄像机设备使用过程在虚拟环境下的实现,是一种人机交互过程的仿真。随着计算机软硬件及虚拟人技术的发展,虚拟人在虚拟模型中的地位也越来越重要。如何逼真、方便地模拟人体动作,成为虚拟模型的一项关键性技术。模型任务的分解是实现模型活动仿真的基础,应将模型作业分解到能够支持模拟的程度才能实现模型仿真。

虚拟角色是指在虚拟场景中能进行自我动作的虚拟人、虚拟动物和虚拟昆虫等. 它已被广泛应用于制造、娱乐、军事、航天和公共安全等领域.对虚拟角色的研究包括骨骼建模、皮肤变形、面部表情、服装变化、运动捕捉、运动编辑等方面。其中骨骼建模和运动编辑的研究是使虚拟角色能动起来的基本前提,它对一些特定的应用起到十分重要的作用. 如在虚拟跳水运动仿真中,用户关心的是虚拟跳水运动员的动作和姿态;在虚拟维修仿真中,用户关心的是虚拟工程师手上的操作动作;在虚拟刑事现场仿真中,用户关心的是犯罪分子或被害人的运动过程和动作。 技术难点

国内外有许多团队从事虚拟角色运动编辑及控制技术研究的工作. 如美国宾夕法尼亚大学人体建模与仿真中心Badler领导的团队研究包括参数化的关键帧技术在基于关节的虚拟人建模系统中的应用、虚拟人运动控制及动作捕捉研究等。洛桑的Thalmann带领的VRLab主要研究人体建模及变形、人体行走、抓取动作和运动控制系统。中科院的王兆其等采用基于自动化骨架匹配和可视化骨架编辑方法完成虚拟人骨架建模,并将其研究成果应用于手语交互,取得了较好的效果。浙江大学的庄越挺等采用视频和运动图像序列方法

得到二维运动骨架序列,虚拟交互动作仿真是对真实交互活动的再现,应将人体运动、交互工具和交互对象三者结合起来,对整个交互过程进行分解,并将每个过程的虚拟人运动进行分类,建立层次化的虚拟人动作。以此为基础实现人体动画。

上述研究对虚拟人的建模大多采用运动学和动力学的方法,必须事先建立骨骼模型,然后根据动力学方程控制运动;如果动力学方程过多,则求解困难,运动的实时性难以保证下文提出了一种通用的虚拟角色骨骼建模方法,该方法通过对已有的虚拟角色表面模型进行识别,自动建立虚拟角色骨骼模型;并在此基础上,利用参数关键帧技术实现虚拟角色的过程动画,最后应用fltk和OpenGL库实现了虚拟角色在虚拟场景中的实时运动控制和路径点规划控制2种方式。

我们可以将整个交互任务分解为:

(1)人体移动过程虚拟人从当前位置变换到交互位置的过程; (2)姿态调整过程虚拟人调整姿态到能够进行交互的过程: (3)交互作业过程虚拟人与虚拟场景之间的交互 技术路线 1虚拟角色建模

从一些专业软件如3DS Max,MAYA或者Poser可直接导出虚拟角色表面模型(3DS文件格式),这些角色模型依据各自特征采用层次化结构设计为块状,如图所示直接应用虚拟角色表面模型无法控制虚拟角色的运动,必须建立虚拟角色骨骼模型才能控制虚拟角色的运动。

虚拟角色分块模型

1.1块的边界抽取及中心点计算

由于虚拟角色表面模型文件中的几何形状信息只有面阵列集 F{F1,F2,….,Fn}和顶点阵列集V{V1,V2,……,Vn};顶点阵列集中的每个单元由该顶点的x,y,z空间坐标构成;面阵列集中的每个单元 Fi={ n1,n2,n3 },代表每个面是由一个三角形构成,其中 n1,n2,n3为顶点阵列集中顶点序号。块的边界指的是边界的线仅被一个三角形所用,因此,块的边界抽取采用改进的面与面求交遍历算法实现。算法包括如下个步骤:

(1) 定义一个线阵列E,每个单元有3个变量:A,B,N。A,B代表线段的2个端点;表示这

条线被共用的次数。

(2) 选取一个面,抽取一条线,查询线阵列E,如果此线未出现在线阵列中,则把此线加

到线阵列中;如果此线已出现在该线阵列中,则该线阵列的变量为N+1。 (3) 抽取选中面的其余2条线,按照(2)中的方法标记该线段。 (4) 遍历其他面中的线,标记相应线段。

按照上述算法可找到块的边界线,即线阵列E中变量N=1的线。边界中心点的计算是通过对边界线的点求其平均值确定。 1.2 骨骼模型建立

把计算得到的边界中心点作为块的关节点,连接每个块的关节点就构成了该块的骨骼这样如果块的关节点数为2,则其骨骼由这个关节点直接相连构成,但如果块的关节点数为1或n时,块的骨骼构建需采用如下方法:

(1) 如果块的关节点数为1,则其骨骼由块的中心点与关节点相连构成;

(2) 如果块的关节点数为n(n>2),则每块可生成n块骨骼(由块中心点分别与块的每

个关节点构成。

由于块为层次结构,因此必须确定最顶块最顶块的运动包括x,y,z三个方向的平移运动和绕x,y,z三个轴的旋转运动;其余块的运动仅有绕x,y,z三个轴的旋转运动;每个块的运动影响到自己的所有子块,而子块的运动对父块无影响最顶块的旋转与平移会使整个模型进行旋转与平移因此,最顶块一般取模型的中心位置对于虚拟人或虚拟狗来说,一般定义胸部为最顶快。

确定好每个块的骨骼后,就可建立虚拟角色骨骼模型算法是以最顶块骨骼为父节点,搜

寻其所有子块的骨骼,再分别以这些子块的骨骼为父块,搜寻下一批子块,不断重复,直到块的关节点数为子块判断的法则是个块的边界中心点间的距离最短因为,父子层次的块,边界几乎贴在一起,因此边界中心点的距离也较小由上述方法建立的虚拟小狗和虚拟人的骨骼模型如图所示:

基于边界中心点连接的虚拟角色骨骼模型

1.3虚拟角色建模

以人体为例,人最常见的运动分为行走、跑步和跳跃3种方式,下面以人体行走为例进行分析。

走路模型

研究人走路的过程可以发现,人的走路分为3个阶段:起步阶段(从静止立正状态到跨开一步)、行走阶段(左右脚交互行走)和收步阶段(从行走状态恢复到静止立正状态)因此,动作编辑时,只要编辑种人体姿态,就能完成人体走路姿态的表先,如图所示

人体行走阶段图

1.4运动约束关系

基于关节的虚拟角色骨骼模型在运动时存在关节活动范围的极限值,即R(x,y,z)min≤

R(x,y,z)α≤R(x,y,z)max,式中,R(x,y,z)min和 R(x,y,z)max为关节绕x,y和 z轴允许旋转的最小和最大角度。

根据 GB10000-88 《中国成年人人体尺寸》的数据,成年人肢体各关节活动范围如图所示。

对虚拟角色骨骼模型进行运动编辑时,各关节的运动要符合关节约束关系,否则运动不自然。

成年人肢体部分关节的主要活动

1.5运动控制方式

实时运动控制指通过键盘、鼠标或其他控制输入电路直接控制虚拟场景中的角色进行运动,它主要考虑实时性、角色的位置移动以及角色的方向变化,具体关键点如下:

1) 实时性主要与角色模型的复杂程度以及机器的性能有关,一般为了实现实时性,需

要牺牲模型的精细度如果要在虚拟场景中实现多个角色的实时运动,在硬件条件不变的情况下,角色模型越简单,渲染的速度越快。

2) 角色的位置移动由移动按键控制,需要考虑帧间偏移量因为,利用关键帧动画实现

人体行走时,如果模型的位置不作相应移动,则每次播放完行走动画后,模型又会回到起始点重新再走一遍同时考虑到在虚拟人的行走过程中,如果位置与朝向不匹配,就会出现人的朝向与移动的方向不一致。为此采取计算帧间偏移量D(i)及把帧偏移量按朝向角投影到xoz平面,分别计算出在x轴的偏移量和在z轴的偏移量来解决此问题,如图所示,帧间偏移量的计算式为

式中,T(i)为每帧的位移量;i为帧号,i=0时T(0)=0,T(-1)=0,D(0)=0

3) 4)

位置与朝向匹配方法

角色模型朝向变化与模型最顶块的旋转向量相关,通过改变最顶块绕y轴方向的旋转Ry向量,可以达到改变人行走的方向。 如果一个角色要经历走跑走的运动过程,需涉及走跑和跑走2个运动动作连贯的过程一般解决的方法是等行走动画播放完毕,再循环播放跑步动画。这样的方法会出现2个动作连接之间的不协调较好的解决方法是采用自动插帧技术。当角色正在行走,突然发出指令要让他跑,这时行走动画正渲染到哪一帧是随机的,确定该帧为第1个关键帧;第2个关键帧就是希望平滑过渡的目标姿态。2个关键帧之间可以利用自动插补帧动画实现动作间的平滑过渡第2个关键帧的选择对整个平滑的效果起着至关重要的作用。一般来说,目标帧与起始帧越相似,自动插帧后的平滑效果越好。分析人走路和跑步的动画可以发现,人行走的关键帧与跑步的关键帧较相似,因此只要把跑步相对应关键帧作为目标帧即可。

在现实世界中,每个人的走路姿态都不完全相同,虚拟角色也是如此,但要通过动作编辑器把每个虚拟角色的行走姿态都编辑出来,需要耗费大量的人力和时间,通过调整虚拟角色行走的幅度和频率可以创建出各个不同的行走姿态。频率的调整可以通过改变2个关键帧之间的插补帧数确定插补帧数越多,人行走的频率越慢。同时,人行走的姿态是由每个骨骼相对其局部坐标系的旋转向量决定,幅度调整可以通过在相应骨骼的旋转向量上乘一个权值t得到,例如跑步时手臂不断往复运动,即手臂相对其坐标系旋转向量的大小不断变换,假设标准情况下小臂相对x轴旋转了15°,只要在小臂的旋转向量上乘一个权值2就可以增大其运动幅度至30°,当然运动的幅度不能超过运动约束。如果要减小运动幅度,只要在旋转向量乘上一个权值t(0<t<1)即可。由于虚拟角色的骨骼模型是由不同的块组成,对每个块采用不同的权值才能更好地控制动作,达到个性化行走姿态要求。如果想从2个或者更多的已经制作好的动作中直接派生出新的动作,就需要对每个动作的权值进行重新设置。如跑和走进行混合,新动作就有a%的跑和b%的走,a%+b百分等于100%通过这种方法产生某个骨骼混合后的旋转参数,也得到了多个动作在不同混合程度下的新动作。

5)

创新点

2面向任务分解的交互动作分类

交互任务分解的目的是为了更方便地实现虚拟人交互动作仿真,任务分解层次对动作分层有着指导性的意义。

2.1层次化动作模型的建立

虚拟人动作的分层设计思想是根据交互任务分解后的各个过程,将交互动作进行层次化解,按照动作的复杂性和任务相关语义的抽象程度,可以将每个交互过程的交互活动分为若干层次,由下到上初步分为三层:任务无关的动作元素、与通用语义相关的动作单元、面向任务的作业单元。

定义1动作元素(Motion Element)动作元素简称动素,通常按照人体关节链和运动自由度来进行划分,一般是涉及若干关节的一段连续运动轨迹,带有一定的维修语义,但基本不与任务语义相关。

定义2 动作单元(Action Unit)动作单元简称动作,一般由若干动素根据一定语义规则构成,这些语义属于通用意义上对人体维修活动的描述,与特定任务无关。

定义3 作业单元(Task Uhit) 作业单元简称作业,是在动作元素和动作单元的基础上面向特定领域任务构造的。作业单元用来描述人体模型在一段时间内为达成某一较小的维修目标而完成的各项维修活动的总称,这些维修目标可以通过对具体交互任务进行分解后得到。 下图是交互任务分解后,交互过程动作层次化模型。

图1

2.2动作模型分类与设计 (1)人体移动类动素

人体移动过程中要用到的动素,该类动素的功能是完成虚拟人从一个作

业位置变换到另一个位置。人的移动可以分为位置变换、转向两种。其中位置变换即人移动重心从空间位置A到B的动作。转向指人的重心基本保持不动,只是人体由面向物体A到B的过程。人体移动过程是这两种移动方式交叉运用的过程。 (2)姿态调整类动素

当虚拟人变换到作业位置时,要调整姿态以能够对目标零件进行操作,这期间的所有动素都属于姿态调整类。

(3)交互作业类动素利用工具或徒手完成对外部环境的触摸、移动、使用等操作过程中用到的动素。虚拟人体模型与外部环境作业类动素最为复杂多样,对其进行分析总结后发现可以将其分为:徒手作业、使用外部工具作业。 3 交互动作仿真

仿真流程图如图2所示,虚拟人首先进行位移动,找到要进行操作的物体,然后进行姿态调整、交互作业,将虚拟物体上的触摸点与虚拟人手部上的触摸点点对齐,使虚拟人获

得物体的控制权,虚拟人携带物体移动到合适位置将物体放置到该位置,完成一次移动操作。

由图2可以看出,运用虚拟人技术可以很逼真地刻画出真实的交互作业过程,提高了虚拟交互的交互性和逼真度。另外对计算机硬件的要求不高,可以大大降低虚拟交互训练的成本,有较好的实用价值。

图2

本文来源:https://www.bwwdw.com/article/qik.html

Top