一种基于骨骼的任意拓扑结构虚拟角色的驱动方法技术

技术编号:2947494 阅读:258 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于骨骼的任意拓扑结构虚拟角色的驱动方法,包括:1)将虚拟角色相关信息分为三类;2)定义虚拟角色相关信息的磁盘存储格式;3)根据实际需求,确定具体的虚拟角色;4)装载骨骼系统;5)装载皮肤纹理信息,装载时,根据皮肤纹理中各个模块的名称建立到骨骼系统中骨骼的映射关系;6)装载运动数据,判断运动数据中自由度的维数与骨骼系统中的维数是否相同;7)从运动数据中提取某一时刻的姿态;8)正向运动学计算,计算每个骨骼局部坐标系相对于全局坐标系下的变换矩阵;9)利用步骤8)得到的骨骼局部坐标系相对于全局坐标系下的变换矩阵,重新计算皮肤顶点坐标;10)渲染。

【技术实现步骤摘要】

本专利技术涉及一种虚拟角色的驱动方法,特别地,涉及。
技术介绍
虚拟角色动画的生成是一个热点问题,它广泛应用于虚拟现实和游戏等领域中。三维虚拟角色动画的生成方法通常有两种一种是顶点动画,一种是骨骼动画。顶点动画方法直接在虚拟角色模型的基础上做变形,即直接改变虚拟角色皮肤顶点在每一帧中的位置来达到动画的效果。这种方法直观简单,但如果要对物体进行某种整体变形或者模型中需移动的顶点非常多时,该方法就显得相当费时和繁琐。与顶点动画相比,近年来,骨骼动画更为流行,骨骼动画又称为关节动画。这种动画生成方法分别定义了骨架和皮肤,骨架由一系列骨骼按照特定的拓扑关系联结而成,而包裹这些骨骼的“皮肤”则是一个顶点网,每个顶点的位置受到一个或多个骨骼运动的影响而变化。因此,骨骼动画生成方法首先通过驱动骨架而运动,被定义为皮肤的顶点的运动则以数学公式的方式生成,最后通过逐帧渲染形成动画。为了下面说明的方便,首先对骨骼系统进行描述。骨骼系统的拓扑结构可以看成是由一系列链杆通过关节顺次相连的开式运动链,在骨骼系统中,定义了虚拟角色的骨骼数目、每个骨骼的长度、骨骼与骨骼之间的相互关系等。结合图1,对骨骼系统的基本组成进行说明。在一个虚拟角色的骨骼系统中,对骨骼系统做如下定义。1)在每一个骨骼上定义一个与之固连的坐标系Fi,该坐标系称为该骨骼的局部坐标系。两个骨骼连接时自动形成关节,骨骼间的连接关系不能构成环。2)存在且仅存在一个关节称为根节点1,对于和关节2相连的两个骨骼3和4,离根节点近的骨骼3称为关节2的父骨骼,另一个骨骼4称为关节2的子骨骼。对于和骨骼5相连的两个关节6和7,离根节点近的关节6称为骨骼5的父关节,离根节点远的关节7称为骨骼5的子关节。在骨骼5的局部坐标系下,子关节7到父关节6的平移记为{Xi,Yi,Zi}。3)任何一个关节(骨骼)最多有一个父关节(父骨骼),任何一个关节(骨骼)可以有多个或没有子关节(子骨骼)。4)根节点除了定义其相对于世界坐标系的旋转外,还定义了其相对于世界坐标系的平移。由于关节是两个骨骼连接时自动形成的,因此,只要保存了骨骼的信息和骨骼间的连接关系,就蕴含了对关节的定义。在实际应用中,为了表示上的统一,需要定义一个虚骨骼,称为“根骨骼”。这个骨骼没有长度,可视为一个点,其功能和意义与根节点相同。在利用基于骨骼的动画生成方法,实现虚拟人动画生成时,人们通常定义一个标准的虚拟人骨架模板,虚拟人骨架模板是一个固定的虚拟人骨骼系统。在现有技术中,虚拟角色的骨骼系统是固定的,即一个虚拟角色在不同的应用场合有固定的骨骼系统,利用固定的骨骼系统实现动画生成的方式虽然简化了虚拟角色的驱动过程,但却有很大的局限性。首先,在不同的情况下,对虚拟人骨骼系统的要求可能是不同的。以虚拟人手掌部位的骨骼为例,从较远的地方观察虚拟人手掌时,只需要用一根骨骼便可代替整个手掌;而如果需要表现“拿取”东西这一动作时,则需要19根骨骼。因此,对一个虚拟角色,如果只用一个固定的骨骼系统并不能满足所有情况。其次,在固定模版方法中,由于骨骼系统中各个骨骼间的拓扑关系是固定的,因此固定模板法也不能驱动其它类型的虚拟角色,如动物等。另外,在固定模板方法中,一个虚拟角色通常保存了自己的骨骼系统和皮肤信息,这样每个角色可有独立的模型。然而,在大规模虚拟环境中,如部队的演练,骨骼系统或皮肤纹理信息通常是相同的,这样就会导致信息的冗余,消耗大量的内存空间。最后,虚拟角色在磁盘中的存储缺乏统一、完善的格式。当前的一些存储格式不能满足对任意拓扑结构的骨骼系统、多虚拟角色共存的存储要求。
技术实现思路
本专利技术的目的是提供,实现对虚拟角色的驱动。为了实现上述目的,本专利技术提供了,包括1)获取虚拟角色的相关信息,所述的虚拟角色的相关信息分为骨骼系统信息、皮肤纹理信息和运动数据;2)定义虚拟角色相关信息的磁盘存储格式,磁盘文件对相同的骨骼系统、皮肤纹理信息、运动数据只保存一次,骨骼系统、皮肤纹理信息和运动数据适用于任意拓扑结构的虚拟角色以及任意数目的虚拟角色;3)根据实际需求,确定具体的虚拟角色;4)根据角色,装载相应的骨骼系统;5)根据角色,装载皮肤纹理信息,装载时,根据皮肤纹理中各个模块的名称建立到骨骼系统中骨骼的映射关系;6)装载运动数据,在运动数据装载前,判断运动数据中自由度的维数与骨骼系统中的维数是否相同,如果不同则运动数据无法驱动骨骼系统,需要重新选定运动数据进行装载或退出虚拟角色驱动的过程;7)从运动数据中提取某一时刻的姿态,若在运动数据中无法找到指定时刻的姿态,则通过对相邻时刻的姿态做插值得到指定时刻的姿态;8)正向运动学计算,计算每个骨骼局部坐标系相对于全局坐标系下的变换矩阵;9)利用步骤8)得到的骨骼局部坐标系相对于全局坐标系下的变换矩阵,重新计算皮肤顶点坐标;10)渲染,根据步骤9)得到的重新计算的皮肤顶点坐标和三角面片列表绘制虚拟角色。上述技术方案中,在所述的步骤2)中,一个磁盘存储文件由文件头、骨骼系统、皮肤纹理信息单元、虚拟角色信息单元组成;在一个骨骼系统中,骨骼系统由骨骼系统名称和骨骼列表组成,在骨骼列表中包含有骨骼系统的各个骨骼的信息,一个骨骼需要保存的信息有骨骼名称、骨骼索引号、父关节的索引号、静态变换矩阵、骨骼质量、质心坐标及关节活动范围;一个皮肤纹理信息单元由顶点列表、三角面片列表、纹理坐标列表、法向量列表、部位信息列表组成,其中的部位信息列表中有多个部位信息单元,一个部位信息单元包括名称、顶点索引列表、影响权重列表;一个虚拟角色单元由虚拟角色基本信息、骨骼系统索引、皮肤纹理索引和运动数据组成;运动数据中的每一帧姿态由该帧的时刻、根节点的位移以及各个骨骼局部坐标系相对于其父骨骼局部坐标系的旋转组成。上述技术方案中,所述的虚拟角色的骨骼系统、皮肤纹理信息和运动数据在内存组织上采用共用的方式,一种骨骼系统或皮肤纹理信息可以为不同的虚拟角色所用,而一个虚拟角色在不同的场合也可以采用不同的骨骼系统或皮肤纹理信息。上述技术方案中,在所述的步骤4)中,装载骨骼系统的具体实现包括4-1、所装载的骨骼系统的拓扑结构是一个多叉树,对多叉树做深度优先遍历,重新排列骨骼间的顺序;4-2、计算初始姿态下骨骼局部坐标系相对于全局坐标系的变换矩阵。上述技术方案中,在所述的步骤8)中,正向运动学计算包括8-1、将某一时刻的姿态下各个骨骼局部坐标系相对于父骨骼局部坐标系的旋转转换为变换矩阵;8-2、根据步骤8-1所得到的变换矩阵和磁盘存储文件中所包含的静态变换矩阵,计算骨骼局部坐标系相对于全局坐标系下的变换矩阵。上述技术方案中,在所述的步骤9)中,所述的皮肤顶点坐标的计算公式为p′=TjW·(TjW0)-1·p,]]>其中,p为骨骼皮肤上的一个顶点的坐标,p′为皮肤顶点在骨骼运动情况下的新坐标,0TjW为步骤4-2所得到的初始姿态下骨骼局部坐标系相对于全局坐标系的变换矩阵,TjW为步骤8-2所得到的骨骼局部坐标系相对于全局坐标系下的变换矩阵。在步骤4-1中,所述的骨骼顺序为根骨骼排在最前面,任意一个骨骼都排在其所有的子骨骼之前。本专利技术的优点在于1、本专利技术方法对虚本文档来自技高网
...

