Animation nodes(下称为AN)的节点式编程,为没有编程背景的Blender用户打开了一面通往程序深处的门。它弱化了编程语言的各种格式细节和语法,让用户专注于规则的制定,让各种创新成为可能。上面案例主要利用AN的循环节点,制作一个带延后跟随效果的模型牵动。下面是具体操作视频。
关键节点介绍:
Transformation Output
这是物体变换属性的输出节点。其中,中间的物体输入栏,指定需要被限制的物体。勾选上面移动,旋转和缩放的轴向,则开启下面的矢量输入窗口,再把主导物体的相关属性连结过来,就能实现利用主导物体控制被动物体的规则。
Animate Float
Animate Float节点是一个函数映射(Mapping)。这个有必要与各位重新科普一下高中数学讲的函数映射,因为这个知识点是编程的一个基础,并出现在许多节点之中。首先,我们把上图的Start:0.00与End:10.00想象成一条长度为10的直线。然后底部的Duration(时长),想象成另外一条起点为0终点为20的,与第一条线平衡的直线。那么这两条线的数值是一一对应的(One-to-one)。也就是,第一条线的开端0对应第二条线的开端0;第一条线的末端10,对应第二条线末端的20。而节点顶部的Time输入栏中的2,属于第二条线的参考点,即走到了第二条线的1/10(Time/Duration)位置,那么输出值(result)则是第一条线1/10位置的输出值,也就是1。
案例中,控制物体锥体的z坐标,作为End数值,而被动物体,即球体序列的z坐标作为start数值。这样设计的目的是,每一次循环,被动物体的z坐标值,都会被映射到两个物体z值之间Time/Duration(如1/10)的位置。如果循环多次,被动物体的z坐标将无限接近于控制物体的z坐标。
Loop
循环命令由两个节点组成,分别是Invoke Subprogram和Loop Input。其中invoke subprogram可以简单理解为材料输入窗口,本案例中,材料是8球体(序列编号从0-7);而Loop Input是循环的起点,配合后面的节点组合,制定了一套规则:锥体的z坐标控制这组球体的z坐标,且有延时跟随。
需要注意的是,AN默认是自动执行程序的,也就是循环建立起来后,就会被不断地执行的。AN编辑界面左上角的时间数值,则是每次程序执行的耗时,以ms微秒为单位。而延时跟随效果,则是基于这个自动执行而形成的,而不是基于常规的动画帧播放。
最后说一下感悟。为什么Blender已经有那么多功能了,我们还需要学习这个烧脑的节点编程呢?我的答案是,为了创新。无论软件有多么强大,多么用户友好,它总是不可能满足所有新的设计。不论是那个范畴的艺术创作者,最核心的价值就是创新,如果只懂使用软件产品本身定义好的功能,那么必然会出现一个不可逾越的瓶颈。而AN的出现,让用户们不需要花一年半载学习Python语言和Blender的数据架构,即可投入到新的创作中,可以说是无量之举。
领取专属 10元无门槛券
私享最新 技术干货