今天我们将尝试一下制作物体撞击Realwave时产生的水花效果,以及如何使用脚本制作水花在生成Mesh时,与Realwave连为一体的效果。
先看下对比的效果:水花与水面不相融和相融的对比。
左图是物体落入水面后溅起水花粒子,并对水花粒子和Realwave生成Mesh后的效果,图中的球状物即为水花粒子的Mesh。注意对比两幅图中水花的Mesh和Realwave的Mesh之间连接的部位,左图是解算完毕后,默认状态下生成Mesh的效果,可以看到水花Mesh落入Realwave时,犹如固体物质落入水中。
但是,在实际生活中,水花和水面均由水分子构成,是同一种状态( 液态)下的同一种物质。因此在水花与水面接触的那一刻,水分子之间应该已经开始融合,如右图所示,该效果才更接近真实世界。
更重要的是,左图中由于水花的Mesh和Realwave的Mesh是分离的,因此在导入其他三维软件中进行渲染时,两种Mesh接触的部位会受反射、折射等参数的影响而产生错误的渲染结果,直接影响到作品的效果。
实现右图中的效果,需要增加一步操作,每解算-帧均需要将该步骤操作一次。这样的话,如果解算一个长达,几百帧或几千帧的序列就会非常费时费力,为了简化手动操作的麻烦,可以使用一个脚本来实现这一操作。
◎Step 01:打开RealFlow,创建一个Realwave、一个Sphere (球体)物体和一-个Gravity (重力场)辅助器。将Sphere ( 球体)修改为主动刚体,如图14-52所示,并将其提升至-定的高度。
◎Step 02:默认条件下进行解算,可以看到Sphere (球体)已经与Realwave产生了碰撞。
◎Step 03:解算无误后,对解算内容进行Reset(重置),并对场景进行保存,以免丢失。在Realwave菜单下选择Object splash (物体水花)进行创建; 展开其节点参数面板,设置Objects (对象)为Sphere01,拾取需要创建水花的物体。
◎Step 04:进行解算,发现物体落入水面时,已经产生了水花粒子。
◎Step 05:下面为水花粒子和Realwave生成Mesh。单击厦按钮,选择Particle Mesh(standard) [粒子网格(标准) ]进行创建。.
◎Step 06:在Nodes (节点)面板中的ParticleMesh_ ST01 上单击鼠标右键,从弹出的菜单中选择Insert emitters (插入发射器)命令,在弹出的Select nodes (选择节点)对话框中选择RW_ Object_ Splash01, 单击OK按钮,将水花粒子拾取进来,此时水花粒子就会出现在ParticleMesh_ ST01的子选项中。
◎Step 07:在Nodes(节点)面板中的ParticleMeshST01上单击鼠标右键,从弹出的菜单中选择Build, (建立)命令,为水花粒子建立序列Mesh。
观察效果,发现水花和水面是两个单独的物体,这样在Maya中进行渲染时,水花与水面交界处就会出现问题,所以需要将其进行融合。
◎Step 08:在Nodes (节点)面板中的ParticleMesh ST01. 上单击鼠标右键,从弹出的菜单中选择Insertemitters (插入发射器)命令,打开Select nodes (选择节点)对话框,将Realwave02也添加进来。
这里将Realwave也添加进来,是因为Realwave也是由粒子构成的,并且需要与水花粒子产生交互,因此两者都需要生成Mesh。
◎Step 09:可以通过以下方式观察到Realwave的粒子,选中Realwave,在其节点参数面板中展开Realwave项,将Particle layer (粒子层)设置为Yes,如图14-63所示,此时可以看到Realwave表面上布满了密密麻麻的粒子。
◎Step10在Nodes(节点)面板中的ParticleMeshSTO1上单击鼠标右键,从弹出的菜单中选择Build(建立)命令,建立Mesh,效果如图;若将Particle layer (粒子层)设置为No,则效果如图。
注意:只有将Particlelayer(粒子层)开启时,才能使水花粒子和Realwave形成-一个整体;若Particle layer (粒子层)处于关闭状态,则水花粒子和Realwave并不能够相融。这里还有一个问题,即便将Particle layer (粒子层)开启,事实上系统也只是默认在当前帧当前Build (建立) Mesh的情况下,生效一次。在当前帧进行第2次Build (建立)或移至下一帧时,尽管Particle layer (粒子层)仍是开启状态,实际上已经为关闭状态了,那么如何知道Particle layer (粒子层)是否真的打开呢?很简单,在Realwave表面上可以看到排列整齐的粒子时,就表示该项已经打开,生成Mesh时才能够起效,否则失效。
出现了这样的问题,解算时就变得繁琐了,不能再使用序列Mesh-次性生成,需要手动完成解算。将Particle layer (粒子层)关闭,再次开启,解算当前帧;手动移至下一帧,再将Paricle layer (粒子层)关闭,再次开启,解算当前帧;依次类推,反复操作,完成整个序列Mesh的创建。
如果整个序列有几百帧或几千帧,那么这么操作无疑费时费力。那么该如何解决呢?方法就是利用脚本,通过一个简单的小程序来代替这项单一、重复性的工作。
◎Step 11:执行菜单Layout>Batch Script (布局批处理脚本)命令,打开Batch Script(批处理脚本)窗口(也可以使用快捷键F 10直接调取该对话框)。
◎Step12在脚本编辑器中输入以下脚本,如图14-70所示,按下键盘上的Ctrl+Enter组合键执行,这样即可生成融合的序列Mesh。
pm = scene getMesh( "ParticleMesh_ STO1" )
rw = scene.getRealwave()
for i in range(20):
rw.setParameter(“Particle layer”,False)
rw.setParameter(“Particle layer”,True)
pm.build()
f= scene.getCurrentF rame()
scene. setCurrentFrame(f+1)
解读:
pm = scene getMesh(“ParticleMesh_ STO1” ):获取Mesh节点名称并命名为pm。
rw = scene getRealwave():获取Realwave节 点并命名为rw。
for i in range(20):将该句以下的内容(即本句以下含有缩进的语句)循环计算20遍。
rw.setParameter(“ Particle layer”,False): 在rw (即Realwave )的属性中将Particle layer项设置为No (关闭该项)。
rw.setParameter(“Particle layer”,True): 再在rw的属性中将Particle layer项设置为Yes (开启该项)。
pm.build():在pm ( 即Mesh节点)中生成当前帧的Mesh。
f= scene getCurrentFrame():在场景中获取当前帧并命名为f。
scene.setC urrentFrame(f+1):在场景中设置当前帧为f(即当前帧) +1,即获取下一帧。
这个脚本中所使用的语句,在之前的脚本案例中已经多次涉及,相信读者朋友们也都不陌生了,需要简单说明的有以下几点。
01.rw = scene getRealwave():按常规逻辑,括号中需要输入当前使用的Realwave的名称,但为何括号内却空空如也?这是因为在同一个RealFlow场景中,只允许存在一个Realwave, 这个唯-性决定了获取Realwave时不需要再指定名称了。
如果在场景中已有一个Realwave的情况下,再次创建-个新的Realwave,则系统会弹出对话框,提示只能有一个Realwave存在于当前场景中。
02.for i in range(20)::句中的“20” 是指循环计算20帧,用户可根据实际需要的帧数来定义该值;如果需要计算1000帧,在括号中输入1000即可。
03.scene setC urrentFrame(f+1) :该句是循环语句的结尾,既指定了下一帧的操作,又与for i inrange(20):首尾呼应,循环语句将对两句之间的所有操作反复执行。
注意:在执行本案例中的脚本时,会从当前时间滑块所处的位置向后进行解算,并不会自动从第0帧开始。所以如果需要从第0帧开始解算,需要在执行脚本之前,将时间滑块手动移至第0帧。
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答今天,我来和大家聊聊,迪士尼动画《海洋奇缘》系列是怎么用Maya软件为他们最新的续集打造获奖动画的。
有哪些听起来高大上、实际上转行同学也能胜任的岗位?试试虚拟现实工程师!
增强现实(AR)和虚拟现实(VR)是当前备受瞩目的创新技术,对相关的增强现实开发、虚拟现实开发、数字孪生开发工程师的人才需求,......
在这个短视频盛行的时代,越来越多的人想要尝试自己进行短视频剪辑,却常常因为缺乏专业知识而无从下手。别担心,今天就为大家带来短视......
今天,我们聊聊皮克斯的《头脑特工队》系列
中国首个AIGC导演共创计划今日正式上线:同学,做导演不要?
中国首个AIGC导演共创计划定于12月6日正式上线。该计划由快手自研视频生成大模型产品“可灵AI”,联合李少红、贾樟柯、叶锦添......
近日,中央广播电视总台《2025年春节联欢晚会》发布官方吉祥物形象“巳(sì)升升”,祝福全球华人在新的一年如意康宁、好事连连。