【技术保护点】
一种基于骨骼的任意拓扑结构虚拟角色的驱动方法,包括:1)获取虚拟角色的相关信息,所述的虚拟角色的相关信息分为骨骼系统信息、皮肤纹理信息和运动数据;2)定义虚拟角色相关信息的磁盘存储格式,磁盘文件对相同的骨骼系统、皮肤纹理信息 、运动数据只保存一次,骨骼系统、皮肤纹理信息和运动数据适用于任意拓扑结构的虚拟角色以及任意数目的虚拟角色;3)根据实际需求,确定具体的虚拟角色;4)根据角色,装载相应的骨骼系统;5)根据角色,装载皮肤纹理信息,装载时 ,根据皮肤纹理中各个模块的名称建立到骨骼系统中骨骼的映射关系;6)装载运动数据,在运动数据装载前,判断运动数据中自由度的维数与骨骼系统中的维数是否相同,如果不同则运动数据无法驱动骨骼系统,需要重新选定运动数据进行装载或退出虚拟角色驱 动的过程;7)从运动数据中提取某一时刻的姿态,若在运动数据中无法找到指定时刻的姿态,则通过对相邻时刻的姿态做插值得到指定时刻的姿态;8)正向运动学计算,计算每个骨骼局部坐标系相对于全局坐标系下的变换矩阵;9)利用步骤 8)得到的骨骼局部坐标系相对于全局坐标系下的变换矩阵,重新计算皮肤顶点坐标;10)渲染,根据步骤9)得到的重新计算的皮肤顶点坐标和三角面片列表绘制虚拟角色,所述的三角面片列表包含在步骤5)所装载的皮肤纹理信息中。...

【技术特征摘要】

【专利技术属性】
技术研发人员:王兆其李淳芃朱登明夏时洪
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利