可变形三维模型设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华中科技大学
硕士学位论文
可变形三维模型设计与实现
姓名:魏藤
申请学位级别:硕士
专业:软件工程
指导教师:高建生
2010-05
摘要
计算机动画是计算机图形学和应用数学以及美术相结合的产物,是伴随着计算机硬件和图形算法高速发展起来的一门高新技术,它综合利用了计算机图形学、艺术、应用数学、物理学以及其它相关学科的知识,在计算机上显示逼真的虚拟画面。

在计算机图形学中,人体动画是具有挑战性的课题之一。

它具有广泛的应用范围,在影视创作、网络游戏、广告设计、虚拟现实等诸多领域有着重要的用途。

人体仿真可使人类在很多状态下预先知道过程中的细节,进而可以制造出机器人做出人类的“不可能完成之任务” 。

而且人体运动也是很复杂的,这方面需要做的工作很多。

可变形三维模型的仿真是基于当前医学影像以及康复机器人的现实需求下,在计算机上实现对人体肢体的运动控制仿真以及肌肉皮肤变形仿真。

该研究的重点是在计算机上实现可变形三维模型的仿真。

研究分析肢体运动控制技术,提出了基于几何的人体动画控制方法。

基于OpenGL技术利用VC++ 6.0开发工具进行开发,首先建立了人体手指几何模型,该模型包括手指的关节与三段手指部分,它们分别由点的绘制构成。

然后推导了用于手指运动控制的重要参数的计算公式。

在模型的架构中,通过参数的选取,实现对实时动画的控制。

关键词:计算机图形学运动控制自由度可变形
Abstract
The computer aid animation is a high and new technique;it is the thing that combines the art and the computer graphics together. Accompanying with the high speed development of computer hardware and graphic arithmetic it synthesize the computer seienee、art、mathematies、physics with the knowledge of the other and related course,the computer aid animation make abundance sequence virtual real images on the screen.
In computer graphics,human body animation is one of the challenging courses.It have a extensive and applied future,and plays an important role in the films、computer game、the animation design of advertisements,virtual reality etc.The human body imitates make it possibility and can really make mankind to know the details in the process in advance.This helps to make the robots that do”impossible mission that completed”of human.And the human body sport also is very complex course,there are a lot of things need to be done.
Deformable three-dimensional model simulation is based on the current medical imaging,and rehabilitation needs of the robot under realistic.Control of human body movement and muscle skin deformation simulation.The study focused on computer simulation of deformable 3D models.
Research and analyze human body animation technique,bring up the method of humanbody animation based on geometry.Based on OpenGL and using the developmental tool Visual C++ 6.0,this paper makes the right human finger model.This model includes three sections of the finger joints and finger;Finger to be drawed by points.Then deduced the calculation formula of the important factors,which used for control the actions of the finger.With the model’s structure,using the important factors,the paper realizes to control the real-time animation.
Key words:Computer aid graphics Motion control Freedom Deformable
1 绪论
1.1 课题研究背景
社会已经进入数字化时代,这个时代的特征是“世界图形、图像时代”,它的主要认知方式是视觉形象方式,这是一种全球化的联络模式,语言的阻隔被打破,文字的垄断被消解。

传统文学借助文本对人世的间接性和想象性体会,感悟转变为借助图形、图像对现实的记录、展示和消费。

虚拟空间介入了现实空间,成为对现实的阐发、复制和扭曲,它改变了文化活动的样式。

传统的文化活动主要借助于语言、文字和表演,图形、图像的应用表现在社会生活和生产的各个领域和各个层面上。

计算机图形学就是研究用一种最直接的形式来表示和表现这个充满信息的世界。

计算机图形学是计算机科学的一个分支,但是它的吸引力是其他相关专门领域所望尘莫及的[1]。

数字化虚拟人体就是应用数字图像、图形以及现代计算机技术,采用人体解剖学和现代影像学方法,获取人体的结构的数据信息,在计算机上建立的全数字化的人体真是结构的三维模型。

