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

豆芽兵的生存探索

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

 
 
 
 
 

日志

 
 

第六节:倒塌破碎  

2013-04-01 17:56:54|  分类: RealFlow探索 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

6.1倒塌无所不在

倒塌破碎是刚体动力学的另一个重要领域。在今天的VFX行业中被广为使用。就连Next Limit公司为Realflow做的Demo中也一直留有崩塌破碎效果。

当我们谈论倒塌时,一定要记着,只有存在某种不稳定的因素才能使稳定结构(结构,可以指一栋建筑,一堆积木,一座大桥等等)崩溃。这种不稳定是由外力作用在一个或多个物体上。换句话说:要产生倒塌效果,我们必须做一些事使结构不稳定。如果你玩过积木,一定有很多办法使积木倒塌:主要方法是在底部移除一个积木块或更多部分,还可以让另一个物体撞击搭建好的积木。

这个思路可以很容易转化到到RealFlow中。例如可以使用一个小球来撞击。我们可以使用辅助器,初始速度或初始旋转来产生初始动画。也可以预先做好动画路径的方法精确控制碰撞受影响的部分。

6.2积木

这个玩具非常适合于解释,建筑物崩塌的基本方法和概念。建议使用一个简单的场景来进行测试,这是学习新知识的好思路。稍后,我们看一个更复杂的场景——摧毁的墙壁并伴有有碎片和灰尘。

现在这个场景,我选择一个包含基本结构的例子,复制两次,但贴图不一样。积木总是有圆角的。关于细节方面考虑,由你自己来决定了。撞击的物体是一个球。(后面我就称为"撞击球")

圆角需要更多的面,因此我们使用代理场景到RealFlow中。低模使用,这不是强制的,但这是一个很好的锻炼。要使整个场景更生动一点,我添加几个其它对像。在我们导入到RealFlow之前,要记得检查:是否所有模型是三角面,法线是不是正确的。

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图.22高精度场景设置

6.2.1场景设置

在RealFlow中,场景导入是与其它案例导入方法相同,使用Import...对话框。激活所有对像的Rigid Body Dynamics。这里我们可以使用Sphere,Box和Mesh。使用相当小的场景缩放,就不得不调节@mass,要防止模拟有异常。特别是太轻的物体会产生很大的加速度,产生异常的运动。

另外,很容易忽略的因素是摩擦力,这个值能提供某种意义上的的整体结构强度。低摩擦力会导致夸张的动态,而更高的设置会需要场景提供更多能量(因为摩擦力太大,会吸收更多能量)。为此,我倾向于使用值约为0.7。

真正的积木弹性不是很强,所以最后把@elasticity减少到0.1到0.3之间,地板弹性也不要太大。软的或蓬松的物体会吸收能量,因为他们在反应时会改变形态。在本案关于这点将被忽略。

最后一项,我们关注的是sphere(作撞击的球)。最重要的参数是@mass。撞击球不会太重,只是反弹到积木上,不会保留痕迹。质量必须大到能撞塌整个结构。测试后才能知道合适的值。缩放@mass可能会有另一个效果:相互穿插。使用更高的质量,我们要增加力才能给物体产生更大的加速度。所以,发现有穿插,减少球的质量,提高Substeps或增加其它物体的质量。

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图23:撞击球的设置细节

即使没有定义初始转动,摩擦力也会使得球在地面滚动。friction值在在0.3到0.5之间。使用更高的设置,我们会失去太多的能量甚至会导致球停止运动。

现在,添加Gravity Daemon,就使用默认值。打开Export Central,点击Select None 检查ANIMATION(.sd)。仅适用于记录单个对像的动画数据,有必要存储单个文件。

6.3寻找完美的撞击

最后,我们得决定球到底撞到哪。你可以使用关键帧动画,也可以使用@Velocity值来生成做球的运动。大多数情况,我都使用@Velocity,因为当球随着时间慢慢加速,看起来更有动感,最主要是比较方便。第三个方法是使用Cache设置。当设置Cache时,物体会把动态输出到外部文件,也就是缓存。

