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

豆芽兵的生存探索

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

 
 
 

日志

 
 

第四节:多米诺效果(Domino)  

2013-03-18 17:57:12|  分类: RealFlow探索 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

第四节:多米诺效果(Domino)

4.1 基本多米诺案例

你有没有试试在网络上,搜索一些关于刚体的资料呢?如果你搜索过的话,一定会注意到一个共同点:就是,能看到关于自由落体或是碰撞的动画来展示刚体。有些场景很复杂可能有好几千个物体,而大部分都是很容易重要制作的。一个典型的场景就是多米诺骨牌。我也想用这个案例,因为这容易理解,并且易于排列。它完全能体现出 RBD(刚体动力学)的基本原则。另一个优势是,所有人都能想像出这样的场景——结果容易预测。请打开场景文件 :

Domino > DominoRow.flw (自己动手做一套吧。据考证,标准骨牌高宽比为2:1.我使用的高宽厚度值为4,2,0.8)

 

(译者注:本文测试是使用的RealFlow4)

文件包含了20个骨牌,并把模型激活为刚体(Active rigid body),还添加了一个Gravity Daemon(重力场)。指定一个骨牌,用来开始时推倒。只有这张骨牌是预先做好动画的,其余骨牌的动画都将通过RealFlow的刚体解算器(RealImpace solver)进行自动计算。

 

第一步是使用场景默认值进行测试。在RealFlow中导入三维软件中的模型时,RealFlow会自动计算它们的质量(mass)。自动计算的质量非常高,并有很大的差异。把Time step设置成Adaptive,Stacking是关闭的。这是为了让模拟更快更平滑。一百帧后,模拟结果与下图相似:

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

我们看不到有任何穿插,模拟的动态正是我们预期的。你可能会想,前面章节讲的那么多到底有什么用呢。关于Stacking和Substeps,mass和Fps,这些都没有用吗 ?当然不是,多米诺的例子只是使用了非常简单的方盒子,模拟的力并没有变得非常大。这个场景可以手动处理,没有任何问题,但Stacking激活后,我们会观察到第一个问题,如下图。如果把substeps值设置很大,将解决这个问题。(RF5之后版本无法模拟这个问题,因为Stacking一直是激活的。)

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

图13:激活Stacking的多米诺场景

最后完全取决于你自己,是否使用Stacking。我个人认为最好在任何模拟下都激活它,因为Stacking会让刚体动态更自然。但这这也仅是我个人感觉问题。

4.2 优化场景

现在多米诺效果的动态已经不错了,但还有一些简单的方法让模拟更好一点。一个很重要的因素肯定是Initiator(初始)物体。这里已经调节的非常好了。第一张多米诺骨牌作用,就像你现实中推倒多骨牌的手指。使用较高的速度或突然的动作,让骨牌突然翻转。有时这样做是可以的,但现在我们想创建更流畅自然的运动。

 

使用不同的mass(质量),friction(摩擦力),和elasticity(弹性)值,会让效果更真实。甚至是空气摩擦(air friction)力,因为空间是不均匀的介质。空气的密度和温度有微小波动。影响可能是微妙的,但在大自然中就是样。如果想做一个非常写实的效果,考虑到这些微小的变化是至关重要的。一个场景中有20或50个模型时,可以手动一个个调节,可如果要改变几千个参数,手动操作就太浪费时间了。Python脚本可以完成这样的重复的任务,只要几秒钟时间。(本系列最几篇会有对这个脚本更多的一些资料)

 

对现在这样简单的场景,还不需要使用到Python脚本。我们可以很容易的在Node Param窗口改变这些值。

另一个非常重要的因素是骨牌间距。排列骨牌时,尽量宽松一点。骨牌间距大小不要完全一样,最好有一点变化。所有这些小的细节,合到一起后,就会对最终结果产生巨大影响。只有几个物体时,影响几乎可以忽略,但它有助于我们摆脱人为的统一不自然感觉。

 

