IJDMB 国际期刊的数字多媒体广播 1687 - 7586 1687 - 7578 Hindawi 10.1155 / 2017/4815932 4815932 研究文章 研究仿真基于物理引擎的角色动画 1 http://orcid.org/0000 - 0002 - 5046 - 2663 聚成 1 ( 2 http://orcid.org/0000 - 0002 - 8126 - 5806 Jiangang 1 Xiangbo 1 Jenq-Neng 1 计算机科学与信息工程学院 天津科技大学 天津 中国 tust.edu.cn 2 计算机与信息技术学院 北京交通大学 北京 中国 njtu.edu.cn 2017年 12 7 2017年 2017年 28 02 2017年 17 05年 2017年 12 7 2017年 2017年 版权©2017杨余et al。 这是一个开放的文章在知识共享归属许可下发布的,它允许无限制的使用,分布和繁殖在任何媒介,提供最初的工作是正确的引用。

计算机三维角色动画本质上是一个产品,结合计算机图形学和机器人技术,物理,数学,和艺术。它是基于计算机硬件和图形算法和相关科学迅猛发展的新技术。目前,主流角色动画技术是基于人工生产关键技术和捕捉框架基于运动捕捉设备技术。三维角色动画被广泛使用不仅生产电影,动画,和其他商业领域也在虚拟现实、计算机辅助教育、飞行模拟、工程仿真、军事仿真等领域。在本文中,我们试图研究物理学基础角色动画来解决这些问题,例如贫穷的实时交互出现在性格,利用率低,和复杂的生产。本文深入研究了运动学,动力学技术,生产技术基于运动数据。同时,分析了歌唱,物理运算引擎,子弹,和其他各种主流的物理引擎和研究OBB层次包围盒树,AABB层次树,和其他碰撞检测算法。最后,基于ODE实现角色动画,三轮车的运动和碰撞过程的仿真。

1。研究背景和意义

主流动画制作技术是关键帧技术基于人工生产和动作捕捉技术基于捕获设备。关键帧技术基于人工生产原动画组合技术。这取决于关键帧之间的生产和插值关键帧驱动连续动画播放。允许设计者创建动画的技术自己将以最大的自由度,但产品的技术不是很好自然的性能;此外,生产的过程相当复杂( 1]。动作捕捉设备出现以来,它可以用来获取的运动数据作为动画制作的信息来源,以便生产角色动画和现实的效率可以大大提高角色动画的感觉。然而,由于技术需求真正的角色参与获取运动信息的过程中,它的应用范围很有限。当使用这项技术,它是真正的演员不允许一些危险的动作。此外,这种设备的高成本也将限制技术的广泛使用。

在日益增长的工业需求的背景下,增加用户体验的需求,和计算机相关技术的快速发展,上述两种常见的传统动画制作方法正变得越来越不能够满足设计和使用的要求。根本原因是两种技术结合使用离线方式在动画过程中为后期制作和存储,然后使用;因此,动画将负责相应的巨大的数据存储空间考虑其高质量和长期。此外,这种方法的最大的问题是贫穷率的实时和自适应性能,所以动画,花费大量的时间和金钱,可以一次只用于特定的环境。所有这些问题不适合计算机处理的当前快速的上升趋势和用户体验 2]。

这篇文章中,为了处理问题的实时性能差,利用率低,而复杂的过程,现有的角色动画生产过程中,角色动画模拟方法研究基于物理引擎和使用一个例子来实现该方法。

2。相关的基础研究

现在,角色动画一直是计算机图形学研究的焦点和困难。在这项研究中,有各种动画制作方法,可分类如下( 3]:

基于运动学的动画制作方法

基于动态动画制作方法

动画制作方法基于运动数据

简要介绍上述三种角色动画是下一个。

2.1。基于运动学的角色动画生产的原则

在物理力学运动学是一个非常重要的分支。在研究期间,对象抽象为刚体模型和粒子模型( 4]。这些模型被用来研究物体的运动。刚体模型的关键是研究刚体的角速度旋转运动,线速度,等等。粒子模型研究的重点是速度,加速,减速,粒子的运动方程在指定的参考系统。此外,没有必要考虑动力学的影响因素,如质量和力量。