1989年美国提出了“可视人体计划”,并于1991年8月开始数据采集和三维重构。

此计划的实施在全世界引起极大反响。

随后韩国、日本、德国、澳大利亚也纷纷启动此项计划。

我国于2001年11月5日~7日,在北京香山召开了主题为“中国数字化虚拟人体的科技问题”的第174次香山科学会议,宣布了中国数字化可视人体研究的开始。

科学技术的新发明令我们对于自然界的认知不断深化、不断提高,犹如显微镜帮助了人类去观察微小物体的结构,望远镜把人类的视力延伸到太空深处一样,计算机图形仿真使我们能够在电子计算机上模拟虚拟的现实世界,并进一步研究它的规律。

它如同一个窗口,程序设计人员通过它描述各种物体的外在表现。

这些物体可以是客观存在的真实物体,具有规律,但另一些或许都是虚构的,只按照程序员在程序中为它们设定的规律动作。

飞行员在训练时,可以在仿真平台上,从计算机的显示屏上看到飞机的仿真情况。

物理学家也可以利用电脑模拟各类
天体现象,在显示屏上观察恒星之间的运动轨迹,或者观察其他星系的运动状况。

具体的显示内容非常丰富,但都有一个共通点:那就是由几何元素所组成的图形的动画都是由计算机绘制和控制的。

因此我们能说,计算机图形学是在计算机的辅助下形成的一种图形科学。

人们首先建立起物体的模型,然后在计算机中绘制这个模型,显示该物体的图像,然后对它们进行操作、修改和完善。

交互式图形控制是这门学科的重要组成部分,我们可以利用人与计算机进行交互作用的设备,例如:鼠标、键盘、控制杆等,随意的控制在显示屏上出现的图形,绘制图形的形态,改变图形的格式、大小以及颜色。

早期的计算机仅仅输出大量的数据作为计算的结果。

很快地,许多计算机开始以阴极射线管作为它们的标准输出设备,数据以更快的速度显示出来,从此实现了计算机运算结果以图形图像来揭示其包含的信息内容。

如今计算机图形学己成为高速发展的领域,并且应用范围相当广泛。

医生可以从显示屏上观察血液在动脉中流动的情况,用计算机模拟其动态变化,从而研究人体血管中产生漩涡的位置,找出疾病的病因。

物理学家可以编出程序,用计算机演示基本粒子与其自身所产生的电场之间的相互作用,大家就能形象地了解微粒子的量子化行为。

数学家也能够用计算机实现抽象的数学函数的显示,把它们描绘在二维、三维或多维空间中。

这类使用者在用计算机显示信息,或从计算机图形中获得信息时,都把图形显示看作是交换信息的有力工具。

1.2 计算机图形学的应用
由于计算机图形系统的硬、软件性能日益提高,而价格却逐渐降低,必然促使计算机图形生成技术的应用日益广泛,并已应用于工业、科技、教育、管理、商业、艺术、娱乐等许多行业。

目前主要应用于以下11个领域。

(1)图形用户界面
软件的用户接口是人们使用计算机的第一观感。

过去传统的软件中约有60%以上的程序是用来处理与用户接口有关的问题和功能的,因为用户接口的好坏直接影响着软件的质量和效率;如今在用户中广泛使用了图形用户界面(GUI),如菜单、
对话框、图标和工具栏等,大大提高了用户接口的直观性和友好性,也提高了相应软件的执行速度[2]。

(2)事务和商务数据的图形展示
应用图形学较多的领域之一是绘制事务和商务数据的各种二、三维图表,如直方图、柱形图、扇形图、折线图、工作进程图、仓库和生产的各种统计管理图表等。

所有这些图表都用简明的方式提供形象化的数据和变化趋势,以增加对复杂对象的了解和对大量分散数据的规律分析,以便作出正确的决策。

(3)地形地貌和自然资源的图形显示
应用计算机图形生成技术产生高精度的地理图形或自然资源的图形是另一个重要的应用领域,包括地理图、地形图、矿藏分布图、海洋地理图、气象气流图、植物分布图以及其他各类等值线、等位面图等。

