中影培训基地_专注于电影人才培养的国家级影视培训学校!
十年专注影视培训
您在这里  华龙绝学—表白阵

华龙绝学—表白阵

又到了每周四的更新时间啦

大家有没有非常想我内((✿◡‿◡)

再次给大家带来华龙绝学

吼吼 有木有get到我们的点!

华龙绝学可不仅仅教你知识

还得辅助你撩?

懂得举一反三不 看完这篇

你都能!行!


今天给大家带来C4D的表达式知识点

大家要认真学习呦

更多教程也可以登录我们的直播平台

http://zhibo.hualongedu.com

免费观看

首先,我们先来看一下视频效果

 

彩虹般的立方体方阵怎么实现?如何把平面上的颜色过渡在三维立方体上展现出来呢?


方法很简单!建立512个小方块,建立512个材质球,按照彩虹色逐一调色,

把材质球分别赋给小方块,完美的彩虹方阵就搞定了。这个方法一定行!!!

虽然累点儿(累点儿?手会不会抽筋儿?!)。

开玩笑的,这种典型的群集类的模型、材质的操作,还是要借助些什么的。

 

用什么呢?工具?人类通过使用工具完成了进化,

我们也可以通过对C4D表达式的使用完成C4D学习的进化!

 

在中影华龙学习视频包装的同学,一定有着对C4D表达式学习的美好记忆

(确定是美好记忆?)。通过对结点的串联,来实现魔术般的效果。

 

言归正传,这里假设大家已经具备C4D表达式的基础知识储备了。

先看一下节点的截图。最完整节点图在最下方


我们从思路上来分析实现的方法。明确目标,我们要生成一个色立体

(跟达芬奇大神孙老师学来的名词)。在三维空间中,以黑色方块的位置为参考点,

向上方块逐渐变为绿色;向右逐渐变为红色;向左逐渐变为蓝色。

三个方向的中间区域形成过渡色。图如下


通常颜色红绿蓝通道的数值使用0255的数值表示。

下图中材质球调节窗口中的RGB值显示为(37,0,0),

但是表达式中通过结果节点看到的结果是(0.145,0,0)。

所以C4D内部计算时,对颜色的数值采用01之间的数值去运算。

我们需要进行数值范围的转换。比如:R(红色)的数值范围需要从0-255转换到0-1

同理,G(绿色)和B(蓝色)也需要转换到01的区间里。


从理论上来说:我们以黑色小方块的位置为参考点,它的颜色为黑色,

R(红)G(绿)B(蓝)的数值为(0,0,0)。X方向来表示R的数值,Y方向表示G的数值,

Z方向表示B的数值。以X轴为例,算出X方向上的任意一个小方块距离黑色小方块的距离,

L表示,整个立方体方阵的边长用SL表示,然后用L除以SL,即L/SL,用P表示。

P表式任一方块与黑色方块的距离占立方体方阵边长的百分比。这个P01之间的数,

也就是R(红)通道的数值(在C4D内部计算时使用)。

表达式上怎么连接呢?先计算立方体方阵边长,如下


从表达式的连接上,我们使用范围映射节点来实现从距离LRGB通道颜色数值的转换。如下图


上图中,立方体511其实代表着任一一个小方块,为什么呢?后面会详细说明。

我们这里先说明L(任一方块到黑色小方块的距离)到RGB通道颜色数值的转换。

以立方体511为例,立方体511xyz轴的位置数值分别减去立方体0xyz轴的位置数值,

分别得到立方体511xyz轴三个坐标轴上与立方体0的位置差值。

然后使用范围映射把xyz轴上的距离值转化为RGB数值。转换设置如下图


上图中立方体方阵的边长200,作为范围映射的输入上限,即输入上限为200

界面右下角的设置中,输入下限为0,输出下限为0,输出上限为1

所以数值范围从0-200转为0-1

下面我们再来讲解为什么立方体511代表着任一个立方体。如下图


上图中,最左端的迭代节点,就是一个数据的循环,如下图


右下角的设置中,迭代起点为0,迭代终点为511

也就是在时间线播放时,一帧的时间内,迭代节点需要循环512

即迭代节点只是单纯的去取值,取值从0开始,一直取到511

循环到底做什么咱们后面详细讲解,先看看迭代节点连接到了什么节点上。

 

迭代节点分别连接到了3个链接列表节点的“索引”参数。

3个链接列表中分别存放了512个立方体,512个材质球,512个材质纹理标签。

 

任意从大纲中拖拽一个立方体进入表达式窗口,建立一个立方体节点。

任意从材质球窗口里拖拽一个材质球进入表达式窗口。

任意从大纲中拖拽一个立方体的材质纹理标签进入表达式窗口。

使用链接列表的输出参数“对象”,分别链接到立方体节点,材质节点,

纹理节点的输入参数“对象”。节点连接完毕后,我们来看看循环到底用来干什么。

 

循环到底做什么呢?让512个立方体,512个材质球,

512个材质纹理标签分别一一建立联系。也就是赋予材质!

比如,在一帧之内,迭代节点进行循环,当迭代节点取值为0时,

C4D从存储立方体的链接列表里取得第一个立方体,即右侧黄色高亮显示的“立方体0”,

如下图

同时从存储材质球的链接列表里取得第一个材质球,即右侧黄色高亮显示的“材质”。如下图


同时从存储材质纹理标签的链接列表里取得第一个材质纹理标签,

即右侧黄色高亮显示的“纹理”,如下图。


根据取到的第一个立方体的数据,即“立方体0”,依据它的位置,计算出RGB的数值。

RGB数值赋予给当前取到的第一个材质球,即“材质”,

然后把当前的材质球指定给当前取到的第一个纹理标签。

依此类推,在一帧之内,循环下去,迭代节点接下来取值为1时,为2时,

3......第二个立方体、第三个立方体、第四个立方体......会依次被赋予材质。

如下图


注意循环是发生在一帧时间之内,到下一帧时,循环过程会再进行一遍。

也就是说每一帧循环过程都会发生一遍!

有没有疑问?!为什么要每一帧都把512个立方体的材质都赋予一遍?

完全不需要每一帧都这样做,我们只需要起始帧的时候这样做就可以,

也就是在第0帧时,把512个立方体的材质赋予一遍就行了,也就是在第0帧时,

迭代节点循环一遍。第0帧之后表达式就不再进行赋材质的工作了。怎么处理?

如下图完整表达式节点


在最左边加一个“时间”节点,用“比较”节点进行判断,当时间不是起始帧时,

右侧的表达式不进行计算。也就是只有在第0帧时,右侧的表达式才进行运算

(这样就不用每一帧都循环赋予材质,不用浪费机器宝贵的软硬件资源了!)。

注意:图中有十几个结果节点是可以删除的,对于逻辑没有任何影响,只是用来观察数据!

 终于说完了!看上去像是在做数理化的习题?!不像是在搞艺术?!

其实数学、物理、化学等理工学科本身就是艺术!希望能够帮助到大家。

好啦,本次华龙绝学就传授到这里啦

感谢此次华龙绝学的主讲人:崔老师

希望大家可以动起手来 尝试尝试哦

中影培训官方微信