Node Params > Simulation > Cache

你首先可以在Active模式下模拟,然后设置成Cache模式。这个设置特别适合使用已经模拟好的轨迹改变目标物体状态。

测试时,不需要太高的Substeps。在25左右,差不多就够了,因为我们只为了找出最好的碰撞角度。如果你决定使用Stacking,在开始时激活它后,就不要改变它的值,直到你想得到完全不同的模拟。经过一系列碰撞与不同设置,我找到了"我想要的"碰撞,保存下来。

正如你从这个案例看到的,刚体行为像真实世界中。其结果不可预测,微小的改变导致巨大差异。关于设置值,唯一能给出的就是使用范围内的值,而没有精确的固定值。此外它是一个个人感觉问题。可能有一个模拟,你非常喜欢,但你的客户会有不同的看法。刚体模拟就是测试和尝试,类似于流体。

倒塌模拟设置是非常有意思的,你可以尽情实验,当然除了一些科学上严肃的模拟。另外使用慢动作设置,你会创建一个很有冲击力的效果。

6.4保存不同的模拟结果

RealFlow 有一个简单的方法来存储,这些不同测试值得到的动画数据。使用这个功能你可以并排比较或快速把不同模拟,给你客户看。要使用这个工具,到Export Central,改变ANIMATION(.sd)文件名:

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

首先重置你的场景,否则旧的名字会被覆盖掉数据。左击"animation"输入所需要名称,回车键确认。

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

现在就可以保留之前模拟的数据也可以输出新的文件。

在如下图中,看到六个方案,使用不同的摩擦力设置。这个参数影响是巨大的。也就是说根本没有统一的值。我们得比较不同模拟来根据需求决定,我们要使用哪个,或客户最喜欢哪个:

1.是否有夸张的动态?

2.所有运动是否自然平滑

3.你能不能看到穿插物体?

4.有足够的分支(diversion,分流,转移,。。。)在你场景吗?

5.你能看到所有或大部分物体在最终摄像机中?

6.是你最喜欢的吗,你想呈现给客户看了?

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图24.使用不同的摩擦力,产生不同的结果

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

6.5 破碎的艺术

乍一看,砸破一堵墙太容易了,但实际要考虑很多东西。最重要的问题是建模,你到底想破成什么样的?规则的砖头或不规则?墙上有没有涂料?你想生成碎片和灰尘吗?当物体撞击到墙上时,你想要指定的砖头破碎吗?

所有这些问题都能让你的动画效果看起来更真实。制作一个看着还不错的简单规整的墙不是太困难。但这个模拟更适合简要的教程和学习。在后面有更好的一些学习案例,使用RF3和RF4制作,一些老用户一定还记得。

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图.25:使用ReaalFlow3进行的破碎。图片来源于Next Limit技术团队