目前,建立在地理图形基础上的地理信息管理系统(主要包括地理信息和地图)已经在许多国家中得到广泛的应用。

地理信息系统是当前信息社会中政府部门对资源和环境进行科学管理和快速决策时不可缺少的工具,可广泛应用于农林、地质、旅游、交通、测绘、城市规划、土地管理、环境保护、资源开发和灾害监测以及各种与地理空间有关的行业部门。

(4)过程控制及系统环境模拟
用户利用计算机图形学实现与其控制或管理对象间的相互作用。

例如,石油化工、金属冶炼、电网控制的有关人员可以根据设备关键部位的传感器送来的图像和数据,对设备运行过程进行有效监视和控制;机场的飞行控制人员和铁路的调度人员可通过计算机产生的运行状态信息来有效、迅速、准确地调度,调整空中交通和铁路运输。

(5)电子出版及办公自动化
图文并茂的电子排版、制版系统代替了传统的铅字排版,是印刷史上的一次革命。

随着图、声、文结合的多媒体技术的发展,配合迅速发展的计算机网络,可视电话、电视会议、远程诊断以及文字、图表等的编辑和硬复制正在家庭、办公室普及。

伴随计算机和高清晰度电视结合的产品的推出,这种普及率将会越来越高,进而改变传统的办公、家庭生活方式[3]。

(6)计算机动画及广告
由于计算机图形系统的硬件速度提高,软件功能增强,因而利用它来制作计算机动画、广告,甚至电视电影。

其中有的影片还获得了奥斯卡奖。

目前国内外不少单位正在研制人体模拟系统,这使得在不久的将来把历史上早已去世的著名影视明星重新搬上新的影视片成为可能。

为了避免画面闪烁,放映一秒钟的动画就需制作24幅画面,因而制作较长时间的动画,工作量是相当大的。

利用计算机制作动画恰恰可以在两幅关键画面之间自动插入中间画面,从而大大提高了动画制作的效率。

(7)计算机艺术
将计算机图形学与人工智能技术结合起来,可构造出丰富多彩的艺术图像,如各种图案、花纹、工艺外形设计及传统的油画、中国国画和书法等,是近年来计算机图形学的又一个重要应用领域。

利用专家系统中设定的规则,可以构造出形状各异的美术图案。

此外还可以利用计算机图形技术生成盆景和书法等。

(8)科学计算的可视化
随着科学技术的进步,人类面临着越来越多的数据需要进行处理。

这些数据来自高速计算机、人造地球卫星、地震勘探、计算机层析成像和核磁共振等途径。

科学计算可视化就是应用计算机图形生成技术将科学及工程计算的中间结果或最后结果以及测量数据等在计算机屏幕上以图像形式显示出来,使人们能观察到用常规手段难以观察到的自然现象和规律,实现科学计算环境和工具的进一步现代化。

科学计算可视化可广泛应用于计算流体力学、有限元分析、气象科学、天体物理、分子生物学、医学图像处理等领域。

(9)工业模拟
这是一个十分大的应用领域,包含对各种机构的运动模拟和静、动态装配模拟,在产品和工程的设计、数控加工等领域迫切需要。

它要求的技术主要是计算机图形学中的产品造型、干涉检测和三维物体的动态显示。

(10)计算机辅助教学
计算机图形学已广泛应用于计算机辅助教学系统中。

它可以使教学过程形象、直观、生动,极大地提高了学生的学习兴趣和教学效果。

由于个人计算机的普及,
计算机的辅助教学系统将深入到家庭和幼儿教育。

总之,交互式计算机图形学的应用极大地提高了人们理解数据、分析趋势、观察现实或想像形体的能力。

随着个人计算机和工作站的发展,随着各种图形软件的不断推出,计算机图形学的应用前景将是更加引人入胜[4]。

1.3 课题的研究工作
可变形三维建模系统可以实现人体手的骨骼及皮肤动作仿真。

其主要特点如下:
(1)采用先进动画控制方法进行开发。

