共有回帖数 0 个
-
Dynamics Simulation Concepts
动力学模拟的概念
作为对标准粒子的碰撞功能新增,TP现在支持一个新的刚体动力学系统来帮助你创建更加令人惊艳的特效.为了充分利用这些动力学系统,去理解这些系统背后的基本概念是非常有必要的
TP提供了两种模式来处理物体间的碰撞
一种是理想化的假意的基于粒子间的碰撞检测
一种更加精确地面对面的碰撞检测
两种系统都是基于现实的物理学,并且都是使用的一种underlying impulse-based系统来处理物体间碰撞产生的能量储存问题.在基础上,TP的动力学系统遵循着真实世界的模拟,能量可以产生遗失并被摧毁.在现实世界中,不同物体之间的相对速度跟质量是不同的,这对最终动画的模拟结果是相对重要的.因此,对于真实性的模拟,你就需要在TP中输入真实性的(现实世界中的)参数,否则,整个TP系统将会出现不可预计的错误,可能直接导致死机
当你想要保证物理模拟的准确性的时候,考虑一下适当的尺寸(场景),做出适当的模型是相当重要的
Particle Based Collision Detection
基于粒子的碰撞检测
TP里优化最好最有效率的物理解算方式是基于粒子的碰撞.但你使用这种模式的时候,所有的冲量计算能量转换计算都是惊人的准确.只有每个粒子是球状或者半径一样大小时才能起到作用.对于制作雨打在窗户上或者角磨机上的火花飞溅等这样的传统粒子动画时,这是没有什么问题的.在这些例子中,粒子小到碰撞检测是不会创建出任何问题的.这种动力学模式背后的理论完全是基于速度的,使用一个球状形态来检测碰撞的这种方式是经过优化的,因为这种方式只会让物理引擎去计算粒子的半径.就算有成千上万个粒子这种碰撞方式也是很有效率的.所以,只要有可能的话,就应该去使用这种纯粒子动力学的模式.动力学操作符StdCollision 就是为了帮助制作这类效果的
Face to Face Collision Detection
面对面的碰撞检测
当你的场景里创建了复杂的粒子动画的时候,不可能一直都是使用球形碰撞检测的.当需要精确计算面跟面之间的碰撞的时候,很有很多方法可以解决.例如,当你从空中扔下一个花瓶,然后花瓶破碎成很多片碎块.如果你使用基于粒子的碰撞检测,去检测粒子半径去的话,部分破碎的几何体会跟地面产生穿插,这就完全不是你想要的效果.
作为最终结果,TP里面面之间的碰撞检测方式使用的是一个高级得多的物理引擎去检测曲面上多余的碰撞点.它是特别设计出来处理上面所说的花瓶掉落这样的案例的,而且被Digital Dimension在新线影业的电影 Blade: Trinity(刀锋战士)大量使用.用来处理吸血鬼灰飞烟灭时骨头会碎裂坍塌并且掉落在地面上的效果.
TP为这个引擎特别提供了一个操作符.ShapeCollision用来创建粒子之间的碰撞并且顺带上一个地面或者其他的可选物体.粒子或者地面物体可以是任何形态或者来自于任何形态的,碰撞检测会精确地检测到粒子/粒子碎块的形态并且返回一个精准的结果
最后提示一点,TP里面提供的所以碰撞检测都仅仅是在非穿插的刚体之间完成的.如果你的两个物体在开始解算之前是有重叠穿插的现象存在的话,模拟的结果将是不正确的Dynamics Sampling
动力学采样
如早前所说的那样,当去计算物体之间的碰撞交互时TP使用的是一种impulse-based(基于冲量??? 不懂的请wiki)方式来实现的.实现这个方式的主要推动力(还有其他物理解算系统,例如Reactor)是通过采样来定义碰撞的.大多数系统,包括TP,允许你去控制帧之间的采样率还有子帧数的范围.这就是说在一个时间帧数内将会进行自动采样率(采样区域---每帧一次或者每帧好几次).,碰撞检测系统将会尝试去检测任何物体之间的碰撞.时间步数越大,解算的精准度越低.
如果你想查询更多关于动力学解算功能如何运行的信息.你也许需要去读一遍3ds Max的reactor介绍参考手册.这应该会给你一个关于这些定义比较明确的基础概念.并且能够理解粒子一个动力学系统应该有哪些特性.这些个概念跟原理同样适用于TP
在下面的案例中,我们使用一个简单的场景,物体一是box object直接掉落到一个地面平面上(Floor)来举例说明一下在模拟真实场景的时候可能会偶尔遇到的问题.


楼主 2015-08-25 18:48 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知