如果你是通过SD格式文件导入RealFlow,模型将会锁定,你不能移动他们。

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

点击SD<->Curve,就可以改变模型位置旋转等参数了,而不是在三维软件中重样再导入导出一次

4.3 复杂一点的多米诺

现在我们仅使用一列骨牌排列成直线。如果我们增加到几百个,排列更复杂的图案?RealFlow还能处理这样的情况吗?

4.31 准备(Preparation)

从三维软件导入骨牌到RealFlow之前,我们得注意一下面几个注意点:

Naming(名称)

Grouping(组)

Triangulation(三角面。RealFlow5版本后,接口会自动转化为三角面)

Proxy Geometry(代理几何体)

 

名称是刚体动力学最重要的一项。实际上命名不是很困难,但往往会导致本可避免的错误和失败。特别是有很多对像时,一定要有合适的命名。命名应只能使用这些字符:

 

A-Z,a-z,0-9,和下划线_

 

永远不要使用特殊字符,括号,空格,突变的元音(mutated vowels ,不明白这是什么意思)或点号。点是一种特殊情况,因为RealFlow把它在Python脚本中做为保留字。所以避免使用点号。在很多情况下,特殊字符为作RealFlow内部使用。如果命名有错误,当把模型到三维软件中时,插件可能无法找到相关对象了。最好情况下,是动画不能播放,最坏的是,程序崩溃,文件损坏。RealFlow名称规则与大部分软件一样。

 

打组是直接关系到命名的。组对像可能会被RealFlow重命名。所以,在导出前,不要使用解散组(ungroup)。

 

RealFlow需要三角面(triangulated)对像,因为有一些三维软件是使用的四边面(quadrangular).在使用到RealFlow之前模型必须要转成三角面。通常,RealFlow不会禁用四边面模型,但通常会造成一些致命问题。很多刚体的问题,可以追溯到缺失的三角面和/或反转的法线。使用三角面物体,还要避免法线正确。

 

最后一个可能的陷阱是,你得要考虑几何体的数量。在很多情况下,需要使用低模来做为高模的代理。不是必须要这样,因为RealFlow对复杂的模型也能很好的工作,但模拟速度会明显变慢。解算器使用代理模型比使用复杂的模型要更稳定,像Spheres(球体),plane(平面),或box(盒子)。对一些极端情况的特写时,最好使用原始模型。但甚至是这样,有时也会创建一个代理,放弃一些细节。

 

如果你想最终渲染,你肯定会使用你精心制作的模型,有很圆润的导角和边缘,甚至还要加上镂刻的数字,等。实际上,基本形状仍然是box。这些box就是代理,在 RealFlow中实际解算的是这些box代理。

4.32导出场景

这个场景,我创建多米诺骨牌数量是284个,形成一个蜥蜴形。这可能是一个动画公司的Logo。我为这个模型创建了个文件,包含了三角面的代理物体。我检查了所有模型名称,是连续的数字从000到283,避免导回动画数据到三维软件一些麻烦。我又花了几分钟检查了整个场景,可能会埋下的"陷阱",像法线,三角面或错误名称。这些检查工作会让以后工作更轻松,节省大量时间。

 

导出只是标准的使用RealFlow SD Export 接口。在这个案例,你只要检查Save all...,指定一下文件名和序列长度,点击Save就可以了。

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

对导出操作,我还有一点想强调:你并不需要输出整个帧。这只会增加SD文件的大小。如果没有动画数据,只要输出一个单帧就够了。其余的只要在RealFlow中做就可以了。(Maya 默认是24帧。把改成从startFrame 1到endFrame 1)

4.33导入场景

在RealFlow,你可以很容易的通过Import功能导入SD文件:

realflow > File > Import SD...

Strg + I (Win) or Cmd + I (OS X)

一会后,模型出现在Node和Global Links窗口。第一个任务是在Node面板选择所有模型激活Rigid Body Dynamics。下一步,在Node Params窗口调节@mass值。最后准备步骤是设置Substeps和Stacking。把Adaptive切换成Fixed,将Stacking关闭,做第一次测试。

 