(2)采用人体真实的手结构作为手掌建模思路参考。

(3)采用SGI为图形工作站开发的一个优秀专业化3D 图形应用程序接口OpenGL结合Visual C++ 6.0进行开发,实现虚拟现实,科学计算可视化等三维仿真处理的应用要求。

本文的章节结构如下:
第一章绪论计算机图形学背景及其应用领域
第二章数学建模相关技术用于设计的图形学应用数学方法
第三章手指建模及其动画分析与设计手指模型建模的过程及变形数学方法的设计
第四章手指建模及其可变形的动画实现如何实现手指部分模型建模、运动控制等。

第五章总结和展望总结全文研究工作。

2 数学建模相关技术
学习制作一个3D动画,需要用到矩阵、向量以及四元素的知识。

这节主要介绍基本的矩阵和向量以及四元素运算,以及矩阵、向量和四元素在动画制作中的应用。

2.1 三维建模中的矩阵应用
2.1.1 理解并运用矩阵
大部分用在计算机图形工程的中的矩阵是方阵。

方阵是一种有相同数量行列的矩阵。

通常3D数学仅仅需要3x3或4x4的矩阵,如图2-1所示。

在图形学中所应用的矩阵基本都是3x3方阵,记住,所有能用3x3的矩阵都能用在4x4矩阵上。

在用OpenGL的过程中,会发现大部分用的都是4x4矩阵,因为4x4矩阵不仅存储旋转值,而且还能存储平移值或是运动值。

2.1.2 旋转矩阵
矩阵在动画编程中最重要的作用就是变换,在动画程序中,变换矩阵通常用来移动物体。

在建立3D模型过程中经常用到的有5个主要的变换矩阵。

它们分别是绕X轴旋转,绕Y轴旋转,绕Z轴旋转,位移和缩放。

无论是绕X,Y还是Z轴,一个旋转矩阵将绕着具体的轴旋转所有被影响的几何体。

位移矩阵用来移动几何体从
一个位置到另一个位置。

缩放矩阵用来改变几何体的大小。

用一个简单的矩阵乘这些变换矩阵可以实现动态变换。

需要特别注意的是矩阵乘法的顺序不同将会计算出不同的结果。

每个旋转矩阵都将使几何体绕着X ,Y ,或Z 轴旋转一个确定的角度。

下图是绕X ,Y ,和Z 轴的旋转矩阵,如图2-2所示。

图2-2 绕
在3D 计算机图像设计中位移矩阵可以向任何一个方向移动一个物体。

每个方向移动的距离用存储在矩阵最后一行的三个值表示。

缩放矩阵也很简单,像位移矩阵一样,有三个值,每个代表一个轴方向的缩放比例。

和位移矩阵(如图2-3左侧)不同的是,它的三个比例值是在对角线位置。

缩放矩阵(如图2-3右侧)看起来像单位矩阵,只是对角线上的值不是1而已。

位移矩阵和缩放矩阵
2.2 三维建模中的向量应用
2.2.1 向量基本概念
向量是一维数组的数字。

在3D 图形设计中,大多数向量有两三个元素,有的甚至多达四个。

它们可以用来代表位置,方向以及物体运动速度,总之应用广泛。

向量既有大小又有方向。

在纸上,我们可以用一个标有箭头的直线表示它,如图2-4。

向量的直线长度就是它的大小,箭头的方向就表示向量的方向。

另外在物理学中,我们可以用向量表示一个物体的速度。

图2-4 矢量示意图
为了方便在OpenGL 中进行3D 图形设计,我们用如下形式表示向量:
< x ,y ,z >
x,y,z 分别代表X,Y ,Z 轴上的距离。

2.2.2 向量的模
任何一个向量都可以通过除以向量自身的模来标准化,转换成一个单位向量。

下面是一个向量的单位化过程:
u = < 3 ,4 > (2.1)
|u| =
54322=+ (2.2) ==u
u v < 0.6 ,0.8 > (2.3) 18.06.022=+=v (2.4)
2.2.3 向量的点乘和叉乘
在计算机3D 图形工程设计中,如果需要计算出一个有重力或其他力作用在物体上的而产生的最终的方向和速度,可以用向量的点乘这个方法。

