最佳答案 - 由提问者2006-10-03 16:17:39选出
基于物理模型的动画技术是八十年代后期发展起来的一种新的计算机动画技术。经过近几年的发展,它已在图形学中成为一种具有潜在优势的三维造型和运动模拟技术。尽管该技术比传统动画技术的计算复杂度要高得多,但它能逼真地模拟各种自然物理现象,这是基于几何的传统动画生成技术所无法比拟的。著名动画软件Softimage在基于动力学的动画功能方面已相当成熟,它能处理诸如重力、风、碰撞检测等在内的复杂动力学模型。
传统动画技术要求预先描述物体在某一时刻的瞬时几何位置、方向和形状,其运动则往往通过前面第一节中所介绍的参数关键帧技术来完成。因而,欲模拟一个逼真的自然运动需要动画设计者细致、耐心的调整,要求动画设计者依赖其对真实物理世界的直观感觉来设计物体在场景中的运动。但由于我们对日常物理世界极为熟悉,且真实的物体运动往往非常复杂,因而,采用传统的动画设计技术一般来说难以生成令人满意的运动。今天,许多动画师不得不采用一些特殊的软件来模拟特定的物体运动。基于物理模型的动画技术则考虑了物体在真实世界中的属性,如它具有质量、转动惯矩、弹性、摩擦力等,并采用动力学原理来自动产生物体的运动。当场景中的物体受到外力作用时,牛顿力学中的标准动力学方程可用来自动生成物体在各个时间点的位置、方向及其形状。此时,计算机动画设计者不必关心物体运动过程的细节,只需确定物体运动所需的一些物理属性及一些约束关系,如质量、外力等。
最近几年,已有许多研究者对动力学方程在计算机动画中的应用进行了深入广泛的研究,提出了许多有效的运动生成方法。总体上来说,这些方法大致可分为三类,即刚体运动模拟、塑性物体变形运动以及流体运动模拟。下面,我们将简单介绍一下这三方面已有的成果及其不足之处。
在刚体运动模拟方面,其研究重点集中在采用牛顿动力学的各种方程来模拟刚体系统的运动。由于在真实的刚体运动中任意两个刚体不会相互贯穿, 因而在运动过程模拟时,必须进行碰撞检测,并对碰撞后的物体运动响应再进行处理。Armstrong和Green、Wilhelms直接采用动力学方程来模拟刚体关节链的运动。Witkin等分别利用Lagrangian动力学方程及时空约束和能量约束方程来进行物体的运动仿真。而Isaacs等则分别采用逆动力学和正动力学方法来模拟刚体系统的运动,并揉合进了许多传统的动画生成技术,如关键帧插值技术、正运动学和逆运动学技术等来对某些关节处的刚体运动加以控制。因而,这两种方法较之前面的几种方法对运动的模拟更具有效性和可控性。同时,他们还在各自的系统中引进了运动碰撞检测机制。Barzel等人提出了一个基于动力学约束控制的刚体造型系统,他们通过几何约束建立物体,用逆动力学求解约束力,然后模型按满足这些约束的方式进行组合。由于每个刚体元素的运动都满足物理规律,因而生成的运动非常逼真。Hahn采用解析方法来计算两刚体碰撞时产生的冲量。该方法假定两刚体在接触的瞬间只有一点接触,因而是非常理想化的。为防止在非完全弹性碰撞时刚体间的相互贯穿,Hahn将这种碰撞接触模拟为一个屡次发生碰撞的序列。Moore和Wilhelms采用了与Hahn类似的假设和方法来计算刚体相撞所产生的力。Moore和Wilhelms将瞬时碰撞模拟为一个很小间隔的单碰撞的序列,并用非解析方法来处理刚体间的非完全弹性碰撞问题。对碰撞响应问题,他们则采用一具有常数弹性系数的弹簧来加以模拟。虽然,上述两种碰撞模型避免了景物在运动过程中的相互贯穿现象,但它却不能有效地计算非完全弹性碰撞时所产生的力。注意到上述模型的这一缺陷,Baraff提出了一个解析计算非完全弹性刚体系统碰撞产生的冲力的方法。该模型允许两刚体在多点接触碰撞。多面体间碰撞冲力的计算则采用线性规划方法(最优化)。在Baraff的后续几篇文章中,他将上述算法分别拓广到具有曲面的一般性场景中,同时他还考虑了两物体碰撞滚动时产生摩擦力的情况。对于刚体物体,Baraff提出了一个计算包含摩擦力在内的碰撞力的方法,由于无需转换成优化问题,因而更简单、可靠、速度更快。1998年,Grzeszczuk等人提出了一种取代直接计算动力学模型的神经网络方法,通过预先学习动力学模型,该方法能生成接近物理真实的动画,但计算速度却快一至二个数量级。
至此我们已简单介绍了刚体在碰撞瞬时的响应问题,但并未涉及到刚体碰撞的另一问题:碰撞检测。碰撞检测在机器人领域中曾得到过广泛的研究。Hahn采用层次包围盒技术来加速多面体场景的碰撞检测。而Moore和Wilhelms则提出了二个有效的碰撞检测算法,其一用来处理三角剖分过的物体表面,而另一算法则用来处理多面体环境的碰撞检测。由于任一物体表面均可表示成一系列三角面片,因而,该碰撞检测算法具有普遍性。Moore和Wilhelms算法的基本思想是利用一个运动刚体上的各顶点的运动轨迹与另一运动或静止刚体上的每一个三角面片进行求交测试,若存在有效交点,则说明两刚体将相碰撞,否则,在该时间段时,它们将不相碰。为提高该算法的计算效率,Moore和Wilhelms根据运动刚体的各顶点位置建立空间八叉树,对要测试的另一刚体的每一三角片,由其运动前后的位置建立包围盒,并用运动速度最快点所走过的距离扩展该包围盒。用该包围盒对八叉树进行递归测试,若某一点落在包围盒内,则进行细致的判别,否则,则予以拒绝。这一算法的缺点是当景物为一复杂的雕塑曲面时,对表面的三角剖分可能产生大量的三角片,这会大大影响算法的效率。为此,Baraff、Herzen等人提出了基于参数曲面的几何碰撞检测算法。Baraff算法采用两个刚体的状态空间来表示碰撞约束,该状态空间为十二维空间,它们分别表示了两刚体的六个自由度。Baraff进而将两刚体的碰撞检测转化为一隐式约束方程,由此,可方便地决定两刚体是否相碰,若相碰,还可求出该碰撞响应。而Herzen等则数值求解两参数曲面在接触点处或最近点处的参数值来判定它们是否相交并应用层次细分技术。采用层次八叉树结构,Yang等人提出了一个基于三角形的快速碰撞检测算法,并把它应用于人体动画和布料动画中。
在真实物理世界中,许多物体并非完全是刚体,它们在运动过程中会产生一定的形变,即所谓柔性物体。物体的变形一直是计算机图形学的研究热点,这在前面已详细介绍过。由于传统的表面变形均是基于几何的,其形变状态完全人为给定,因而变形过程缺乏真实性。1986年,Weil首次讨论了基于物理模型的柔性物体的变形问题。当时仅仅是用来模拟布料悬挂在钉子上的形态。Feynman则提出了一个更完善的布料悬挂模型。后来,许多研究者相继开始采用各种物理模型来对非刚性物体进行运动变形模拟。Miller用质点—弹簧系统模拟了蛇和虫子这类无腿动物的蠕动动画。他用弹簧的收缩来模拟肌肉的收缩,并考虑了动力学模型中的方向摩擦。他制作的蛇和虫子的动画由于其高度逼真性引起了很大的反响。Tu等人提出了一种模拟鱼的行为的动画,可在动画师较少干涉的情况下生成真实的个体和群体运动。Terzopoulos等采用连续弹性理论来模拟物体的形变和运动。通过考虑物体的分布式物理属性,如质量、弹性等,他们成功地模拟了柔性物体对外力的动力学响应。尽管该模型对大变形物体具有很好的效果,但当物体的刚性增强时,该模型会出现数值不稳定(病态)现象。后来,他进一步发展了其模型。物体的变形被分解成为参考分量和一平移分量,参考分量用来表示物体的任一形状,而平移分量则控制物体的形变量,且完全由一线性弹性变形模型所控制。在他的另一篇文章中,他们进一步完善了其变形模型使之能够模拟各种变形效果,包括:完全弹性变形、非完全弹性变形、塑性变形、断裂等。
采用Lagrangian方程和热方程,Terzopoulos等人模拟了变形物体的融化过程。为了生成逼真的柔性物体的运动,Platt等人提出了柔性物体的两种约束方法,即反应(reaction)约束和扩充的拉格朗日约束。反应约束允许柔性多边形模型碰撞的快速计算,并允许动画师进行推拉控制。扩充的拉格朗日约束允许生成诸如体积不变的压扁和太妃糖类物质的挤压效果。Witkin提出了在参数化模型中附加求解几何约束的方法。他们把约束表达成能量函数,并使能量的梯度沿模型的参数空间变化。直观地讲,能量约束象力一样把模型拉到位,并使模型产生相应的变形。这种方法的优点在于它的广泛适用性,缺点是计算量大。在仿真具有柔性体的复杂系统时,若把其几何和动力学分开讨论,则问题将会简化。Pentland提出用振动模式来描述物体的动力学,用体积模式来描述物体的几何,然后用多项式变形映射将它们合在一起。采用这种混合的表示,其效率可比求解一般的非刚体逆动力学问题提高二至三个数量级。该方法非常适合于制作传统动画中的伸展/压扁、夸张等效果。
提问者对最佳答案的评价
谢谢你的精彩回答!祝你节日快乐!
其他回答(1)
-
基于物理模型的动画技术是八十年代后期发展起来的一种新的计算机动画技术。经过近几年的发展,它已在图形学中成为一种具有潜在优势的三维造型和运动模拟技术。尽管该技术比传统动画技术的计算复杂度要高得多,但它能逼真地模拟各种自然物理现象,这是基于几何的传统动画生成技术所无法比拟的。著名动画软件Softimage在基于动力学的动画功能方面已相当成熟,它能处理诸如重力、风、碰撞检测等在内的复杂动力学模型。
传统动画技术要求预先描述物体在某一时刻的瞬时几何位置、方向和形状,其运动则往往通过前面第一节中所介绍的参数关键帧技术来完成。因而,欲模拟一个逼真的自然运动需要动画设计者细致、耐心的调整,要求动画设计者依赖其对真实物理世界的直观感觉来设计物体在场景中的运动。但由于我们对日常物理世界极为熟悉,且真实的物体运动往往非常复杂,因而,采用传统的动画设计技术一般来说难以生成令人满意的运动。今天,许多动画师不得不采用一些特殊的软件来模拟特定的物体运动。基于物理模型的动画技术则考虑了物体在真实世界中的属性,如它具有质量、转动惯矩、弹性、摩擦力等,并采用动力学原理来自动产生物体的运动。当场景中的物体受到外力作用时,牛顿力学中的标准动力学方程可用来自动生成物体在各个时间点的位置、方向及其形状。此时,计算机动画设计者不必关心物体运动过程的细节,只需确定物体运动所需的一些物理属性及一些约束关系,如质量、外力等。
最近几年,已有许多研究者对动力学方程在计算机动画中的应用进行了深入广泛的研究,提出了许多有效的运动生成方法。总体上来说,这些方法大致可分为三类,即刚体运动模拟、塑性物体变形运动以及流体运动模拟。下面,我们将简单介绍一下这三方面已有的成果及其不足之处。
在刚体运动模拟方面,其研究重点集中在采用牛顿动力学的各种方程来模拟刚体系统的运动。由于在真实的刚体运动中任意两个刚体不会相互贯穿, 因而在运动过程模拟时,必须进行碰撞检测,并对碰撞后的物体运动响应再进行处理。Armstrong和Green、Wilhelms直接采用动力学方程来模拟刚体关节链的运动。Witkin等分别利用Lagrangian动力学方程及时空约束和能量约束方程来进行物体的运动仿真。而Isaacs等则分别采用逆动力学和正动力学方法来模拟刚体系统的运动,并揉合进了许多传统的动画生成技术,如关键帧插值技术、正运动学和逆运动学技术等来对某些关节处的刚体运动加以控制。因而,这两种方法较之前面的几种方法对运动的模拟更具有效性和可控性。同时,他们还在各自的系统中引进了运动碰撞检测机制。Barzel等人提出了一个基于动力学约束控制的刚体造型系统,他们通过几何约束建立物体,用逆动力学求解约束力,然后模型按满足这些约束的方式进行组合。由于每个刚体元素的运动都满足物理规律,因而生成的运动非常逼真。Hahn采用解析方法来计算两刚体碰撞时产生的冲量。该方法假定两刚体在接触的瞬间只有一点接触,因而是非常理想化的。为防止在非完全弹性碰撞时刚体间的相互贯穿,Hahn将这种碰撞接触模拟为一个屡次发生碰撞的序列。Moore和Wilhelms采用了与Hahn类似的假设和方法来计算刚体相撞所产生的力。Moore和Wilhelms将瞬时碰撞模拟为一个很小间隔的单碰撞的序列,并用非解析方法来处理刚体间的非完全弹性碰撞问题。对碰撞响应问题,他们则采用一具有常数弹性系数的弹簧来加以模拟。虽然,上述两种碰撞模型避免了景物在运动过程中的相互贯穿现象,但它却不能有效地计算非完全弹性碰撞时所产生的力。注意到上述模型的这一缺陷,Baraff提出了一个解析计算非完全弹性刚体系统碰撞产生的冲力的方法。该模型允许两刚体在多点接触碰撞。多面体间碰撞冲力的计算则采用线性规划方法(最优化)。在Baraff的后续几篇文章中,他将上述算法分别拓广到具有曲面的一般性场景中,同时他还考虑了两物体碰撞滚动时产生摩擦力的情况。对于刚体物体,Baraff提出了一个计算包含摩擦力在内的碰撞力的方法,由于无需转换成优化问题,因而更简单、可靠、速度更快。1998年,Grzeszczuk等人提出了一种取代直接计算动力学模型的神经网络方法,通过预先学习动力学模型,该方法能生成接近物理真实的动画,但计算速度却快一至二个数量级。
至此我们已简单介绍了刚体在碰撞瞬时的响应问题,但并未涉及到刚体碰撞的另一问题:碰撞检测。碰撞检测在机器人领域中曾得到过广泛的研究。Hahn采用层次包围盒技术来加速多面体场景的碰撞检测。而Moore和Wilhelms则提出了二个有效的碰撞检测算法,其一用来处理三角剖分过的物体表面,而另一算法则用来处理多面体环境的碰撞检测。由于任一物体表面均可表示成一系列三角面片,因而,该碰撞检测算法具有普遍性。Moore和Wilhelms算法的基本思想是利用一个运动刚体上的各顶点的运动轨迹与另一运动或静止刚体上的每一个三角面片进行求交测试,若存在有效交点,则说明两刚体将相碰撞,否则,在该时间段时,它们将不相碰。为提高该算法的计算效率,Moore和Wilhelms根据运动刚体的各顶点位置建立空间八叉树,对要测试的另一刚体的每一三角片,由其运动前后的位置建立包围盒,并用运动速度最快点所走过的距离扩展该包围盒。用该包围盒对八叉树进行递归测试,若某一点落在包围盒内,则进行细致的判别,否则,则予以拒绝。这一算法的缺点是当景物为一复杂的雕塑曲面时,对表面的三角剖分可能产生大量的三角片,这会大大影响算法的效率。为此,Baraff、Herzen等人提出了基于参数曲面的几何碰撞检测算法。Baraff算法采用两个刚体的状态空间来表示碰撞约束,该状态空间为十二维空间,它们分别表示了两刚体的六个自由度。Baraff进而将两刚体的碰撞检测转化为一隐式约束方程,由此,可方便地决定两刚体是否相碰,若相碰,还可求出该碰撞响应。而Herzen等则数值求解两参数曲面在接触点处或最近点处的参数值来判定它们是否相交并应用层次细分技术。采用层次八叉树结构,Yang等人提出了一个基于三角形的快速碰撞检测算法,并把它应用于人体动画和布料动画中。
在真实物理世界中,许多物体并非完全是刚体,它们在运动过程中会产生一定的形变,即所谓柔性物体。物体的变形一直是计算机图形学的研究热点,这在前面已详细介绍过。由于传统的表面变形均是基于几何的,其形变状态完全人为给定,因而变形过程缺乏真实性。1986年,Weil首次讨论了基于物理模型的柔性物体的变形问题。当时仅仅是用来模拟布料悬挂在钉子上的形态。Feynman则提出了一个更完善的布料悬挂模型。后来,许多研究者相继开始采用各种物理模型来对非刚性物体进行运动变形模拟。Miller用质点—弹簧系统模拟了蛇和虫子这类无腿动物的蠕动动画。他用弹簧的收缩来模拟肌肉的收缩,并考虑了动力学模型中的方向摩擦。他制作的蛇和虫子的动画由于其高度逼真性引起了很大的反响。Tu等人提出了一种模拟鱼的行为的动画,可在动画师较少干涉的情况下生成真实的个体和群体运动。Terzopoulos等采用连续弹性理论来模拟物体的形变和运动。通过考虑物体的分布式物理属性,如质量、弹性等,他们成功地模拟了柔性物体对外力的动力学响应。尽管该模型对大变形物体具有很好的效果,但当物体的刚性增强时,该模型会出现数值不稳定(病态)现象。后来,他进一步发展了其模型。物体的变形被分解成为参考分量和一平移分量,参考分量用来表示物体的任一形状,而平移分量则控制物体的形变量,且完全由一线性弹性变形模型所控制。在他的另一篇文章中,他们进一步完善了其变形模型使之能够模拟各种变形效果,包括:完全弹性变形、非完全弹性变形、塑性变形、断裂等。
采用Lagrangian方程和热方程,Terzopoulos等人模拟了变形物体的融化过程。为了生成逼真的柔性物体的运动,Platt等人提出了柔性物体的两种约束方法,即反应(reaction)约束和扩充的拉格朗日约束。反应约束允许柔性多边形模型碰撞的快速计算,并允许动画师进行推拉控制。扩充的拉格朗日约束允许生成诸如体积不变的压扁和太妃糖类物质的挤压效果。Witkin提出了在参数化模型中附加求解几何约束的方法。他们把约束表达成能量函数,并使能量的梯度沿模型的参数空间变化。直观地讲,能量约束象力一样把模型拉到位,并使模型产生相应的变形。这种方法的优点在于它的广泛适用性,缺点是计算量大。在仿真具有柔性体的复杂系统时,若把其几何和动力学分开讨论,则问题将会简化。Pentland提出用振动模式来描述物体的动力学,用体积模式来描述物体的几何,然后用多项式变形映射将它们合在一起。采用这种混合的表示,其效率可比求解一般的非刚体逆动力学问题提高二至三个数量级。该方法非常适合于制作传统动画中的伸展/压扁、夸张等效果。参考资料
http://ask.xiaoi.com/special/listSpecialComment.do?articleId=7127



翛矞









