软体动力学

编辑
本词条由“匿名用户” 建档。

软体动力学是计算机图形学的一个领域,专注于对可变形物体(或软体)的运动和属性进行视觉逼真的物理模拟。应用主要是在电子游戏和电影中。与模拟刚体不同,软体的形状可以改变,这意味着物体上两点的相对距离不是固定的。虽然点的相对距离不是固定的,但预计身体会在一定程度上保持其形状(不像流体)。软体动力学的范围相当广泛,包括模拟肌肉、脂肪、头发和植被等软有机材料,以及其他可变形材料,如服装和织物。通常,这些方法...

软体动力学

编辑

软体力学计算机图形学的一个领域,专注于对可变形物体(或软体)的运动和属性进行视觉逼真的物理模拟。应用主要是在电子游戏和电影中。与模拟刚体不同,软体的形状可以改变,这意味着物体上两点的相对距离不是固定的。虽然点的相对距离不是固定的,但预计身体会在一定程度上保持其形状(不像流体)。软体动力学的范围相当广泛,包括模拟肌肉、脂肪、头发和植被等软有机材料,以及其他可变形材料,如服装和织物。通常,这些方法仅提供视觉上似是而非的模拟,而不是准确的科学/工程模拟,尽管与科学方法存在一些交叉,特别是在有限元模拟的情况下。目前有几个物理引擎提供软体模拟软件

可变形实体

编辑

体积固体软体的模拟可以通过使用多种方法来实现。

弹簧/质量模型

两个节点作为质点,由弹簧和阻尼器的并联电路连接。

在这种方法中,身体被建模为一组点质量(节点),由理想的失重弹性弹簧连接,遵循胡克定律的一些变体。节点可以从对象表面的二维多边形网格表示的边缘导出,也可以从对对象内部结构建模的节点和边缘的三维网络(或什至一维系统链接,例如正在模拟绳索或发束)。可以在节点之间添加额外的弹簧,或者修改弹簧的力定律,以达到预期的效果。应用牛顿第二定律包括弹簧施加的力和任何外力(由于接触、重力、空气阻力、风等)的点质量给出节点运动的微分方程组,通过标准数值求解求解ODE的方案。三维质量弹簧晶格的渲染通常使用自由形式变形来完成,其中渲染的网格嵌入晶格中并随着晶格的演变而扭曲以符合晶格的形状。假设所有的点质量都为零一可以得到拉伸网格法旨在解决与弹性网格行为相关的几个工程问题。这些有时被称为质量弹簧阻尼器模型。在受压软体中弹簧质量模型与基于理想气体定律的压力相结合。

单元节点的运动方程是通过对每个单元上的应力场进行积分并将其通过牛顿第二定律与节点速度相关联来获得的。

Pixelux(数字分子物质系统的开发者)对其软体使用基于有限元的方法,使用四面体网格并将应力张量直接转换为节点力。渲染是通过一种形式的自由变形来完成的。

能量最小化方法

这种方法受到变分原理和表面物理学的启发,这表明受约束的表面将采用最小化变形总能量的形状(类似于肥皂泡)。用表面的局部变形来表达表面的能量(能量是由拉伸和弯曲的组合引起的),表面上的局部力是通过对位置的能量微分来给出的,产生一个运动方程,它可以以标准方式解决。

形状匹配

在该方案中,惩罚力或约束应用于模型以将其驱动到其原始形状(即材料表现得好像它具有形状记忆)。为了保持动量,必须正确估计物体的旋转,例如通过极坐标分解。为了近似有限元模拟,可以将形状匹配应用于三维格子和混合的多个形状匹配约束。

基于刚体的变形

变形也可以由传统的刚体物理引擎处理,使用由约束连接的多个刚体的网络对软体运动进行建模,并使用(例如)矩阵调色板蒙皮生成用于渲染的表面网格。这是HavokDestruction中用于可变形对象的方法。

布料模拟

编辑

在计算机图形学的上下文中,布料模拟是指以二维连续弹性膜的形式模拟软体,即为此目的,可以忽略纱线层面上真实布料的实际结构(虽然建模布料在纱线层面上已经尝试过)。通过渲染效果,这可以产生视觉上似是而非的纺织品和服装模拟,用于视频游戏、动画和电影的各种环境中。它还可用于模拟除纺织品以外的二维材料片,例如可变形金属板或植被。在电子游戏中,它通常用于增强穿着衣服的动画角色的真实感。

布料模拟器通常基于质量弹簧模型,但必须区分基于力和基于位置的求解器。

基于力的布料