运动学方法分为正运动学和逆运动学。

2.1.1。正运动学方法[< xref ref-type =“bibr”掉= " B5 " > < / xref > 5)

在一个简单的运动系统,通常有两个目的。他们是自由端和固定端。正运动学描述的运动自由端与固定端系统的起点。正运动学方法:第一步是建立对象的层次结构,然后建立层次结构中的每个对象的旋转和位置。

2.1.2。逆运动学方法

另一个基于运动学模拟技术是逆向运动学方法( 5]。正运动学逆运动学是相反的。逆运动学是运动的固定端驶过自由端。

使用以下公式表达逆向运动学的基本原理( 6]: (1) Δ X = J Δ θ

公式( 1)是逆向运动学的基本公式,在其中 Δ X 的位移的关节链, Δ θ 的旋转角的关节链,然后呢 J 雅可比矩阵。由上面的公式中,关节的位移等于一个产品,关节链两端的旋转角度,雅可比矩阵。但是公式( 2)经常用于逆运动学 6]: (2) Δ θ = J + Δ X + α - - - - - - J + J Δ z

的公式, Δ X Δ θ 也同样发现在公式( 1)。 J + 雅可比矩阵的伪逆矩阵在线性代数。 是一个单位矩阵。 α 是优化常数。 Δ z 是能源消耗减少关节的运动。逆运动学计算从整个关节链。与正运动学相比,逆向运动学更适合创建更复杂的运动,更容易使翻转对象的动画。然而,逆向运动学不是普遍的。一些适合正运动学的问题不适合逆运动学。

2.2。基于动力学原理动画制作

物理动力学也是一个非常重要的分支,它研究力和运动之间的关系。动力学研究的基本理论是牛顿的运动定律。动力学研究的对象是一个宏观的对象,远低于光速。这种方法产生的动画有一个强大的物理现实,因为它是基于物理定律。

在角色动画仿真,运动学方法是计算各关节的位置和旋转角度的人物,和关键帧是由两种类型的数据。

模拟的角色动画,动态方法首先给出了对象的物理特性和发挥各种力量,然后使用牛顿运动定律来计算字符的状态。这种方法的本质是用武力来计算物体的加速度。在动力学、力的类型可以分为两种类型:点力和场力 7]。

除了力,碰撞也是一个重要因素影响角色的运动。在现实世界中,当两个物体碰撞,碰撞,但他们不互相渗透。当碰撞发生时,相互作用力会改变原来的状态的两个对象,如位置、轨迹和方向。因此,在模拟的角色动画,如果对象之间的碰撞,将改变原来的运动状态的角色,因为相互作用力。

2.3。角色动画原理生产基于运动数据 2.3.1。动作捕捉

上面提到的动画方法实现通过使用力学,生物力学,和日常生活经验。动作捕捉技术,数据来自真实的演员表演,通过运动捕捉设备获取操作数据。因为处理数据是由人类,动作捕捉技术可以使动画更真实和自然。没有人工的数据捕获和处理。但是,动作捕捉设备非常昂贵和复杂的操作。在数据收集过程中,运动模型的肢体,身体,和头部通常设置传感器,和那些集体数据是一个非常重要的部分在整个运动捕捉技术( 8]。

动态和运动学技术介绍了用于动画运动的物理定律。然而,人类与物理规律运动的复杂性,尤其是人类运动协调机制,使得仿真工作非常困难,从而导致产生动画是不现实的,缺乏丰富的实际人体运动的详细信息。近年来,运动捕捉技术已经进入了视线;它克服了上述两种方法的缺点动画和已成为人类动画最有前途的技术之一。

2.3.2。运动混合

运动混合技术是基于特殊的运动数据库技术和算法。使用这种技术来处理动画,我们通常需要使用插值算法和插值参数。

运动混合技术的主要优势是其较低的计算复杂度。基于运动捕捉数据,保持原来的动态运动。它的主要缺点是,例如,紧张,担心,和其他行为过于依赖现有的操作数据,数据量的增长。如果一个角色走路的步态,不是太累了或者累了,必须有一个正常的行走步态数据也很累走数据。在插值过程中,生产者通常处理集合之间的过渡和转换持久和线性参数的默认视图( 9]。

