注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

豆芽兵的生存探索

因,记录。留下历史,看到未来...

 
 
 

日志

 
 

第一节:简介  

2013-03-08 18:06:39|  分类: RealFlow探索 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索
 

简介

1.1 RealFlow的物理模拟系统

RealFlow是最知名也是最强大的流体模拟引擎,它支持多种类型的粒子。可RealFlow还更进一步:提供一个强大动力学模拟系统,这是跟流体引擎完全不一样的。这个功能使RealFlow成为全能的软件,因此能制作大部分的效果。

这个模拟引擎不是独立的解算器,他可以与别的对像进行交互。最经典的例子肯定是流体跟物体交互,如苹果砸到水里。这些里的苹果就称刚体 (rigid),就算是橡皮球这样的 ("soft")柔体,RealFlow刚体系统也是支持的。在RealFlow4版本,刚体解算器几乎重新开发了一遍,让解算更准确模拟速度更快。对于物体堆叠问题,引入了Stacking 参数(这个参数在RealFlow5开始就隐藏起来了,用户无法直接像RF4一样调节)。

对RealFlow来说它没有必要写一个单独的动画编辑器。早期的图形艺术家得要手动模拟动态,进行做动画。这确实是一个很大挑战,因为它需要很多经验并能很好的理解物理参数,才能制作出自然的动画效果。今天,一切变得容易起来,很多三维软件提供了动力学模拟系统,要么是完全集成要么有支持的插件。RealFlow是仅有的几个把流体和物理引擎集合到一起的软件。

RealFlow基于默认设置计算速度,位置,旋转和几何体置换,这些默认设置用户可以自由更改。最终这些数据计算结果输出成SD文件。通过使用Next Limt的接口插件,可以把这SD文件导回到三维软件中。

我们制作刚体运动时,一定会用到辅助器(Daemon)。让人高兴的是,RealFlow4之后是支持Python Script的,你完全可以使用Python 脚本自定义辅助器,达到想要的效果。

(脚本学习可参考:1.RealFlow Python一书,本人已翻译:http://qqww2334.blog.163.com/blog/static/12036582201242010292597/

2.RF的帮助文档也是很重要的学习资料!)

1.2什么是刚体动力学(Rigid Body Dynamic)?

上面刚体动力学有两个基本系统:柔体(SBD,Soft Body Dynamics)和刚体(RBD,Rigid Body Dynamics)。刚体,是不会变形的对像。当物体受到力或是运动时,形状不会改变。即使受到碰撞,几何形状仍很稳定;柔体,受到碰撞或运动时形状会发生改变,具有延展性。这是刚体与柔体的主要不同点。

CG软件利用动力学知识可以预测到物体在受到力后,物体的形态或位置的变化。在动力学模拟系统中,你只能设置初始碰撞。然后程序计算结果模拟物体的力和改变后状态。

在现实中,刚体也会变形,只是变形很小,几乎看不出来。如果力足够大,任何物体都会变成柔体。在RealFlow中我们把刚体是看成理想状态中不会变形的。

在如今计算机图形和视觉效果的世界。刚体动力学变成为一个重要组成部分,破碎,碰撞和正确的物理模拟。更高级的,用脚本来控制基本运动有助力于达到逼真效果。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图1:多米诺效应是刚体的一个完美案例

