(图文+视频)C4D野教程:总结四种制作漩涡样条的方法

41天前发布

原创文章 / 多领域 / 教程
野鹿志 原创,如需商业用途或转载请与野鹿志联系,谢谢配合。

本文多图 请在wifi环境下阅读

是这样的,这几天我在瞎弄OC的贴图的时候,突然弄出一个这种贴图来:
undefined


还记得我们之前分享过一篇使用TP粒子做的线条流淌效果么:

undefined

点击图片阅读原文


我们当时是在着色效果器里添加噪波贴图,噪波贴图去影响矩阵对象的旋转,然后矩阵对象发射出TP粒子,再通过xpresso去获取TP粒子的旋转数据制作出来的。


不过效果始终也不是漩涡状,当我通过OC得到这张贴图的时候,第一反应就是如果把噪波换成这个贴图,会不会就可以直接得到漩涡样条了呢?


看来心里还是对这个漩涡效果有种蜜汁执着啊,加上最近上面提到的文章,已经写过三篇相关的内容了,但是都没有做好:

undefined

点击图片阅读原文


undefined

点击图片阅读原文


于是兴致勃勃的把之前TP粒子那篇的工程文件拿来替换贴图进行尝试,结果失败了:

undefined


其实自己仔细想想失败也很正常,因为之前我们使用着色器添加噪波使用的是程序纹理,而现在我们加载的其实只是普通的一张2D贴图,贴图里并不包含方向等信息。


那是不是2D的贴图就没办法包含方向信息了呢?其实不是的,之前我在学习RS的时候,由于RS对于贴图方面的操作要比OC麻烦,所以我专门去学习过关于贴图的相关知识。


贴图里面的法线贴图就是用RGB三个通道来存储着方向信息的:

undefined


既然我通过OC得到了这个一张灰度图,然后大家知道PS里是可以制作出法线贴图的,那如果有办法能够获取到法线贴图里的颜色信息,是不是就可以实现这个漩涡效果了呢?


但是是否可行,具体怎么操作,我却不得而知,然后我想到了之前在写TP粒子文章的时候有鹿友留言推荐一位叫做@飞舞的团子的大神:

undefined


这是一位会C4D python的硬核大神,和一般的教程不一样,他的内容大多都是程序化的使用C4D,感觉好神奇,对于xpresso或者C4D python感兴趣的鹿友强烈推荐去看看。


看了团子大神的Tip_13_twirl这篇视频终于证实了我的想法是可行的,不过由于我个人不会编程,对于其中很多原理还是不太明白:

undefined


所以把这个视频反复的看了好多遍,又查了很多资料,最后终于弄明白了。


感觉也是时候给这个漩涡效果打个总结了,因此我今天想总结一下网上一共四种制作这种漩涡样条线的方法。


前三种方法因为网上都很普遍了,我们就粗略过一下,然后最后团子大神的方法我们着重分享一下。


这里再次感谢@飞舞的团子大神的视频,终于让我能在R19不用插件预设,也不用编程的方式下做出了这个漩涡效果。

undefined


1、使用R21域力场

第一种方法是使用R21的新增功能域力场,如图所示新建一个平面:

undefined


我们都知道要让对象运动起来就需要速度,而速度是一个矢量,既有大小也有方向。


R21的体积生成里新增了可以生成矢量这个功能,所以新建体积生成,让它成为平面的父级,体素类型改为矢量,尺寸可以稍微小一点:

undefined


在新建一个随机域让它成为体积生成的子集,这样随机域也能生成矢量:

undefined


但是默认情况下随机域的创建空间就是中间立方体那么大。


我们回到体积生成,在对象栏位选中随机域以后,可以将创建空间改为对象以下,这样随机域就会根据平面的大小生成矢量:

undefined


这个时候我们再在模拟-力场里找到新增的域力场:

undefined


再把体积生成拖给域力场,选择体积对象,域力场就会将体积对象生成的这些矢量转为力场:

undefined


接下来就是要这些力场来影响TP粒子了,新建矩阵对象,以平面最为对象生成矩阵,改为TP粒子再将TP粒子群组拖进来,这些就不多说了哈:

undefined