所述质量-弹簧模型(从获得的多边形网格布的表示)确定作用在所述节点上在每个时步(与重力和施加的力的组合)内的弹簧力。牛顿第二定律给出了可以通过标准ODE求解器求解的运动方程。要创建具有现实刚度的高分辨率布料是不可能的,但是使用简单的显式求解器(例如正向欧拉积分),除非时间步长对于交互式应用程序来说太小(因为众所周知,显式积分器在数值上是足够硬时不稳定系统)。因此,必须使用隐式求解器,需要求解大型稀疏矩阵系统(例如通过共轭梯度法),这本身在交互式帧速率下也可能难以实现。另一种选择是使用具有低刚度的显式方法,使用临时方法来避免不稳定和过度拉伸(例如应变限制校正)。

基于位置的动力学

为了避免对ODE系统进行昂贵的隐式求解,许多实时布料模拟器(特别是PhysX、HavokCloth和MayanCloth)使用基于位置的动力学(PBD),一种基于约束松弛的方法。质量-弹簧模型被转换为一个约束系统,它要求连接节点之间的距离等于初始距离。该系统通过直接移动节点以满足每个约束来顺序和迭代地求解,直到获得足够坚硬的布料。这类似于Gauss-Seidel质量-弹簧模型的隐式矩阵系统的解。必须注意在每个时间步中以相同的顺序求解约束,以避免虚假振荡,并确保约束不违反线性和角动量守恒。可以应用额外的位置约束,例如将节点保持在所需的空间区域内(例如足够接近动画模型),或通过形状匹配保持身体的整体形状。

可变形物体的碰撞检测

编辑

模拟软物体与其环境的真实交互对于获得视觉逼真的结果可能很重要。布料自交在某些应用中很重要,可用于制作可接受的逼真模拟服装。这在交互式帧速率下实现具有挑战性,特别是在检测和解决两个或多个可变形对象之间的自碰撞和相互碰撞的情况下。

碰撞检测可以是离散的/后验的(意味着物体在预定的时间间隔内及时前进,然后检测到并解决任何穿透),或连续的/先验的(物体只前进直到发生碰撞,并且碰撞是在继续之前处理)。前者更容易实现且速度更快,但如果对象移动得足够快,则会导致无法检测碰撞(或检测虚假碰撞)。实时系统通常必须使用离散碰撞检测,以及其他特殊方法来避免未能检测到碰撞。

检测具有明确定义的“内部”的布料和环境对象之间的碰撞很简单,因为系统可以明确检测布料网格顶点和面是否与身体相交并相应地解决它们。如果不存在明确定义的“内部”(例如,在与不形成封闭边界的网格发生碰撞的情况下),则可以通过挤压构造“内部”。由四面体定义的软体的相互碰撞或自碰撞很简单,因为它简化为检测固体四面体之间的碰撞。

然而,通过离散碰撞检测来检测两个多边形布料之间的碰撞(或布料与其自身的碰撞)要困难得多,因为在一个时间步长之后没有明确的方法来局部检测已经穿透的布料节点是否在“错误”的一面与否。解决方案包括使用布料运动的历史来确定是否发生了交叉事件,或者对布料状态进行全局分析以检测和解决自交叉。Pixar提出了一种方法,该方法使用配置空间中网格交叉点的全局拓扑分析来检测和解决布料的自穿入问题。目前,对于实时布料系统来说,这通常在计算上过于昂贵。

软体动力学

为了有效地进行碰撞检测,必须尽快识别肯定不会发生碰撞的图元并从考虑中丢弃以避免浪费时间。使用的方法包括:

  • 边界卷层次结构(AABB、OBB树、球体树)
  • 网格,无论是统一的(使用哈希提高内存效率)还是分层的(例如Octree、kd-tree)
  • 连贯性利用方案,例如使用插入排序的扫描和修剪,或使用前跟踪的树-树碰撞。
  • 混合方法涉及各种这些方案的组合,例如粗AABB树加上在碰撞叶子之间具有一致性的扫描和修剪。

其他应用

编辑

可以通过软体动力学方法模拟的其他效果是:

  • 可破坏材料:脆性固体的断裂、软体的切割和布料的撕裂。在有限元法特别适合于模拟骨折,因为它包括在材料中,其物理上是当断裂发生什么决定内部应力的分布的一个现实的模型,根据断裂力学
  • 塑性(xxx变形)和熔化
  • 模拟头发、毛皮和羽毛
  • 用于生物医学应用的模拟器官

在计算机图形环境中模拟流体通常不会被视为软体动力学,软体动力学通常仅限于对倾向于保持其形状和形式的材料进行模拟。相比之下,流体呈现出任何包含它的容器的形状,因为粒子通过相对较弱的力结合在一起。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/128626/

(4)
词条目录
  1. 软体动力学
  2. 可变形实体
  3. 弹簧/质量模型
  4. 能量最小化方法
  5. 形状匹配
  6. 基于刚体的变形
  7. 布料模拟
  8. 基于力的布料
  9. 基于位置的动力学
  10. 可变形物体的碰撞检测
  11. 其他应用

轻触这里

关闭目录

目录