使用之前案例的经验,你可以使用类似的方法重新制作这个场景。原始的Next Limit视频包含了这个问题,作为本书参考(但本人没有得到这本书源文件,如果你有希望共享一下

6.6 破碎表面涂料

在这个例子中,我们想达到更高级别的真实效果。这也是为什么我们在前面要问,墙上有没有涂料层。一会你就会看到这个额外的层会带来多大的挑战.

需要的工具和软件

在本案例,要使用到3D软件。那些三维软件知识肯定是你已经掌握的。可能要花更多时间来制作的精确一点。我们还需要下面的软件:

Adobe Illustrator CS 或更高版本

Adobe Photoshop 3.0 或更高版本(可选)

 

打开Adobe Illustrator,定义合适的大小,在RGB模式创建一个新文档。现在添加一个矩形(1),可以使用2:1比例。下一步是制作一个"洞",当撞击墙时,墙上的那个洞。使用Illustrator的路径工具(2),我们可以绘制适当的形状。

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

复制洞的形状路径,保存。我们一会还需要它。剪切新的路径从下面矩形:

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索
第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图.26:在矩形上面定义洞的形状

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图27:...把它剪切出来

现在我们有一个路径,就是物体撞击墙后留下的洞的形状。要防止不想要的改动,选择做好的路径并固定它,使用Ctrl +(Win ,有待考证)或Cmd +2 (OS X ).

在下一步,我们想创建涂料层部分。碎片一定要很好的贴在洞上。按下Ctrl +F(Win)或Cmd +F(OS X)来放置和复制洞路径,精确的在这个位置。结果很精确。如图26所示。裁切出来重叠的线,在基准线,使用新的矩形,和Pathfinder tool(路径搜索工具,待考证)。现在,线匹配的很好,如图28.额外的步骤是必须的,要避免在三维软件中挤出问题。

图28.结果路径在裁切后分离重叠线。

保留插入的线,选中并从工具栏中选择Knife(剪切)工具

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

剪切工具有一个决定性的优势:它能分离一个区域到一个单独的路径,我们可以输出和挤出。这个面是完美的粘贴在一起,几乎没有任何空隙。现在只要"绘制"一个网状形图案,来生成破碎片。最终结果看起来如图29:

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图29:绘制一个基本网状形图案

在这中间我们能看到反应部位。开始从表面中心部分,然后慢慢所有都破碎掉。

基本形状差不多就做好了,但需要更精致。再次使用Knife工具,我们添加更多的细分。

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图.30:更多细分后的结果

在最后一步,我们需要清理重叠或错位的锚点。这也可以在3D软件中进行。模板准备好输出了。你可以选择另一个EPS或Illustrator的通用AI格式。可能你选择一个更老的版本,例如Illustrator 8或10。

Tips

1.使用Knife tool小心达到更好的控制路径。慢点移动

2.尝试产生封闭曲线。需要时使用Magnifying 工具

3.设置显示的前景色。有助于你更轻易的选择单独的锚点

4.撤销的功能使用不要犹豫。(Ctrl/Cmd+z)为了画出更好的路径。

一切都准备好了没?OK,载入网格线到你最喜欢的3D软件吧。一些软件导入曲线会自动生成一个组(group)。解除组(ungroup)。另一个很重要的事是,从大纲视图看下曲线。重命名为像Wall.现在挤出这些破碎的片,墙上的涂料层是很薄的(但不要太薄)。

6.6.1 导入和优化

不幸的是,很像我们制作模板线一样,我们要在3D软件中手动做一些调整。可能有一些路径我们得要替换或重建。但考虑到我们是很复杂的曲线结构,这是可接受的。下面截图是原始的和清理后的面:

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

当然,整个结果要默认生成Polygon。最终的质量取决于你3D软件和你前期所花的工作时间。在很多例子中,有一些很小的洞和裂缝留下。。这些不足可以使用一个合适的纹理贴图弥补。如果需要更好的质量,,通过移动反转相关的点到正确的位置你可以消除这些裂缝。根据错位点的数量,整个工作需要花费一些工夫。(译者注:上面这么多步骤其实就是为了制作破碎的面片。现在技术有了发展,可以使用一些插件自动生成碎片方式。在Rayfire或PullDownit都有默认的方式来生成这种破碎。然后简单做一些调整就好了。当然上面方法是最自由的

现在最繁琐的部分完成了,我们可以在涂料层后创建砖块。我们不需要整个模板填充砖块。砖块生成区域在洞周围,也有一些砖块要保持静止。为了示范,只有一个基本的房间,模型在撞击区周围。

建模完成后,选择所有对像转换成三角面,如果必要的话。强烈建议检查一下法线。最后,导出这个场景。

6.6.2 在RealFlow中的工作

打开RealFlow,,创建一个新的场景,载入之前导出的SD文件。有点耐心,可能有点慢——特别是有许多碎块物体时。可能会看到有提示,说有一些面有错误。万一这样,可以回到3D软件重新建立这些几何体。如果不是很多的话,也不太严重的话,可以忽略掉。

第一个任务是给碎片和砖块打组。也要给洞周围静止的砖块打一个组。到Export Centtral(输出中心)点击Select None,只是激活 ANIMATION(.sd),防止RealFlow读入几百个单独的SD文件。

接下来步骤是这样:

1.激活所有对像和组的Rigid Body Dynamics

2.为运动的砖块,灰尘部分和球,激活成Rigid body

3.设置合适的类型(Mesh或Convex Hull)

4.调节@friction和@elasticity

在一些案例中,质量(mass)是非常低的。如果能注意这个动态,必须要为整个组改变@mass属性,或单独为每个物体,使用脚本。因为砖块有同样的大小,我在组中全局改变@mass。为碎块,我使用了一个小脚本,类似我使用在其它工程中的:

要使用脚本,打开Batch script窗口(F10

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索Layout > Batch script

Batch Script: ChangeMass.rfs

debris = scene.getSelectedNodes()
factor = 25
for object in debris:
old_mass = object.getParameter("@ mass")
new_mass = old_mass * factor
object.setParameter("@ mass", new_mass)

复制上面的脚本粘贴到这个窗口。选择所有碎片物体(不是组!)选择:

Script > Run

等一会后,所有物体参数设置好了,你可以继续使用Gravity Daemon了。撞击球有动画,可以使用初始@Veloctiy值或key帧。之前我做好所有设置了,可以来撞击模拟了。

6.6.3 怎样消除抖动

你会注意到物体,不久就会产生不想要的运动:碎片部分开始落到地面,然后突然移动,无法观察到为什么会这样。根本原因当然是重力。像"放松流体",重力让物体运动和下落。有很多方法,处理这个问题。有的场景中使用约束器(Constraints),另外使用初始状态,或激活/关闭刚体。

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

很愿意在这介绍另一种方法,使用两个Gravity辅助器。当撞击球撞击到砖头上就激活切换另一个辅助器(Simulation>Active/Inactive)。如果你的撞击球是key的帧,那就不需要另一个Gravity辅助器。如果你想让@Velocity值和重力来控制撞击球,就需要添加另一个辅助器。

在Global Links面板删除新的辅助器,拖动撞击球到Exclusive Links面板。现在获取Gravity02 对像 ,把它放到到Sphere项的Exclusive Links:

关闭Gravity01。很好解释,Gravity02只控制Sphere对像,让所有其它对像不会受影响。同时撞击球会受影响,中止模拟并设置Gravity02为Inactive,Gravity01为Active.继续模拟。这一时刻,所有能移动与其它反应。

如果你熟悉Python脚本,你可以使用自动版本在源文件中:

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

CollapsingObjects/Collapsing Wall/CollapsingWall.flw

最终,我们场景设置准备好了,可以继续,调节Stacking和Substeps模拟参数。要合适的质量级别,Substeps值范围在100到200之间。让值小于150,看起来砖块交互更好看。因为我们的墙有涂料层,最好使用Stacking值为10。几个测试后,得要调节sphere(撞击球)的@mass值。

在下面图片可以看到,这个效果一个经典的瞬间:中间,碎块有很大的加速度,形成环形破洞。

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索

图31:被撞塌的墙碎块有运动模糊

第六节:倒塌破碎 - 豆芽兵 - 豆芽兵的生存探索Tip:如果你遇到物体穿插的问题,你不需要重新模拟整个场景。中止模拟,回到还是正确位置的地方。备份当前SD文件,返回RealFlow。增加Substeps,从这个时间点开始计算,而不需要重置整个场景。

6.7 改善提高

这有两个改善场景效果的方法。使用Emitter(无论是RealFlow中还是3D软件中都没关系),你可以添加更多小碎块。第二个发射器,携带体积材质(volumetric shader),有助于添加灰尘,让场景更可信。

另外,另一个很好的用来提高模拟效果方法是贴图。动态贴图,显示在被破坏的墙上,是一个好主意。如你在上面图片看到,运动模糊加强了速度感。甚至相机移动有一个很大的影响对场景。在反应开始时,随机的相机抖动,也有助于效果更真实。

  评论这张
 
阅读(2058)| 评论(0)

历史上的今天

评论

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

页脚

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