![](https://img.haomeiwen.com/i4442262/aba73823f7d3c36f.png)
是这样的,这几天我在瞎弄OC的贴图的时候,突然弄出一个这种贴图来:
![](https://img.haomeiwen.com/i4442262/c8824effb0faa405.png)
还记得我们之前分享过一篇使用TP粒子做的线条流淌效果么:
![](https://img.haomeiwen.com/i4442262/bf277c04ec09fee0.png)
我们当时是在着色效果器里添加噪波贴图,噪波贴图去影响矩阵对象的旋转,然后矩阵对象发射出TP粒子,再通过xpresso去获取TP粒子的旋转数据制作出来的。
不过效果始终也不是漩涡状,当我通过OC得到这张贴图的时候,第一反应就是如果把噪波换成这个贴图,会不会就可以直接得到漩涡样条了呢?
看来心里还是对这个漩涡效果有种蜜汁执着啊,加上最近上面提到的文章,已经写过三篇相关的内容了,但是都没有做好:
![](https://img.haomeiwen.com/i4442262/3ed23064933480d4.png)
![](https://img.haomeiwen.com/i4442262/d317a93c07ba5ca8.png)
于是兴致勃勃的把之前TP粒子那篇的工程文件拿来替换贴图进行尝试,结果失败了:
![](https://img.haomeiwen.com/i4442262/6ffa80384c525aac.png)
其实自己仔细想想失败也很正常,因为之前我们使用着色器添加噪波使用的是程序纹理,而现在我们加载的其实只是普通的一张2D贴图,贴图里并不包含方向等信息。
那是不是2D的贴图就没办法包含方向信息了呢?其实不是的,之前我在学习RS的时候,由于RS对于贴图方面的操作要比OC麻烦,所以我专门去学习过关于贴图的相关知识。
贴图里面的法线贴图就是用RGB三个通道来存储着方向信息的:
![](https://img.haomeiwen.com/i4442262/8fc12344a04a5f1e.png)
既然我通过OC得到了这个一张灰度图,然后大家知道PS里是可以制作出法线贴图的,那如果有办法能够获取到法线贴图里的颜色信息,是不是就可以实现这个漩涡效果了呢?
但是是否可行,具体怎么操作,我却不得而知,然后我想到了之前在写TP粒子文章的时候有鹿友留言推荐一位叫做@飞舞的团子的大神:
这是一位会C4D python的硬核大神,和一般的教程不一样,他的内容大多都是程序化的使用C4D,感觉好神奇,对于xpresso或者C4D python感兴趣的鹿友强烈推荐去看看。
看了团子大神的Tip_13_twirl这篇视频终于证实了我的想法是可行的,不过由于我个人不会编程,对于其中很多原理还是不太明白:
![](https://img.haomeiwen.com/i4442262/a861fd9c383a4b58.png)
所以把这个视频反复的看了好多遍,又查了很多资料,最后终于弄明白了。
感觉也是时候给这个漩涡效果打个总结了,因此我今天想总结一下网上一共四种制作这种漩涡样条线的方法。
前三种方法因为网上都很普遍了,我们就粗略过一下,然后最后团子大神的方法我们着重分享一下。
这里再次感谢@飞舞的团子大神的视频,终于让我能在R19不用插件预设,也不用编程的方式下做出了这个漩涡效果。
![](https://img.haomeiwen.com/i4442262/38517744d00a83cf.gif)
1、使用R21域力场
第一种方法是使用R21的新增功能域力场,如图所示新建一个平面:
![](https://img.haomeiwen.com/i4442262/3836139fa371f864.png)
我们都知道要让对象运动起来就需要速度,而速度是一个矢量,既有大小也有方向。
R21的体积生成里新增了可以生成矢量这个功能,所以新建体积生成,让它成为平面的父级,体素类型改为矢量,尺寸可以稍微小一点:
![](https://img.haomeiwen.com/i4442262/4c33b23e0875d0c6.png)
在新建一个随机域让它成为体积生成的子集,这样随机域也能生成矢量:
![](https://img.haomeiwen.com/i4442262/88f6ddf993951386.png)
但是默认情况下随机域的创建空间就是中间立方体那么大。
我们回到体积生成,在对象栏位选中随机域以后,可以将创建空间改为对象以下,这样随机域就会根据平面的大小生成矢量:
![](https://img.haomeiwen.com/i4442262/a6ed628e7c99d02d.png)
这个时候我们再在模拟-力场里找到新增的域力场:
![](https://img.haomeiwen.com/i4442262/8a0b447b5bb345ac.png)
再把体积生成拖给域力场,选择体积对象,域力场就会将体积对象生成的这些矢量转为力场:
![](https://img.haomeiwen.com/i4442262/2fa46a261a287917.png)
接下来就是要这些力场来影响TP粒子了,新建矩阵对象,以平面最为对象生成矩阵,改为TP粒子再将TP粒子群组拖进来,这些就不多说了哈:
![](https://img.haomeiwen.com/i4442262/8eac4780bccf8424.png)
默认情况下域力场不能直接影响TP粒子,所以新建一个xpresso标签,池里拖入粒子传递节点以及PForce对象节点。
然后把粒子群组拖给粒子传递节点,把域力场拖给PForce对象节点,再将两个节点相连:
![](https://img.haomeiwen.com/i4442262/df1085c7b6e0ccfc.png)
为了方便观察,新建追踪对象追踪TP粒子群组,可以看到目前的运动轨迹不是我们想要的:
![](https://img.haomeiwen.com/i4442262/373c35931c3d0dc7.png)
没关系,回到体积生成里面,把随机域的混合模式改为穿过,让矢量紧贴在平面上:
![](https://img.haomeiwen.com/i4442262/c6f7b63aba7c8789.png)
域力场里我们将速率类型改为设置绝对速率,让速度直接受域力场影响,速度的数值可以大一点,这样雏形就有了:
![](https://img.haomeiwen.com/i4442262/e43ecdc85ca0b87f.png)
接下来就是在随机域里改改尺寸:
![](https://img.haomeiwen.com/i4442262/fbff89ab25ef5cc2.png)
最后再在追踪对象里改改样条类型和点差值方式等,基本就搞定了。
因为有很多鹿友都没有用过R21的域力场,所以第一种方法我就稍微多写了一些:
![](https://img.haomeiwen.com/i4442262/640cea76de0f6fa2.png)
总结:使用R21域力场这种方法制作的漩涡效果可控性很高,也可以制作出粒子在不同模型表面攀爬的效果,只可惜目前R21不支持和谐版的OC以及RS渲染。
2、使用XP4.0
这个方法就不用太多说了吧,新建一个方形的粒子发射器,速度改为0,就发射一帧粒子,然后添加拖尾:
![](https://img.haomeiwen.com/i4442262/7025ad763eaedcc4.png)
新建一个湍流场,湍流类型改为卷曲,将对Y轴的影响取消勾选,这里最好把频率的数值改为0,这个漩涡的效果就出来了:
![](https://img.haomeiwen.com/i4442262/188e809140737f65.png)
总结:使用XP4.0制作漩涡效果,简单快速,可控性高,C4D各个版本你都可以用,所以就不用在意渲染器的问题。
要说缺点嘛,当然就是得无论是正版还是离线版都得付费,要么就只有使用试用版。
3、使用python预设
第三种方法就是使用之前我们分享过的python预设来制作:
![](https://img.haomeiwen.com/i4442262/81a0996d325b581d.png)
总结:预设文件,简单无脑,基本没有什么可控性。
4、使用贴图制作
终于到了团子大神分享的方法了,要理解贴图制作这种方法我们首先需要理解两个重要的原理。
首先法线的数值范围是-1到1,颜色的数值范围是0到1,法线通过RGB三个通道记录了方向的信息,红通道记录的是左右方向,绿通道记录的是上下方向,蓝通道记录的是前后方向。
直接百度法线贴图的颜色就能够查看到相关资料:
![](https://img.haomeiwen.com/i4442262/1823539ae12bdbb2.png)
其次第二个原理团子大神讲解的比较晦涩,我来回看了几遍想了半天还是没理解:
![](https://img.haomeiwen.com/i4442262/3b19eac2e22cee30.png)
刚好最近为了防止老年痴呆买了一个魔方:
在把玩的过程中突然明白了团子大神讲的含义,我这里以C4D的矩阵对象为例。
当我手指按在左右方向如图所示的方块面上,想要整个魔方逆时针旋转,那么需要从下往上给一个力去改变方向:
![](https://img.haomeiwen.com/i4442262/80e9b2d9058e6f37.png)
而当我手指按在上下方向如图所示的方块面上,想要整个魔方逆时针旋转,则需要从左往右的一个力去改变方向,两者方向相反则是顺时针:
![](https://img.haomeiwen.com/i4442262/c38c9894ad3be340.png)
而我们前面也提到了,法线贴图的红通道是左右方向,绿通道是上下方向。
因此我们只需要法线贴图的红通道从左往右、绿通道从下往上就可以让魔方形成一个逆时针的旋转:
![](https://img.haomeiwen.com/i4442262/08563e97e81309c3.png)
切换到C4D透视面板,将对象换做一个平面,那就相当于是需要绿通道从下往上影响X轴,红通道从左往右影响Z轴,则平面进行逆时针旋转:
![](https://img.haomeiwen.com/i4442262/14aa941a1f47281c.png)
好了原理基本就是这样,后面我们边做的时候就能更加理解了。
先做贴图吧,新建平面,新建环境光,新建一个材质拖给平面:
![](https://img.haomeiwen.com/i4442262/296f06a89ba44fc7.png)
打开材质节点编辑器,先新建一个正弦波节点给漫射通道:
![](https://img.haomeiwen.com/i4442262/8f2c4dd189480ce2.png)
再新建一个湍流节点连接到正弦波节点:
![](https://img.haomeiwen.com/i4442262/be50ab649a3541a3.png)
通过提高湍流节点里的power数值,就可以大概看到这种漩涡的图案了:
![](https://img.haomeiwen.com/i4442262/3d25d3856f99ed1a.png)
总之通过调整参数得到自己想要的状态,参数细节就不多说了,这个不是重点,调整完毕以后渲染一个方形的尺寸贴图出来就行:
![](https://img.haomeiwen.com/i4442262/9338d04cf9c33f43.png)
做完以后再在PS里弄成法线贴图,这个也不用说吧:
![](https://img.haomeiwen.com/i4442262/13e273c4e299f67c.png)
回到C4D同样还是新建一个平面:
![](https://img.haomeiwen.com/i4442262/339642f7b33e18cb.png)
新建材质球,颜色通道加载我们制作的法线贴图把它丢给平面:
![](https://img.haomeiwen.com/i4442262/4ed79e11f5948050.png)
注意我们之前不是提到了需要绿通道从下往上影响X轴,红通道从左往右影响Z轴么?
现在的贴图方式是不对的,我们需要将投射方式改为平直,切换到纹理模式,可以看到纹理的XYZ三个轴向,我们这里可以简单的理解为对应着颜色的RGB三个通道:
![](https://img.haomeiwen.com/i4442262/265004900842f5ea.png)
因此我们将贴图的P轴旋转-90度,这样就是用贴图的绿通道从下往上影响X轴,红通道从左往右影响Z轴:
![](https://img.haomeiwen.com/i4442262/a307d41a5f20550f.png)
然后选中纹理鼠标右键适合对象:
![](https://img.haomeiwen.com/i4442262/e5c62e3ce95bd986.png)
接下来这招也是跟团子大神学的,我们新建一个着色效果器,变换里任何参数都不要给,我们仅仅是用它来采样贴图的颜色信息。
颜色模式记得开启,不要勾选Alpha通道,着色通道改为颜色通道,然后把材质球拖进来:
![](https://img.haomeiwen.com/i4442262/a74a5bd5be79c883.png)
接下来新建矩阵对象,以平面发射TP粒子,把TP粒子组拖进来这一步不用说吧:
![](https://img.haomeiwen.com/i4442262/64123f7e64a1a85c.png)
接下来新建xpresso标签,池里面新建粒子传递节点把TP粒子组拖进来,然后新建粒子数据获取节点,把它们连接上:
![](https://img.haomeiwen.com/i4442262/1dfdbfdf00b82770.png)
这里我们需要获取粒子的位置,所以输出端口添加一个位置端口:
![](https://img.haomeiwen.com/i4442262/7dc1eb3e9617ea2b.png)
这个粒子的位置我们需要通过贴图的颜色来定义,所以把着色效果器拖进池里,同时在运动图形里添加一个采样节点来采样着色器的颜色信息:
![](https://img.haomeiwen.com/i4442262/48cca66a4b24574f.png)
着色器的输出端口先添加一个对象端口,把它和采样节点连接上:
![](https://img.haomeiwen.com/i4442262/f999ff4e6d97f48d.png)
同时我们还需要把粒子的位置信息和纹理的颜色关联起来,但是位置是一个矢量数据,而采样的输入端口是一个矩阵数据,鼠标悬停到输出端口可以看到他们的数据类型:
![](https://img.haomeiwen.com/i4442262/34d20d399641a9f5.png)
所以我们需要一个矢量到矩阵的节点来进行转换,链接到偏移端口就行,其他三个端口是控制旋转的,这个以前的文章写过:
![](https://img.haomeiwen.com/i4442262/1282a4205b638df7.png)
然后采样节点的输出端口我们把颜色端口调出来:
![](https://img.haomeiwen.com/i4442262/c6a6720ae513c63c.png)
现在我们需要去单独读取颜色的红绿通道,颜色是一个矢量数据,所以添加一个矢量到实数的节点来进行分离。
然后再通过实数到矢量的节点再把红绿通道的信息合并起来,分离出来XYZ分别对应的就是RGB三个通道:
![](https://img.haomeiwen.com/i4442262/a9ab1b90f852e62f.png)
但是我们前面提到了颜色的范围是0到1,但是矢量的范围是-1到1,所以需要用范围映射节点来重新定义范围。
新建范围映射节点,把X轴也就是红通道连给它,然后把输出下限改为-1就行了:
![](https://img.haomeiwen.com/i4442262/f0c97fde5d6439d0.png)
Y轴也就是绿通道也是同样的道理,这里就不赘述了:
![](https://img.haomeiwen.com/i4442262/67f4e3243695c427.png)
接下来再通过实数到矢量节点把红绿通道合并,因为我们说了红通道是影响Z轴,绿通道影响X轴,所以如图所示连接:
![](https://img.haomeiwen.com/i4442262/62847d500116ec5c.png)
接下来再添加粒子速率节点,输入端口添加方向:
![](https://img.haomeiwen.com/i4442262/e800a457d6389c53.png)
再把粒子传递以及方向的信息给连接上:
![](https://img.haomeiwen.com/i4442262/2761be9cebbe31b8.png)
给TP粒子添加追踪对象检测一下,漩涡的效果就出来了:
![](https://img.haomeiwen.com/i4442262/83c0fd3c57259475.png)
如果你不希望线条跑出平面也是可以的,团子大神用的是预设。
不过通过定义两个轴向上的最大最小范围,超出这个范围就杀死粒子的方法也是可行的,这个方法以前已经分享过了,这里就不赘述了:
![](https://img.haomeiwen.com/i4442262/d4fc79822cd4d86f.png)
渲染今天不说了,篇幅已经60张图了,反正和渲染毛发是一样的,我觉得随便给一个渐变色都挺好看的:
![](https://img.haomeiwen.com/i4442262/bb875ee9300a1708.png)
总结:最后一种方法的优势就是不用插件预设也能制作漩涡效果,由于我们可以换不同的贴图,所以具有一定的可控性。
但是理解起来需要花一些功夫,如果要制作不同模型表面攀爬的效果至少我没有找到方法。
![](https://img.haomeiwen.com/i4442262/75f4bf559fe68fee.gif)
终于写完了,四种方法大家就根据自己的需求来选择吧,下面是今天的视频版:
腾讯视频
好啦,今天的内容就到这里,想要源文件、原视频的童鞋后台撩我获取吧!
更多内容欢迎关注公众号
本文由“野鹿志”发布
转载前请联系马鹿野郎
私转必究
网友评论