让我们使用固定的Substeps值为25。模拟一些帧后,可能与这张图片非常接近:

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

红色的圆圈表示穿插的地方,结果肯定不会随着时间推移变得更好。也许Stacking参数将有助于我们:现在我们激活Stacking,值设置成2。模拟仍是非常快的,似乎很稳定的。但更多帧后,骨牌又开始相互穿插了:

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索
 

对于某些项目,现在的质量还不够好,例如镜头飞越跟随骨牌,相机运动结束后鸟瞰整个场景。特写镜头或高精度的镜头,我们需要更高的质量。由于Substeps是非常重要的值,我们试着首先提高Stacking。甚至把值打到8或10,问题仍然存在。它甚至变得更糟骨牌穿过了地面。唯一不需要的抱怨的是模拟速度还够快。使用RealFlow 4.3.8,解算器变得非常快。这将有助于在更短时间内找出最终设置。

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

现在目标很明确:我们必须要增加Substeps,而Stacking要保持在很高的级别。150 Substeps似乎很合适 。虽然第一个下落的物体计算很快,我们可以观察到速度明显变慢,在碰撞越来越多的对像后,特别是用旧版本的RealFlow模拟速度会更慢。

 

模拟速度不只取决于Substeps值,也跟模型的数量有关系。这个小的"多米诺蜥蜴",的骨牌靠的非常近。模型间距大一点,不仅计算的更快,最终动画将会更短。这有另外一个有趣的事:动画长度取决于你RealFlow版本。使用RealFlow 4.2。最后倒下的骨牌在283帧,当使用RealFlow4.3后,到达最后一张骨牌只要一半时间。另一方面,Substeps我使用的是200。而使用RF4.3版本模拟几乎花了五倍时间。通常来说,4.2与4.3差别是巨大的。(RealFlow2012,速度会更快)

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

图.14:RealFlow 4.3的283帧与RealFlow 4.2的283帧的比较

 

多米诺骨牌效应肯定是刚体动力学最常见的,因为它能产生非常有趣的结果和很赞的视觉效果。我们可以使用带数字的形状,形式,几乎有无限可能。即使是复杂场景也可以想像到,增加桥梁或隧道。在现实生活中多米诺效应也会偶尔卡住,停止运动。要绕开这个问题,建议改变一下质量。比方说,我们被堵到这儿:

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

现在,在这个"调皮的家伙"前面的五个或十个骨牌轻微增加一点@mass值。更高的质量将导致更大的冲击力,使得骨牌倒下。

第四节:多米诺效果(Domino) - 豆芽兵 - 豆芽兵的生存探索

这个改变要产生足够推动力,来移动卡住的骨牌。特别是很大的场景,多米诺骨牌,往往干扰。随着越来越多的精细的设置,我们能总结出。已经下落的骨牌mass有助于,推动下一块。

网络上有很好的多米诺效果。看一下,相关"domino"视频.你将会发现各种创意,你现在完全可以把这些创意在RealFlow中制作出来!从网络上,你可以获得一些有用的帮助,可以沿给定的路径放置骨牌。用这种方法来规划自己的"Domino Day"

对于Maya,有MEL脚本可以使用。尽管在俄罗斯,你可以使用翻译软件来学习这个教程:

http://www.render.ru/books/show_book.php?book_id=576 (此教程可以学习。还有关于贴图的方案)

对于Cinema 4D,例如,你可以复制自动得出路径,使用Along Spline模式,可以在这看到资料:

http://www.c4dcafe.com/ipb/index.php?showtopic=23824(链接对应页面失效,但主站可以访问)

(通过学习这篇,自己手动建立一个一Cool的多米诺效果。甚至可以是立体的。)

  评论这张
 
阅读(1363)| 评论(0)
推荐

历史上的今天

评论

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

页脚

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