2.3.3。运动变形

运动变形的技术修改和使用现有的运动信息。Popoivc和Witkin使用交互式方法转移和规模选择的关键帧来修改现有的数据。与时域的轨迹相比,威廉姆斯和Bruderlin用于调整,修改和重用现有的动画数据在频域。与移动的动画技术和过程动画技术相比,运动混合技术的优点是,它可以使用现有的真正获取相关的数据以便进行动画的一代。此外,这种技术给出了动画创作者和关键帧动画兼容处理工具,将会非常方便。

与运动学动画技术和过程动画技术相比,运动混合技术的优点,属于过程动画技术,它可以利用现有的真实捕捉数据来生成动画( 10]。此外,这项技术与关键帧动画技术兼容。

3所示。研究相关的物理引擎

一般来说,有两种类型的物理引擎:开源物理引擎和商业物理引擎。

常用的专业物理引擎包括歌唱、物理运算引擎,子弹,Havork,牛顿和漩涡。这些物理引擎被广泛使用在域图形建模工具,游戏开发,虚拟现实系统,等等。

碰撞检测是物理引擎的技术核心,所以大部分的物理引擎的研究是研究碰撞检测算法。在现实生活中,有些反应是自然发生在和碰撞后的对象 11]。然而,在虚拟世界中,需要一些算法来解决碰撞问题。碰撞检测是重要的部分领域像机器人,虚拟现实,等等。它的主要目的是确定两个或两个以上的对象将穿透或联系。对碰撞检测的研究,通过一定的算法,使两个或两个以上的对象不是在同一时间占据同一空间区域,而不会破坏的对象。

目前,有两个主要类别的全球研究碰撞检测:空间分解法和边界框法。边界框的方法模拟复杂形状的对象为一个近似的简单的三维空间。层次包围盒法的边界框法适用于复杂环境中的碰撞检测。

ODE(开放动力引擎)是一个开源库的刚体动力学中常用的模拟接头连接。歌唱可以应用于模拟移动对象在虚拟现实环境中,腿生物,和车辆在地上。它是健壮、灵活和迅速。灵活性体现在可移植性;Unix / Linux、Windows和MacOS可以使用。它有一个内置的碰撞检测系统。

4所示。研究和设计基于ODE的角色动画仿真 4.1。动力学建模模拟车辆基于ODE

在歌唱中,是一种特殊类型的关节,如图 1

Hinge-2关节( 20.]。

Hinge-2关节是由两个noncoaxial铰链。本实用新型包括两个转动轴和一个支点。其中,轴2只能绕着轴旋转;然而,轴1不仅可以绕轴,也可以限制其旋转的范围。

汽车模型由身体和轮子。根据Hinge-2的联合类型、身体1可以代表身体和身体2可以代表车轮;类似地,轴1可以代表车轮和轴2的方向盘可以表示轮子滚动轴。在ODE的动力学设计系统中,歌唱刚性对象生成质量和位置,创建了刚体和颂歌几何对应于在同一时间。最后,身体和车轮由Hinge-2接头连接。一个简单的汽车模型已经建立。

4.2。模拟基于ODE的性格碰撞

基于ODE的性格碰撞的仿真过程如下。

4.2.1。准备空间初始化在碰撞模拟

在这个阶段,有必要设置类型的碰撞空间和接触表面的相关属性,如灵活性、弹性和摩擦。

4.2.2。初始化的数据碰撞仿真

在这个阶段,有必要做一些数据的初始化和清理工作前碰撞仿真( 12]。

碰撞数据清理。明确各种碰撞信息,包括清算碰撞数据,清算联络小组,并破坏当前冲突的空间。然后,重置所有接触表面的性质符合用户的需要。

根据用户需求,创建四叉树空间,散列空间,简单的空间。这三个新的类型的碰撞空间使用不同的碰撞检测算法和不同的数据结构。不同的几何图形存储使用不同的数据结构。

