今天分享内容的视频版如下,视频已添加进度条,大家可以根据自己的需求拖动到想要观看的部分,想要原视频以及源文件的鹿友公众号后台回复“440”获取:
(资料图片仅供参考)
以下是图文版内容:
正文共: 4066字 81图
预计阅读时间: 11分钟
这次更新又拖了很久,其实早就在写了,但是中途因为各种各样的事情耽搁了,文章断断续续写了好多天才写完。
内容比较多,无论是视频还是文字我都分了板块方便大家阅读观看。
前篇分享了使用XP粒子GPU加速的初体验,今天我原本想要分享这样一个案例:
一个流体形态的老鼠,去碰撞颗粒形态的猫。
开始之前先说明一下模拟的选择,我的原意是都使用XP的GPU加速来模拟液体和颗粒。
但由于我用的老鼠骨骼动画动作比较快,导致体积内部的粒子很容易漏出,要解决粒子漏出可能需要提高场景的子帧步幅,这样就有可能会影响到模拟颗粒。
所以我最终选择还是用RF来模拟液体,用XP的GPU来模拟颗粒。
好了,废话不多说了,开始今天的内容吧!
01
运动剪辑部分
打开C4D,我这里有的老鼠骨骼动画都是片段,需要用运动剪辑把它们弄成一套整体的动作:
把这些动作全部都导进来吧,然后根据自己的想法组合一下,我想的顺序是走跑跳撞然后刨土:
需要注意的是,现在模型的体积很小,后面在模拟碰撞的时候就会对精度要求很高,会很卡,所以我这里统一把所有的模型都放大了4倍:
另外如果大家用其他的骨骼动画文件做运动剪辑之前,一定要先检查一下第一个关节这里有没有关键帧。
如果没有的话记得K一下关键帧,即使参数没有变化也没关系,否则后面做运动剪辑的时候会问题:
接下来选中第一个组添加动画-添加运动剪辑片段:
名称自己定义就好,这里我们取消勾选从原始对象移除包含动画:
添加运动剪辑片段以后,点击运动剪辑标签,可以取消勾选残影否则会影响观察,然后点击在时间线打开:
现在第一个走路的动作有两个问题,首先动画的时间太短了,其次它是原地不动的。
在时间线里选中这个片段,我们可以首先让它循环一次,这样动画时间会稍微长点:
然后在高级里面我们点击创建枢轴:
然后我们通过给轴枢的坐标K关键帧就可以控制对象的移动了:
接下来给第二个动作添加运动剪辑片段,同样的操作我就不重复了哈:
然后同样是在第一个动作的运动剪辑标签中打开时间线,把第二个动作拖到时间线里:
第二个动作我首先让它循环2次:
让两个动作有一定的重合,这样C4D会自动融合两个动作:
不过现在有个新问题是到第二个动作的时候,对象会倒回到起点才开始跑。
所以选中第二个运动剪辑片段点击高级,同样点击创建枢轴:
然后调整枢轴让它的起点是第一个枢轴的终点,这样位置就对上了,同样给第二个动作K一下位移关键帧,让它动起来:
第三个动作不需要循环,直接创建枢轴调整它的起始位置,并且与第二个动作重合就好了:
第四个动作和第三个动作是一样的操作,枢轴的起点要稍微后退一点,这个大家看着微调就好了:
最后一个动画时长很长,我们用不了那么多,就让它在400帧的样子就好,刚好是刨土的动作:
基本上这样运动剪辑部分就做完了,这里尾巴的地方等添加地面以后可能会穿帮。
这个是骨骼动画本身的问题,如果要手动修改或者给骨骼添加动力学就太麻烦了,我也不太会,这里我们就直接无视吧:
做好以后直接鼠标右键转为ABC文件:
然后可以用布料曲面给对象增加一点点厚度,这样模拟碰撞的时候会减少粒子穿模的情况:
可以再增加个细分曲面,因为经我测试如果不加细分曲面的话碰撞好像会有点问题:
02
Realflow模拟流体部分
接下来进入RF模拟部分,这里我们可以先暂时把动画关掉:
新建RF填充发射器,把细分曲面拖进去:
流体属性里分辨率高一点,让粒子数量稍微多一点:
给细分曲面添加RF的碰撞标签以及体积标签,这里额外提一句,官方说明想要流体和对象内部产生碰撞,模式应该选择为Solid outside而不是Solid inside。
碰撞的尺寸我用的自动,然后把级别改为高,这样碰撞会比较精准一点,当然模拟起来会更慢。
不过现在出现了明显的问题是粒子变成一个长方体了:
这时我们回到填充发射器里,把填充模式改为填充非固体区域就好了。
这里有点让人费解,按理来说想要粒子在对象内部碰撞,填充模式就应该选择为固体区域才对,不过不影响我们制作哈:
另外由于我们后面碰撞对象是运动的,所以碰撞标签里最好把连续碰撞检测激活:
给场景中添加重力,现在可以看见有很多粒子漏出来:
场景里我们适当的把最大最小子帧步幅提高一点,粒子漏出的问题得到了明显的改善:
不过需要注意的是实际模拟的时候碰撞对象是运动的并且速度还挺快,要完全杜绝漏出就需要继续提高子帧步幅。
我觉得继续提高子帧步幅模拟时间就太长了,如果有少量的粒子漏出也没有关系,直接杀死就可以了。
所以新建一个大大的体积杀死场搞掉漏出来的粒子:
再添加一个孤立杀死场,把参数改小一点杀死孤立的粒子避免占用多余的资源:
最后我给场景里添加了一个噪波场,让水能运动的更强烈一点:
接下来记得把ABC文件的动画重新激活一下:
这里补充一点,经过我测试需要先细分再用布料增加厚度才是我想要的状态,先布料再细分模拟过程中粒子会有奇怪的闪动情况:
基本这样我觉得就可以先将粒子缓存了,缓存时间1个小时左右:
缓存完毕以后在模型运动最高速的地方可能还是会有些粒子漏出来,这里我觉得影响不大哈:
给粒子添加网格,需要注意的是网格半径这里如果给得很小例如1,软件会直接闪退。
又是一个玄学问题,具体原因不清楚,我这里设置到2,然后平滑给到4,基本就没有什么漏出来的粒子了:
接下来再把网格缓存一下,就可以进入XP模拟颗粒的部分了:
03
X-Particles模拟颗粒部分
把猫的骨骼动画导进来,然后找一个合适的状态鼠标右键当前状态转对象:
然后对比着老鼠模型调整位置和大小:
脸上有两个面片我们可以直接删掉:
这里有一个问题,现在猫的模型其实不是封闭的,而我们后面需要用它的体积内部发射粒子就需要是封闭的模型才行。
最直接的方法就是给模型添加体积生成网格化,然后鼠标右键当前状态转对象:
新建一个大大的平面用于碰撞:
新建发射器,以模型对象的体积发射粒子:
发射模式改为六面体,只发射1帧粒子就好,把粒子的速度关掉,半径的话暂时默认,后面我们再修改:
因为我们后面要做粒子碰撞四处飞开的效果,所以粒子额外属性里我们最好把粒子的自旋转打开:
给地面添加XP碰撞标签,我这里把摩擦力改到了最大:
需要注意的是RF的网格是不能和XP粒子产生碰撞的,无论是转为ABC文件还是烘焙为点级别动画。
所以我们这里只有给老鼠的原骨骼动画添加XP碰撞标签,这样碰撞可能和做出来的RF网格有点区别,但我也暂时没找到其他的解决方案:
新建一个nx杀死场,让超出范围的粒子杀死掉不占用多余资源:
新建一个nx重力场,这个不用多说哈:
新建nx流体动力学,将解算器切换为SPH,流体类型改为颗粒,现在猫就会因为受到重力直接塌陷下去:
我希望的是猫的形态一开始能保持住,在被老鼠碰撞以后再慢慢塌陷下去。
如果要直接使用动力学模拟,就只能提高模拟的子帧步幅,但是粒子数量多的话缓存就需要很长的时间。
上篇文章我也提到了,我模拟了113W粒子,缓存时间20小时17分,当时的nx流体里子帧步幅30,工程设置里的子帧步幅2:
虽然XP的GPU也可以添加粒子组,但是目前不支持动作,也没有感染修改器,没有办法制作发生碰撞后逐渐变换组,只让变换后的组收到重力。
关于这一点我琢磨了很久,我们可以这么操作一下,把之前体积网格后的猫模型显示出来,切换到点级别全选点创建顶点贴图:
顶点贴图里我们创建域,然后让冻结域的模式为扩展,扩展的半径以及强度大家可以多尝试一下:
把用于碰撞的老鼠拖进域里面当作点对象,模式改为体积,混合模式为最大,这样当老鼠碰到猫的时候,顶点权重就会自然扩展生长开来:
可以再添加一个随机域,适当的增加比例以及动画速度,让边缘更自然一点:
接下来再把顶点贴图拖进重力修改器的衰减里,这样就可以制作粒子在发生碰撞后逐渐收到重力影响而塌陷的效果了:
只要能一开始保持猫的形态了,那我们的子帧部分就不需要增加到太高了,我这里用了20的子帧步幅,然后把摩擦力增加到了最大,稳定性稍微降低一点:
最后我将粒子的半径改为1,大概114W个粒子的样子:
基本这样就可以把粒子缓存了,缓存时间6个半小时,体积50个G,所以缓存前记得选个大一点的硬盘:
04
Redshift渲染部分
终于进入渲染环节了,设置渲染尺寸,修改色彩空间,新建摄像机固定视角这些都不用说了哈。
我这里做了一个摄像机动画,做的也不是很好,大家自己酌情处理吧:
新建一个HDR环境光:
我这里又叠了一个HDR,然后稍微降低了一点曝光值:
老鼠的材质是一个普通的sss材质,取消勾选了剔除内部多余折射:
接下来导入我从魔顿网上下载的石头模型,用于替换粒子:
现在的石头是一个整体,我们切换到面级别,用填充选择工具结合鼠标右键分裂,可以很容易的把石头分离出来:
接下来给粒子发射器添加RS对象标签,模式选择用户对象,把这些石头模型拖进去,大小大家看着调整就好:
粒子的材质很简单,都是一些普通的反射材质,只是颜色上略微有一些差异:
给地面一个普通的反射材质,然后再给地面添加RS对象标签,启用蒙板并且勾选投影。
让地面不渲染只参与接收投影,投影里记得勾选影响Alpha通道,同时反射的尺寸也可以打开让地面同时接收反射:
给老鼠也添加RS对象标签,然后粒子和老鼠都把运动模糊打开:
渲染设置里记得也把运动模糊打开,同时勾选变体运动:
渲染设置方面我的主采样设置是16/128,其他本地采样都是512:
多通道渲染里也是根据需求进行了添加,我这里把运动矢量也添加了进去,用于后期合成运动模糊:
基本这样就可以渲染了,因为粒子数量比较多,渲染时长接近17个小时:
渲染完毕以后,我这里额外给添加了一个背景,把粒子这些都可以关掉,然后新建一个大大的平面:
然后参考着调整平面的位置:
调整完毕记得把除了平面以外的对象全部都隐藏,我们其实只是需要这个摄像机的运动信息而已。
这次渲染我们直接用默认渲染器渲染就可以,渲染是很快的,每帧几乎都是秒渲:
最后后期AE合成一下,简单调色看看效果吧:
好像液体太粘稠了,材质应该再透一些好。算了,大概就是这样吧,今天的断断续续的写,篇幅很长,希望鹿友们多多阅读支持!我们下次见吧!
更多内容欢迎关注公众号:
本文由“野鹿志”发布
转载前请联系马鹿野郎
私转必究