(译者注:上面说的刚体与动力学和物理学中说的略有不同。精确解释请参考下面词条:维基百科

1.3很重要的一些基本物理量

所有的动力学模拟系统都有一个很大的优势:就是你不必关心模拟背后的物理概念。然后对一些基本物理名词,还是很有必要知道的。我不会从物理角度深入讲解,但我们必须要留心一些非常重要的关系和物体参数。下面就来复习一下学校中的一些物理知识:关于力(force),质量(mass),加速度(acceleration),速度(velocity)和摩擦力(friction)。

1.3.1 力(Force

力,是所有的基础。物体每一次的形状或运动改变,都是力作用的结果。在生活中, 我们会遇到多种不同种力。如:肌肉产生的力,磁场力,摩擦力,风力或弹力。通过这些名称我们就能知道力的来源。还有一些力的名称则会让人联想到它的作用效果,想一下压力,吸引力,加速力和破坏力。

力可以被描述成带有方向的值。想像一个玩具小车,通过你的手移动。要使用它移动,就要把它往一个确定的方向推。如果你要画出运动,可以使用箭头表示方向。这个箭头被称为矢量,这个有方向的箭头告诉你矢量所指的方向,长度可以被看作是强度或大小。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图2:不同的矢量指向不同的方向

上图显示了二维空间一对对不同的矢量。正如你看到的,他们都使用X和Y轴。要定义矢量的位置,我们仅需要找出坐标的箭头。在三维空间我们需要用到第三个轴,称作Z轴。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索Tip:你可以在第二节:RealFlow Python脚本基础(2) http://qqww2334.blog.163.com/blog/static/120365822012423104913473/读到更多关于矢量的知识。通过查看维基百科可以得到更多更全解释。

在RealFlow,你不必关心矢量和数学原理。你只需要输入三个值和动力学解算器计算的力大小就可以了。如果你想创建脚本,那情况就完全不同了。因为你负责利用正确的公式和来创建新的矢量。

力最重要的公式是:

F = m * a

这是很简单的等式,意思是力F大小等于物体质量m和加速度a的乘积。推动小车,你提高的是加速度a。想做到这一点你需要施加一定的力。力的国际单位是 Newton(牛顿) N

最有名的力一定是重力(Gravity)。重力可以简单的看作是特殊情况。加速度跟你的位置有关,它称作G。在地球上,g作为一个常数9.8m/s^2。这是一个确定的值,你可以看一下RealFlow的Gravity 辅助器。

巨大的物体,像太阳或木星重力值比g要大,重力比g小的天体有小卫星,月亮等。由星球质量决定的。重力公式可以写成:

G = m*g

重力是有方向的力,指向球体中心。重力能让物体下落到地面。别的力,像风力或吸引力,可以是任何方向。

1.3.2 质量

已经讲过质量跟力之间的一些关系。在日常生活中,我们经常使用另一个术语来描述质量:Weight(重量)。这里,在地球上是正确的,因为质量和重量是代表同一个值,但在物理中,我们要有所区别。一个物体的质量是它的固有属性,而重量(最好说成:重力)在不同地点物体受到的重力是不一样的。质量可以被看做物体所包含物质的量。重力告诉我们,强大的重力如何影响物体。同样,在地球上是没有区别的,重力几乎保持不变:你可以说重力和重量是同等条件下的量。

质量的国际单件是Kilogramme(千克) (kg,美语中写作Kilogram).RealFlow继承了这一约定,使用kg.

之前学过,得要施加力物体才能运动。对于质量很小的物体,需要的力也很小。而你想加速质量很大的物体就需要很大力才能让物体运动。这跟推动一个大理石或推一辆车需要很大力意思是一样的。

看一下公式

F = m* a

我们看到有很大的相关性。只要一个物体没有加速度(a = 0),影响力F就是零。比方说,物体的质量m为10kg:

F = 10 kg*0m/s^2

F = 0 kg*m/s^2

F = 0 N

这个特殊情况称为平衡。在这个状态下,物体静止或一直沿直线匀速运动。

另一个相关的:是在一个单位体积下的质量。被称为Density(密度) ρ.在RealFlow中,密度是核心参数之一。密度直接影响一个物体行为-无论物体是流体粒子或是一个水桶在水面上漂。

密度定义为这样:

ρ = m / V

这个方程可以被理解为"密度是每单位体积的质量"。

1.3.3加速度(Acceleration

当你驾驶汽车,骑自行车或乘坐火车,都会有加速度。加速度会一直让物体运动。对于这个过程,是需要一定量的力。如果力和质量是不变的。我们可以说恒加速。在这种情况下,速度的变化在每时间步长是一样的。使用变化的力,加速度也会有变化。如短时间内有非常高的加速,我们就称为是撞击。

重力加速度你肯定知道了。这是一个恒定加速度。观察一个自由落体(没有空气阻力),我们可以看到所有物体是同时下落的,尽管他们质量不一样。对于质量的独立性,这是一个非常重要的发现,因为不可能通过增加物体质量来让它"更快"!

随着不停的加速,物体会变得越来越快。我们也可以说,速度是不断增加的。加速度越大,最终速度会越大。加速度不是恒定值——它可以在不同时间步长有变化,增加或是降低。

1.3.4 Velocity(速度)

速度v 是指一个物体在一定时间 t 内运动的距离 x。从定义中我们可以得到以下计算公式:

v = x/t

这个小小的方程式是匀速直线运动。有其它公式来描述加速运动或减速运动,还有圆周运动。

速度v国际单位是m/s(米每秒)。速度可以指定给任何运动的物体。在RealFlow中,速度起到重要的作用,不仅对刚体,也包括粒子。RealFlow Python面板都有函数直接读出粒子与物体当前的速度。速度在所有物理单位中肯定是最出名的。你现在肯定知道,因为每天经历的事。只要有一个参考点我们就可以估算速度。但却很难去估算力或加速度。我们大多使用这些值进行比较,像"汽车A比B有更高的加速度"。

1.3.5 Friction摩擦力

当一个物体运动时,同时也会有摩擦力。摩擦力是物体表面参数:光滑材料,像玻璃或金属摩擦力要比木头或石头摩擦力低的多。在自然界里,我们可以观察到不同种类的摩擦力,像空气阻力,静摩擦或动摩擦力。空气摩擦力强度取决于周围介质。通过上些描述我们知道摩擦力也是一种力。有一个通用的表示法:

FR = F (N) * μ

μ为摩擦系数,而F(N)被称为法向力。法向力要单独计算。(normal force:沿法线方向的力,也叫正交力)

1.4结论

现在,我们学到了很多关于动力学的基本单位。当我们谈论刚体动力学时,我们将不断的遇到这些术语名词。因此,绝对有必要尽可能简单的讲解一下,让你对些物理单位有一些印象,或加深一些印象。

你应该注意到上面那些物理量都以某种方式关联到一起。速度取决于加速度,力取决于质量,摩擦力取决于力。这些相互关系可能会很复杂,但你不必在意这些,因为RealFlow已经为你解决了这些麻烦。尽管如此,知道这些基本参数也是一件很好的事。

通过速度甚至能帮助你渲染出运动模糊。运动模糊(Motion blur)翻译成光学位移运动。如果一个物体运动速度比照相机的快门速度快,这个物体就会变得模糊。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图3.场景中多个刚体的运动模糊

1.5激活刚体动力学(Activating Rigid Body Dynamics)

RealFlow为我们提供了所有需要的动力学属性。理论上来讲,我们甚至不需要从别的三维软件来导出几何体,因为使用RealFlow自身的模型会更好。见一下RealFlow基本物体之一,添加一个Cube到新场景中。

Edit > Add > Objects > Cube

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索> Cube

Node Parms (节点属性)面板为Cube01对像显示出了Dynamics标签,我们可以在这三个里选择。(译者注:RealFlow5版本之后有四个标签,增加了passive rigid body)这个标签仅用于激活对像,就算是导入进来的SD文件或其他类型也都可以(如OBJ,DXF,LWO等等)。Daemons(辅助器)和发射器(Emitter)没有提供这个菜单。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

为了进行下一步,我们选择Rigid Body。选择后,会立即出现一个新的面板,也就是Rigid Body。在这个面板里,我们发现需要定义一个对像的动力学参数,如图4如示。第一个选项,Primitive,描述了模型边界如何处理,或说使用什么代理物体。(RealFlow5之后版本面板有所区别,换成了 collision geometry 并且把Plane换成了Sphere)。你需要知道的是:越简单的基本形状,计算起来越快,当然精确度就会变低。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图4.Rigid Body下拉菜单下的基本形状

可以看到上面提供的基本形状。对于我们的小项目,Box是最好的选择,因为我们使用的是Cube。正如你看到的,Collision side选项变成灰色了。这个功能仅在使用Mesh并且模型面法线方向确定后,才能激活。使用错误的面会导致穿插和粒子穿透。正确的选择会提高模拟速度。

RealFlow内部模型,Dyn motion(动力学运动)是默认激活的。如果这个设置是Yes,所有参数以@开头的,都可以使用。这些参数关系到真实性和精确的动态。最重要的功能当然就是@mass,因为产生的力F直接依赖它:F = m*a. (RealFlow5版本之后面板上没有Dyn motion应该是默认开启。译者猜测如果关闭,就是被动????)

RealFlow默认会根据场景给物体生成一个@mass值。当然,你可以自由修改这个值。如果场景包含多个对象,尽量让质量相等。因为场景中物体的质量(@mass)差异太大,会导致系统不稳定,和其它有害影响。但时如果场景中有许多物体时,细微的质量差别会产生更好的模拟结果。

@ air Friction: (空气阻力)代表阻止物体运动的力。它参数取决于物体形状,大小和速度。简单来说就是:物体速度越高,空气阻力就会越大。你可以很容易证明这点,在汽车行驶时,打开窗户,并伸出手感觉不同速度的感觉。张开手后,也会增加空气阻力。这是因为受力面积变大。

当你看下图@ air Friction是非常小的值,因为空气通常是被看作稀薄的介质,没有太大的影响。但值设置太高后,这个力会导致物体停止运动。(阻力太大了)

@ energy threshold: (能量阈值)参数。可以让你定义这个物体,在什么时候受到场景中的力。这个阈值参数主要为了加快计算时间,因为低于设置阈值的运动不会被计算。(请注意RF5过后,不再提供这个参数,应该是由RF自动判断了)

@CG:是Centre of Gravity(重心,重力中心)的缩写。该值直接通过RealFlow计算,分析物体的几何中心。重心会强烈影响物体在运动中的方式。通过改变球的重心,运动将变得不一致,有点像鸡蛋。

@Velocity:是最重要的值之一。使用@Velocity是可能定义物体初始速度。有时在开始时不想使用静止的物体。设置@Velocity大于0,你并不需要任何外部的力,就能使用物体移动。

@Rotation W: 是物体最初旋转。在有大量物体时,使用这个值,会让不同物体运动不会那么整齐生硬。

@ object friction:(物体摩擦力)造成减速。当你在一个物体上移动另一个物体时。如,一个橡胶轮胎在街道上滚动,摩擦力就会阻碍轮胎运动。

在真实世界,表面光滑程度决定了摩擦力大小。粗糙的材料,像木头或沙子就有很高的摩擦系数。而光滑的材料(如抛光的金属,玻璃等),摩擦力系数就很低。使用@object friction后,能使物体停下来。摩擦力对各种运动,甚至是粒子之间是很重要的。

@elasticity:。这个参数使物弹起。在运动时,刚体失去能量。另一方面:弹性随着时间越来越小。使用值为1.0时,是理想中的弹性,不会损失能量。值小于1时,会产生如下图典型的运动曲线。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图5.弹性物体典型的运动曲线

但就算@elasticity设置成1.0,物体还是会一段时间后停止弹跳,因为空气阻力和物体摩擦力还没有消失,会减慢运动。如果没有任何阻力时,小球就会一直反弹,Forever……

1.7 多种交互类型

RealFlow提供了多种可能的交互,不局限在刚体之间。它可以用流体冲刷刚体或在RealWave表面面模拟漂流。也允许柔体与刚体的交互。 RealFlow不同类型的解算器在一起计算是非常强大的。下面是刚体支持的交互类型:

 

刚体-刚体

刚体-柔体

刚体-流体

刚体-RealWave

刚体-柔体-流体

刚体-柔体-RealWave

刚体-柔体-流体-RealWave

一个特殊的交互形式是刚体与Constraints(约束器)。约束器让你模型之间有特殊的关联。正如你看到的,它能产生各种关联运动。(关于约束器问题,本系列文章,会专门讲到它。)在RealFlow的优势是,你可以跳过选择的对象,动态反应甚至粒子。这个功能可能使流体和运动根据你的需要。实现另人惊叹的视觉效果。

添加流体或RealWave面到刚体场景后,会发现Node Params面板提供了多种新的设置。如下图,你可以看到整个基本参数。在本章,你将会学习如何使用大部分的参数。

交互的另一种方式,是可以与辅助器。这些辅助器和力到场景使用模型,粒子,和波浪运动。辅助器可以影响Constraints(约束器)。因为辅助器是刚体动力学的核心功能,他们可以被单独处理。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图6.多种类型刚体动力学参数面板

粗略的看一下,很多参数值看起来很大。我们集中注意力在一个或两个Node Params 面板。particle Interaction和RealWave 基本影响Emitters和波浪面,虽然只有很少的可调节参数。铭记一点:我们能很容易的处理大部分设置

1.7 Scale(缩放),Substeps(步长),Stacking(堆栈)

对于流体,scale的影响是非常明显的:添加更多的粒子到场景中,能产生更高的细节,因为mesh没有斑点状外观。对于刚体动力学,内容并没有那么清晰。力应该在任何Scale下相同,因为这是是全局影响。在自然界中的确是这样,但在计算机科学中,我们只是尽可能好的去模拟自然行为。

设置后的结果是RealFlow的交互解算器可以在一个确定的缩放值(scale)下更好的工作。另外得要注意质量(mass)。缩放增加后,RealFlow会自动增大质量。只要你改变Scale,强烈建议你检查一下模型的质量。

 

第一步是在你喜欢的三维软件中调节场景缩放。这不仅对于刚体,对流体模拟也是很重要的。使用不适当的scale,导入的模型会出现过小或过大的情况。你可以在这里具体的设置scale:

realflow > Preferences > General > Default scale

(RealFlow5版本后,scale细分了,有Geometry scale

Daemon force scale for particle fluids

Daemon force scale for grid fluids

Daemon force scale for objects)

对于XSI,Lightwave,和Maya,场景缩放是1.0.对于Cinema 4D,它要设置成0.01。对于3ds Max,没有那么轻松:默认缩放是0.01,但也可以是1.0或0.1。这取决于你的场景设置。对于3ds Max,浏览RealFlow 主页获得更多信息

http://www.nextlimit.com/realflow/f_connectivity.htm(无法访问,有搜索到相关可以提供给我)

http://www.nextlimit.com/realflow/faqRealFlow/faq.php(无法访问)

一旦在三维软件缩放比例设置正确了,我们就可以调节刚体动力学了。解算器的最适合大小是,模型跟RealFlow的网格差不多大。当然它可能对大部分场景不适用,但你应记住这个提示。请看一下Carlos Pegar的提示(下面一篇文章会讲到他,是Next Limt公司刚体解算器开发者)

要让scale适合你的场景,不需要每次在Preferences( 预设)面板改变Default scale(默认缩放)设置。RealFlow提供了一种可以在任何时候改变的方法,跟全局设置无关。有一个小编辑器,File Edit 工具条旁(RealFlow5版本后,在Simulation opation设置中)你可以在这里直接输入你想要的值。请记住,scale改变,会影响粒子的数量,你需要合并场景(流体和刚体)。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

另一个非常好的改进模型的方法是调节mass(质量)。质量间的巨大差异会导致异常行为甚至崩溃。这并不意味着所有质量都要相同-它只是一个建议。还有要避免极值,特别是地面或地板,往往有质量有1百万甚至更大值。降低该值会产生更好的结果。另一个作用是,模拟变得更稳定。

纯刚体动力学的场景,它建议使用固定的Substeps(步长),而不是使用(adaptive values)自适应值。你可以在这个子面板设置。(RealFlow5版本后,在Simulation opation设置中)

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

选择Option...,会出现一个新的窗口。这里你可以下拉菜单,称为Time Step(时间步长).只要改变默认值为Fixed(固定)然后输入新的值在FIXED Substeps.设置后模型将会更好的执行,也会变得更稳定。接下来例子告诉你,怎样调节这个值。流体-刚体交互,不建议使用(fixed substeps)固定步长(译者注:有流体参与的都最好使用Adaptive )

最后一个参数称作Stacking (RF5开始,这个参数就不见了。也就是不需要你来考虑了。当然给测试可能会带来不便),它是在RealFlow4时引用的。Stacking是指明,任何时候物体碰撞或交互方式。特别是堆叠时,这个设置将产生更真实结果。但它也适合刚体-刚体交互。在复杂场景Stacking肯定要设置的比较高。简单的场景可能Stacking效果没那么明显。

像Time Steps,Stacking值可以在RealFlow的Options面板设置:

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图7:RealFlow Simulation options面板使用刚体设置

使用不同的Stacking值,会得到不同结果。使用低的值仅仅是为了测试,可能会导致错误解算。因此,更好调节最高级别。在图中,你可以看使用不同的Stacking值模拟结果。

尽管Stacking值的增加会加长模拟时间,但还是要尽可能的使用它。越复杂的场景,越高的质量级别,真实反应不只是对单个对象进行计算。解算器会分析整个场景,找到适当距离。使用更高的Stacing值,对复杂的模型更有好处。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

1.8更多关于刚体的注意点

在物理学中,试验与方程应该产生相同的结果。在现实生活和实验室中这仅仅是理论上的,因为不可能保持所有参数完全精确。压力和温度总会有或多或少的变化。这些变化会影响最终结果。因为这些原因,科学家引入统计方法来消除差异。最常听说的就是平均值。

在计算机科学中,我们假设,很容易达到理想中的条件。我们使用精确的相同质量,温度,空气摩擦力或真实值。更进一步,我们刚体是物理上完美的。表面不会改变,也没有热膨胀。

这些所有前提条件,结果会产生各不相同的模拟。下图显示了混合结果,从两个模拟,使用十分精确设置。但是有区别,因为你可以看到稍微的模糊和重叠的边缘:

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图8:相同的初始设置-不同的结果

这种差异的原因是RealImpact(真实交互)复杂性。还有一些小错误,造成这种多样性。目前不幸的是,这是一个根本问题,不是预期想要的???(surpressed)Next Limit公司正在研究这个问题。因为这些差异很小,并不会给你工作带来什么问题。

对于很简单的场景,这种差异几乎是看不到的,但对复杂的场景,使用成百上千个对像上,将会出些细小的差别。"超级立方体"图8,由512个独立模型。

刚体-刚体交互

在很多情况下,碰撞检测似乎不起正确作用。由于这种现象不可预测,这很难解释,但也有一些可疑的参数:

Substeps (步长)和Stacking(堆栈)

Object 和 scene size(场景大小)

fps(帧速率)

Velocity(速度)

Geometry(几何体) 和模型复杂度

Substeps和Stacking是模型穿插的主要原因。大部分的项目需要更高的Substeps 值。

Stacking 还影响计算。通常在你激活Stacking后不需要太高的Substeps,但这在你场景也是一个问题。

在一个适当的Substeps,可能解决几乎所有问题,关于刚体-刚体交互。当然计算时间会随着Substeps增加增加。但类似模拟粒子,我们得在效果与时间之间做一个权衡。

另一个非常重要的因素是当前帧速率。如果你想模拟12或15帧每秒,你需要更大的substeps。

很高的初始速度或更高的力也会导致问题。尽量使用适度的值。一般情况下,夸张的值通常会产生不稳定和穿插。这些问题也能在使用很高的值后解决,但它是不可能任意增加这个值的。

正如你看到的,它有时是一个真正的挑战,在模拟和速度精度和规模之间找一个平衡点,通过刚体很少的参数调节。测试和调整是关键,非常复杂的场景,这是非常有可能的,我们面对很长的渲染时间与很多的模型。

另一方面,RealFlow允许我们精确的物理模拟。特别是Stacking 属性能产生自然的动态。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图9:失败的碰撞检测,从而产生穿插

RealFlow动力学解算器另一个优势是有意义的参数值。我们不需要很多单独设置来达到真实的结果。在大部分情况下,它只要改变@mass,@friction和@elasticity这三个参数,我们就完全可以控制效果。

正如前面说过的,RealFlow解算器真正重要和强大的地方在于支持多种类型交互的能力。流体可以破坏刚体结构,刚体可以与柔体交互,甚至浪面与能与刚体或柔体交互。CG三维世界中这种交互是非常独特的。我们可以通过Python脚本几乎能控制所有属性,真的非常方便。

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

图10:刚体浮在浪面上与一个约束器交互

1.9 译者补充:关于RealFlow 缩放(Scale)问题

问题来源:

工作时经常需要在不同软件之间交换数据(导入导出模型等)。但不同软件之间基本单位可能不一样,这时就会出现,导入后物体缩放问题。

个人总结:

因为通常一个项目在制作前一个很重要的事就是确定场景单位。不要说建筑和工程设计这样,精确到毫米的了。就说一下,CG动画相对不太严格的情况。无论是场景还是角色建模,都需要一个正确的比例关系。而如果同一个场景中,不同物体使用不同的单位,就会造成混乱。动力学解算(Dynamic simulate)(包括,刚体(Rigid body),流体(Liuqid),毛发(hair ),布料(cloth simulate),还是粒子(particle simulate)等)时,单位统一也很重要,因为很多,几乎所有解算器都是根据自然仿真来设计的,也就是说,它的参数,都跟现实有重要关系。我们在初中物理上有参考系的概念,单位就是这个意思。如果你生活在"米"的世界中,突然跑到了"厘米"的世界,那你就会变成一个巨人。

这里主要针对Maya,Max,RealFlow模型导入的情况总结以下几条:

1.三个软件中的,网格(Grid)一个空格都代表,相应一个单位。如在Maya中,一个空格代表一厘米(Centimeter).RealFlow中一个空格代表一米(Meter)

2.Maya,和Max都可以设置改变单位。做项目时,第一步肯定要检查这个。如果不同软件单位统一了,那么就不会存在导入导出的问题。

3.RealFlow单位默认是米,无法更改。(因为所有流体或刚体解算参数都是照此设计的,如果改掉,参数就很难调节了。它不是简单的线性关系,说你单位扩大一100倍,我参数也扩大100倍来调节,这肯定不合适。流体动力学中大部分是非常复杂的非线性关系。可能单位改变100倍,一个参数就得变成800或455倍来调节,这不好轻易确定。

RealFlow提供有一个尺子工具,可以检查物体的单件大小。(当然,单位是可以改成美国制或日本制,但都是以米换算的,实际还是没有变)


第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

下面详细说一下这个关系图

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

1.默认情况下Maya设置是厘米,Max和RealFlow是米。

2.所以Max导入模型到RealFlow中是没有任何问题的,Maya导入RealFlow时,物体就会变得很大(因为Realflow把maya厘米当成米了,本来10厘米,现在看到是10米)

3.RealFlow 产生的(SD,或粒子Bin)文件会自动解决单位问题。所以你可以放心导回Maya或Max中,大小还是一样。

4.RealFlow Scale Option

第一节:简介 - 豆芽兵 - 豆芽兵的生存探索

这个工具一定程度上就是RealFlow单位转换工具。但你看到,改变它,很多参数都会变化。最容易看到的,Geometry scale变化后,物体Mass属性就会产生变化(其实整个RBD面板都在改变)。可能我没有完全理解透,我通常不会去动它。

  评论这张
 
阅读(2635)| 评论(1)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018