碰撞检测的数据。碰撞是一个自定义变量,存储的数据所需的所有数据碰撞几何。这个角色对象的源数据。碰撞仿真之前,您需要设置一个每个碰撞碰撞数据对象和数据添加到列表的碰撞。最后,碰撞信息转移到碰撞函数时碰撞模拟执行。

4.2.3。碰撞仿真开始

仿真过程需要的时间步骤作为一个单元。ODE模拟器,模拟完成单位碰撞效应的时间步之前需要使用当前状态数据的影响和作用,然后碰撞效应对身体的作用[ 13, 14]。这个链接需要调用现有的空间碰撞功能的颂歌。最后,根据数据生成的节点联系两个刚体的碰撞接触,ODE完成碰撞( 15]。空间碰撞功能是一个非常重要的功能在这个链接。其函数原型

空白dSpaceCollide( dSpaceID空间, 无效 d 一个 t 一个 , dNearCallback c 一个 l l b 一个 c k )。

这个函数确定哪些几何图形可能发生在太空,然后调用回调函数处理的几何图形,最后完成了碰撞。

dNearCallback回调的函数类型,定义如下:

Typedef空白dNearCallback( 无效 d 一个 t 一个 , dGeomID o 1, dGeomID o 2)

其中,数据是用户定义的参数,直接从dSpaceCollide通过。一副的几何图形检测可能碰撞由参数 o 1, o 2 ( 16]。这个回调函数然后使用dCollide生成几何图形之间的接触点。然后,这些接触点添加到仿真过程对接。

以下操作将发生在回调( 17]:

使用dCollide函数生成选择接触点之间的几何图形,而返回接触点的数量。

基于所有的碰撞数据在前面的链接,对于每一个接触点,两个合格的碰撞数据点搜索。

ODE完成碰撞效应根据对接信息包含在这两个碰撞并再次显示了图片。

4.2.4。碰撞仿真结束

ODE仿真结束,碰撞仿真还可以作为驱动力停止力的特点。这个链接会做一些相关数据的清理工作,这有利于接下来的仿真。

5。角色动画仿真的实现和测试 5.1。创建角色动画的一个例子

打开物理引擎软件和编辑和运行C语言程序图中所示的场景 2

场景的画面。

在图 2中,您可以看到现场的基本元素,包括天空、地面,汽车和障碍。

仿真示例包含简单元素:车辆的力量来自于电动机;输出功率和前轮转向设置;车轮和车身接头通过铰链;车辆可能交互部队当触摸任何对象的场景;有一个碰撞检测设备在车里。

5.2。测试

通过设置车辆,车辆之间的相互作用力和场景中的对象,以及地面滑移率,模拟车辆的运动和碰撞过程是如何实现的。

性能测试数据所示 3, 4, 5

前进、后退、加速和减速的车辆模型。

把和攀登的车辆模型。

车辆模型高速碰撞与障碍和翻转,由于高速转弯和冲坡道。

在测试的过程中,改变车辆或周围环境的各种参数,观察人物图片的变化是否符合动力学原理。

5.2.1。摩擦测试

当车辆与地面接触,改变原始的库仑摩擦系数μdInfinity(没有滑动触点)为0(无摩擦接触)。这个系数必须设置,测试结果是车轮空转。这时,前轮为输出功率只能闲置,因为没有摩擦力,所以车辆无法移动 18]。

5.2.2。渗透测试

当车辆与地面接触,soft_cfm接触正常的弹性参数,用于调整对象的灵活性。扩大soft_cfm值,从原来的0.3比1,表明会有非常明显的物体穿透的现象;测试结果如图 6;出现非常明显的车轮与地面之间的渗透现象( 18]。

对比预调和调整渗透效果。

5.2.3。滑动系数测试

设置FDS(力依赖滑移系数)为零。车辆模型卷后,继续给电力车辆,车辆没有滑但一直是静态的。(FDS横向滑动现象由于横向外力移动对象时,和滑动距离正比于物体的移动速度和外部力量,所以FDS也被称为横向力滑动系数( 18, 19]。)

如果FDS滑动摩擦系数设置为0.1,继续给车辆翻转后,车辆仍然可以横向移动。测试结果如图 7

水平运动。