向量的点乘有两种计算方式:
(1)θcos ∗∗=•v u v u (当知道两个向量的大小和夹角时用)
(2)212121...n n j j i i v u ++=• (当不知道夹角,仅仅知道向量的元素时用) 计算两个已知向量的夹角,如图2-5表示出了两向量间的夹角:
)arccos(v
u v u •=θ (2.5)
图2-5 两个向量间的夹角
D 4.4952172441arccos ≈⎟⎟⎠
⎞⎜⎜⎝⎛××+×=θ (2.6) 在计算机3D 图形设计时,需要计算光的法线,而法线向量必须垂直于几何体的表面的。

这时就可以用到向量叉乘这个方法了,计算两个向量叉乘:
k x y y x j x z z x i y z z y v u )()()(212121212121−+−−−=× (2.7)
其中i,j,k,分别代表X,Y ,Z 轴的单位向量。

值得注意的是这个叉乘公式不能用在二维向量上,而需要用在三维向量上。

如图2-6表示两个向量的叉乘。

图2-6 两个向量叉乘
<1, 5 ,2> × <2 ,1 ,3> =
()()()9,1,13251122311235−=×−×+×−×−×−×k j i (2.8)
2.2.4 用矩阵实现向量变换
在这用矩阵有两个原因,第一,矩阵是一个用来存储变换的好方法;第二,矩阵可以通过乘法来实现向量变换和点的变换。

如图2-7列举一个用矩阵实现向量的乘法计算例子:
图2-7 矩阵乘向量 2.3 四元素及其插值应用
2.3.1 四元素基本概念
四元素是用于表示旋转的一个包含四个数字的集合。

之所以在计算机3D 图形设计中应用主要有以下几个原因:
(1)用四元素不容易导致万向锁,这也是用四元素最重要的原因。

(2)用四元素可以使图形动画更平滑以及圆弧插值。

(3)用四元素比用旋转矩阵节省更多的内存空间。

尽管四元素有如此多的优势,但要注意的是大部分图形应用程序接口(API-Application Programming Interface )不能直接接受四元素。

我们得首先把四元素转换成矩阵,这个过程需要的CPU 周期相当长,所以在要用四元素进行图形设计之前要考虑计算机硬件是否能达到要求。

图2-8 向量旋转
如图2-8右侧,当两个轴转到同一个位置时,将导致万向锁。

当用四元素做旋转时,可以避免任何万向锁的发生。

2.3.2 四元素加减乘除及其模的运算
四元素可以简单的作为四维向量来进行加法,减法和除法。

四元素的加减法以及除法和向量一样。

q =[1 2 3 4] p =[5 6 7 8]
q + p = [6 8 10 12]
2p = [2 4 6 8]
四元素的模的计算和向量的模的计算方式一样,四元素的模等于四元素每个元素的平方之和再开根号的值。

四元素不能成为代表旋转,除非它是个单位四元素。

单位四元素和单位向量一样。

一个四元素有且只有一个模。

四元素单位化就是通过四元素除以四元素的模得到的。

这样的话,也就是说,除非四元素有一个模值,否则在进行插值计算会发现出错[5]。

两个四元素相乘和它们的相对旋转矩阵相乘的效果一样,但却可以花费更少的计算时间。

两个旋转四元素相乘会产生旋转级联,或者是串成一个系列。

例如一个旋转矩阵代表一个绕着X轴旋转的矩阵,另一个旋转矩阵代表一个绕Y轴旋转的矩阵,这两个矩阵的乘积的结果将得出一个绕X和Y轴旋转的矩阵。

四元素的乘法公式如下:
p = [m , u] q = [n , v]
qp = [mn – v•u, nu + mv + (v×u)] (2.9)
2.3.3 共轭四元素
共轭四元素被用做一个四元素操作另一个旋转四元素的旋转,或者是用四元素来旋转一个向量。

这将在变换光照法向量或其它操作时起到非常重要的作用,但在位移时不需要用到共轭四元素。

共轭四元素很容易计算,只需要给四元素的所有向量元素取负即可。

因此,如果有一个四元素q = [n , v],当n是一个缩放量,v是一个向量是,q的共轭可以用如
下符号表示:~ q = [n , -v]。

2.3.4 四元素的旋转
我们可以用一个四元素去实现向量或者其它四元素的旋转。

下面是用四元素旋转向量或四元素的公式:
()()q
'= (2.10)
p~
p
q
P可以是一个四元素或者是一个向量。

2.3.5 四元素的转换
由于四元素比较复杂,所以不是总能够对指定的四元素进行直接旋转。

但是,我们可以设置三个欧拉角,或者可以有一个任意旋转轴,特别是需要检索投入用户的时候。

通常人们试着进入一个旋转四元素会比进入一系列欧拉角花更多的时间。

为了变换点,可能需要一个旋转矩阵而不是一个四元素[6]。

四元素中最重要的一个方面是它能够被转换成一个旋转矩阵。

这点非常重要,因为在OpenGL和Direct3D等图形学应用程序接口中不能直接被接受,在这些图形学应用程序接口中都是依靠矩阵来进行变换。

正因为这样,四元素必须经过转换才能被应用,否则你将不能够利用这个信息。

例如要对物体进行两次旋转,第一次是起始矩阵,第二次是终止矩阵。

下面将一个四元素转换成一个矩阵,如图2-9所示:Array
图2-9 四元素转换成矩阵
W代表着缩放值和X,Y以及Z代表着向量元素的三部分。

2.3.6 欧拉角与四元素间的转换
在欧拉角和四元素之间的转换最重要的原因是容易应用。

如果一个模型工程想
要对一个物体进行旋转变换,用设置的三个欧拉角比用一个四元素更容易。

要把一系列的欧拉角转换成四元素,首先需要把每个欧拉角转换成它对应的四元素。

这需要看绕哪个旋转轴旋转再来决定用三个公式中哪一个公式。

下面列出分别绕X ,Y ,Z 旋转的三个公式(如图2-10)。

图2-10 左图表示三个轴方向上的欧拉角,右图表示将三个欧拉角转换成相应的四元素
2.3.7 轴向角与四元素间的转换
把一个旋转角和轴转换成一个四元素。

由于大部分图形程序接口不能直接应用一个四元素直接代表一个旋转,因此,当出现这种情况的时候,四元素必须转换成另外一种形式。

那将可以很简单用一个glRotate 函数实现绕着轴旋转,而不是建立一个旋转矩阵。

由于把一个四元素转换成一个轴向角比把一个四元素转换成一个旋转矩阵更简单,因此,用轴向角将会是一个更好的选择,如图2-11所示。

图2-11 左图表示轴向角旋转,右图表示把轴和角转换成四元素
2.3.8 用四元素实现插值
插值计算中最重要的就是两个端点。

可以在两个端点间进行无数出的插值,从而实现动画的平滑连贯。

用四元素的主要原因就是为了方便的实现插值计算。

计算机图形设计中要用到两个类型的插值分别是线性插值(LERP--Linear Interpolation)和球形插值(SLERP--Spherical Interpolation),如图2-12所示。

图2-12 线性插值和球形插值的示意图
下面列出用两个四元素进行线性插值的计算公式:
LERP(q,p,t) = t(p - q) + q (2.11) 其中,p和q分别代表两个四元素,另外t表示插值比例,它的数值在0~1之间。

在完成操作后,必须确定能够把得出的四元素转换成单位四元素,否则最终结果会出错。

以下是用两个四元素进行球形插值计算公式:
SLERP(q,p,t) =
()
()()
()θ
θ
θ
sin
sin
1
sin t
p
t
q+

(2.12)
其中,p,q表示两个四元素,θt表示插值比例。

值得注意的是球形插值与线性插值有所不同,球形插值得出的结果会是一个弧段。

相关文档
最新文档