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

成都/设计爱好者/5年前/1125浏览
(图文+视频)C4D野教程:总结四种制作漩涡样条的方法
野鹿志

本文多图 请在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

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


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


更多内容欢迎关注公众号

本文由“野鹿志”发布

转载前请联系马鹿野郎

私转必究

18
Report
|
18
Share
相关推荐
评论
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
You may like
相关收藏夹
C4D教程学习
C4D教程学习
C4D教程学习
C4D教程学习
作品收藏夹
render
render
render
render
作品收藏夹
RS渲染
RS渲染
RS渲染
RS渲染
作品收藏夹
c4d
c4d
c4d
c4d
作品收藏夹
哈哈哈
哈哈哈
哈哈哈
哈哈哈
作品收藏夹
c4d
c4d
c4d
c4d
作品收藏夹
大家都在看
Log in