当世界被创建, z 设在重力加速度的方向,可以得到如图设置为0 8

车辆悬架。

从测试结果,由于重力加速度为0,有模拟悬架的车辆。

通过汽车的仿真和周围环境的各种参数设置,你可以进行各种物理engine的动画仿真。

6。总结

关于角色动画的模拟研究,国内外有很多成就。学习和研究的基础上,现有的科研成果,本文做了以下工作:深入研究主流电脑角色动画生产技术;深入分析和研究主流的物理引擎;深入研究有关碰撞检测算法;设计和构建仿真体系结构,使角色动画模拟可行的通过使用ODE引擎;建立仿真实验平台,成功操作示例实现ODE-based角色动画仿真;和与不同的参数进行测试和分析。

未来研究重点包括以下:从车辆运动模型升级到更复杂的人体运动模型,模拟更复杂和精确的运动人体;为不同的角色模型建立不同的控制器和运动状态和实施更有效的通过更聪明和更现实的模拟控制器;使自然关闸的角色通过动画混合技术。

的利益冲突

作者宣称没有利益冲突。

B。 研究和实现基于角色的动画仿真 2012年 中国电子科技大学 c K。 Hertzmann 一个。 Popović Z。 成分复杂的最优多运动 诉讼的ACM SIGGRAPH / Eurographics研讨会上电脑动画(SCA 06年) 2006年9月 奥地利的维也纳 ACM 215年 222年 H。 物理引擎的关键技术的研究和应用虚拟现实 2010年 山东科技大学 http://baike.baidu.com/view/85895.htm 年代。 驾驶模拟系统的设计和实现基于食人魔和颂歌 2006年 武汉科技大学 Zordan 诉B。 霍金斯 j·K。 运动capture-driven模拟袭击和作出反应 诉讼的ACM SIGGRAPH / Eurographics研讨会上电脑动画(SCA的02) 2002年7月 ACM 89年 96年 10.1145/545261.545276 Z。 家珍 H。 H。 总结研究碰撞检测问题 软件学报 1999年 5 拉赫松 T。 辛苦工作 t。 碰撞检测的连续变形的身体 诉讼Eurographi cs的 2001年 Popović Z。 控制物理现实的角色动画 ACM的通信 2000年 43 7 51 58 2 - s2.0 - 0042223458 10.1145/332833.332838 M。 动态故障诊断方法研究车辆安装轨道 2014年 北中央大学 T。 研究汽车基于任务3 d虚拟驾驶培训系统 2012年 河南理工大学 X。 改进和优化空间的碰撞检测模块的桌面系统 2011年 首都师范大学 T。 自适应随机使用粒子群优化可变形物体之间的碰撞检测 《EvoWorkshops (EvoIASP 06年) 2006年 2 - s2.0 - 33745767920 马德拉 f。 一天 a . M。 莱科克 s D。 混合边界体积算法来检测可变形物体之间的碰撞 第二届国际会议上的进步的人机交互(ACHI ' 09) 2009年2月 墨西哥坎昆 IEEE 136年 141年 10.1109 / ACHI.2009.13 2 - s2.0 - 63749104156 Y。 G。 M。 Y。 实时碰撞检测算法的概述 计算机应用研究 2008年 1 Klosowski j . T。 举行 M。 米切尔 j·s·B。 Sowizral H。 Zikan K。 有效的碰撞检测使用边界卷k-DOPs的层次结构 IEEE可视化和计算机图形学 1998年 4 1 21 36 2 - s2.0 - 0031673012 10.1109/2945.675649 史密斯 R。 开放的动态引擎v0.5用户指南 2006年, http://www.ode.org/ode-latest-userguide.html Geijtenbeek T。 Pronost N。 使用模拟物理互动角色动画 游戏和虚拟世界,2011年 M。 虚拟现实艺术工程的研究和实践 2010年 哈尔滨工程大学 吉梅内斯 P。 托马斯。 F。 肾脏病 C。 三维碰撞检测:一项调查 计算机与图形学 2001年 25 2 269年 285年 10.1016 / s0097 - 8493 (00) 00130 - 8 2 - s2.0 - 0035311963