默认情况下域力场不能直接影响TP粒子,所以新建一个xpresso标签,池里拖入粒子传递节点以及PForce对象节点。


然后把粒子群组拖给粒子传递节点,把域力场拖给PForce对象节点,再将两个节点相连:

undefined


为了方便观察,新建追踪对象追踪TP粒子群组,可以看到目前的运动轨迹不是我们想要的:

undefined


没关系,回到体积生成里面,把随机域的混合模式改为穿过,让矢量紧贴在平面上:

undefined


域力场里我们将速率类型改为设置绝对速率,让速度直接受域力场影响,速度的数值可以大一点,这样雏形就有了:

undefined


接下来就是在随机域里改改尺寸:

undefined


最后再在追踪对象里改改样条类型和点差值方式等,基本就搞定了。


因为有很多鹿友都没有用过R21的域力场,所以第一种方法我就稍微多写了一些:

undefined


总结:使用R21域力场这种方法制作的漩涡效果可控性很高,也可以制作出粒子在不同模型表面攀爬的效果,只可惜目前R21不支持和谐版的OC以及RS渲染。


2、使用XP4.0

这个方法就不用太多说了吧,新建一个方形的粒子发射器,速度改为0,就发射一帧粒子,然后添加拖尾:

undefined


新建一个湍流场,湍流类型改为卷曲,将对Y轴的影响取消勾选,这里最好把频率的数值改为0,这个漩涡的效果就出来了:

undefined


总结:使用XP4.0制作漩涡效果,简单快速,可控性高,C4D各个版本你都可以用,所以就不用在意渲染器的问题。


要说缺点嘛,当然就是得无论是正版还是离线版都得付费,要么就只有使用试用版。


3、使用python预设

第三种方法就是使用之前我们分享过的python预设来制作:

undefined


总结:预设文件,简单无脑,基本没有什么可控性。


4、使用贴图制作


终于到了团子大神分享的方法了,要理解贴图制作这种方法我们首先需要理解两个重要的原理。


首先法线的数值范围是-1到1,颜色的数值范围是0到1,法线通过RGB三个通道记录了方向的信息,红通道记录的是左右方向,绿通道记录的是上下方向,蓝通道记录的是前后方向。


直接百度法线贴图的颜色就能够查看到相关资料:

undefined


其次第二个原理团子大神讲解的比较晦涩,我来回看了几遍想了半天还是没理解:

undefined

截图源自B站:飞舞的团子视频Tip_13_twirl


刚好最近为了防止老年痴呆买了一个魔方:

undefined


在把玩的过程中突然明白了团子大神讲的含义,我这里以C4D的矩阵对象为例。


当我手指按在左右方向如图所示的方块面上,想要整个魔方逆时针旋转,那么需要从下往上给一个力去改变方向:

undefined


而当我手指按在上下方向如图所示的方块面上,想要整个魔方逆时针旋转,则需要从左往右的一个力去改变方向,两者方向相反则是顺时针:

undefined


而我们前面也提到了,法线贴图的红通道是左右方向,绿通道是上下方向。


因此我们只需要法线贴图的红通道从左往右、绿通道从下往上就可以让魔方形成一个逆时针的旋转:

undefined


切换到C4D透视面板,将对象换做一个平面,那就相当于是需要绿通道从下往上影响X轴,红通道从左往右影响Z轴,则平面进行逆时针旋转:

undefined


好了原理基本就是这样,后面我们边做的时候就能更加理解了。


先做贴图吧,新建平面,新建环境光,新建一个材质拖给平面:

undefined


打开材质节点编辑器,先新建一个正弦波节点给漫射通道:

undefined


再新建一个湍流节点连接到正弦波节点:

undefined


通过提高湍流节点里的power数值,就可以大概看到这种漩涡的图案了:

undefined


总之通过调整参数得到自己想要的状态,参数细节就不多说了,这个不是重点,调整完毕以后渲染一个方形的尺寸贴图出来就行:

undefined


做完以后再在PS里弄成法线贴图,这个也不用说吧:

undefined


回到C4D同样还是新建一个平面:

undefined


新建材质球,颜色通道加载我们制作的法线贴图把它丢给平面:

undefined


注意我们之前不是提到了需要绿通道从下往上影响X轴,红通道从左往右影响Z轴么?


现在的贴图方式是不对的,我们需要将投射方式改为平直,切换到纹理模式,可以看到纹理的XYZ三个轴向,我们这里可以简单的理解为对应着颜色的RGB三个通道:

undefined


因此我们将贴图的P轴旋转-90度,这样就是用贴图的绿通道从下往上影响X轴,红通道从左往右影响Z轴:

undefined


然后选中纹理鼠标右键适合对象:

undefined


接下来这招也是跟团子大神学的,我们新建一个着色效果器,变换里任何参数都不要给,我们仅仅是用它来采样贴图的颜色信息。


颜色模式记得开启,不要勾选Alpha通道,着色通道改为颜色通道,然后把材质球拖进来:

undefined


接下来新建矩阵对象,以平面发射TP粒子,把TP粒子组拖进来这一步不用说吧:

undefined


接下来新建xpresso标签,池里面新建粒子传递节点把TP粒子组拖进来,然后新建粒子数据获取节点,把它们连接上:

undefined


这里我们需要获取粒子的位置,所以输出端口添加一个位置端口:

undefined


这个粒子的位置我们需要通过贴图的颜色来定义,所以把着色效果器拖进池里,同时在运动图形里添加一个采样节点来采样着色器的颜色信息:

undefined


着色器的输出端口先添加一个对象端口,把它和采样节点连接上:

undefined


同时我们还需要把粒子的位置信息和纹理的颜色关联起来,但是位置是一个矢量数据,而采样的输入端口是一个矩阵数据,鼠标悬停到输出端口可以看到他们的数据类型:

undefined


所以我们需要一个矢量到矩阵的节点来进行转换,链接到偏移端口就行,其他三个端口是控制旋转的,这个以前的文章写过:

undefined


然后采样节点的输出端口我们把颜色端口调出来:

undefined


现在我们需要去单独读取颜色的红绿通道,颜色是一个矢量数据,所以添加一个矢量到实数的节点来进行分离。


然后再通过实数到矢量的节点再把红绿通道的信息合并起来,分离出来XYZ分别对应的就是RGB三个通道:

undefined


但是我们前面提到了颜色的范围是0到1,但是矢量的范围是-1到1,所以需要用范围映射节点来重新定义范围。


新建范围映射节点,把X轴也就是红通道连给它,然后把输出下限改为-1就行了:

undefined


Y轴也就是绿通道也是同样的道理,这里就不赘述了:

undefined


接下来再通过实数到矢量节点把红绿通道合并,因为我们说了红通道是影响Z轴,绿通道影响X轴,所以如图所示连接:

undefined


接下来再添加粒子速率节点,输入端口添加方向:

undefined


再把粒子传递以及方向的信息给连接上:

undefined


给TP粒子添加追踪对象检测一下,漩涡的效果就出来了:

undefined


如果你不希望线条跑出平面也是可以的,团子大神用的是预设。


不过通过定义两个轴向上的最大最小范围,超出这个范围就杀死粒子的方法也是可行的,这个方法以前已经分享过了,这里就不赘述了:

undefined


渲染今天不说了,篇幅已经60张图了,反正和渲染毛发是一样的,我觉得随便给一个渐变色都挺好看的:

undefined


总结:最后一种方法的优势就是不用插件预设也能制作漩涡效果,由于我们可以换不同的贴图,所以具有一定的可控性。


但是理解起来需要花一些功夫,如果要制作不同模型表面攀爬的效果至少我没有找到方法。

undefined

终于写完了,四种方法大家就根据自己的需求来选择吧,下面是今天的视频版:


好啦,今天的内容就到这里,想要源文件、原视频的童鞋后台撩我获取吧!


更多内容欢迎关注公众号

本文由“野鹿志”发布

转载前请联系马鹿野郎

私转必究

13
- 位站酷推荐设计师推荐 -

声明:站酷(ZCOOL)内网友所发表的所有内容及言论仅代表其本人,并不反映任何站酷(ZCOOL)之意见及观点。

    文章信息

    • 文章标签

    没有新消息