欢迎光临散文网 会员登陆 & 注册

C4D场景节点学习笔记001

2022-08-01 14:41 作者:独孤嘌呤  | 我要投稿

节点编辑是主流三维软件的发展趋势,作为C4D的忠实用户,一直都想把Scene Nodes(场景节点)这块吃透。奈何这方面的教程实在是凤毛麟角,自R23推出场景节点以来,经过了三个版本的迭代,我想或许是时候开始挖坑了(用的是R26版本)。

既然没有成体系的教程,那我就只好通过“Cinema 4D User Guide”逐个击破。等我出关那日,就是开课收徒之时。哈哈,开个玩笑,先老老实实从搬运工做起。

User Guide中是这样介绍Scene Nodes的:节点对于C4D用户来说不算新概念,在XPresso编辑器和材质系统中都有使用。节点系统将单独的功能以图形元素的方式显示,节点之间可以交换特定的信息。多节点的连接就像是编程语言,却可以在无需了解编程代码的前提下实现特定的程序化功能。(好比Houdini中的VOP节点,可以自定义创建一个功(mei)能(sha)独(yong)特(chu)的变形器)

场景根节点是Nodes界面默认的节点,它起到连接项目和节点对象的作用。连接到这里的节点不仅出现在视窗中,还会出现在场景管理器窗口中。

Scene Root

当我在Nodes窗口中双击鼠标时,弹出了这么个玩意儿……节点是不少,但和Houdini比起来只能算弟弟。这里我找了个几何图元中的圆柱体,选中后双击或者按【Enter】键就能创建新节点。

当我觉得可以连接端口在视图中显示圆柱体的时候,却提示无法连接。貌似这个场景根节点的端口还有点挑剔,几何类型的端口无法识别。

如果想要在视图中看到圆柱体,得需要有人牵线搭桥。各种算子节点踊跃承担起这一任务,比如几何算子,就能将几何体作为算子输出到场景中。一波操作下来,可算是在视窗中看到对象了,激动之情溢于言表。

可接下来当我想移动这个圆柱体时,我又傻眼了。虽说圆柱体算子也有基本属性、对象属性等,但是坐标属性呢?我要移动、旋转、缩放怎么办?

 再看看几何算子,好吧,这就是个单纯的算子。。。

但没有什么能拦住我,我又发现了矩阵算子。原来这种基本功能都被当作一个算子了,看上去好像操作变麻烦了,但每个节点携带的信息确实是降至了最低。而且这个矩阵算子除了有自身的算子属性外,还可以通过外部矩阵来控制。想必能实现更多有趣的功能,在以后的学习中肯定会遇到。

其实,上面罗嗦了这么多,用一个网格参数对象算子就搞定了。在其对象属性中可以修改“参数对象类型”,得到包含圆柱体、球体等在内的任意几何体。该节点本身就是一个算子,可以直接连到场景根节点上。不仅有自身的Coord即坐标属性,也可以用矩阵算子来控制。显然,如果需要变换初始几何体得到不同的结果,这个算子将是最好的选择。

Primitive

回到之前的几何算子,当我将它连接到场景根节点后,发现可以输出原几何体的矩阵信息和几何信息了。选择任意端口,可以在左下角看到端口的名称、类型和数值,这些是很有用的信息。知道了类型,我们才可以思考这些数据能用来干啥。


 使用中文名称的节点输入是有点难受的,但为了看得更加直观,还是坚持下去吧。毕竟,整篇笔记都是中文的。

接着往下学习,看到这里,差点就给我干懵了。说好的循序渐进呢?于是我仔细看了下说明,它其实是想介绍可以自定义创建几何体的功能,只需要定义好坐标点的位置以及拓扑结构,就能创建出任意形状的几何体。至于新冒出来的一堆节点,都是为实现这个功能服务的。比如我要定义点坐标,得用到设置几何数据(Geometry Property Set)节点;我要设置拓扑关系,又得用到设置多边形拓扑(Polygon Topology Set)节点。

点击“SCENE”文件可以下载打开作为参考

知道是干啥的后就很简单,我举个例子大家应该就能明白。比如我要自定义创建一个四棱锥(虽然网格参数对象已有金字塔选项,但这里我只是举个例子),就得有底面的四个点构成正方形,另外一个底面外的点与四条边分别构成三角形。比如这五个点的坐标分别为0(-100,0,-100)、1(100,0,-100)、2(100,0,100)、3(-100,0,100)、4(0,100,0)(别忘了C4D中竖直方向是y轴)。

有了想法后下面就开始付诸行动,设置几何数据节点有个迭代的输入端口,可用来输入这些坐标。按照提示我又拿来了构建(Build)节点(友情提示:找不到节点时可以参考节点图标,可以缩小查找范围。比如构建节点就是在数据结构类节点中找到的),在输入属性中可以将“数据类型”设为矢量(Vector)(三维空间坐标是矢量类型,不解释),一共五个点。然后连接节点,注意先设置几何数据节点的输入属性中的类型设为三维点,并勾选“数组模式”选项。直接连接中间会多出一个迭代收集节点,不影响最终结果。

点坐标设置好了,然后是拓扑设置。也就是哪几个点围成一个面。先看看设置多边形拓扑节点有哪些输入值,发现有三个:点、外轮廓和组,都是用来自字符串的索引数组(Index Array from String)节点来定义的。

Index Array from String

以我不是很成熟的思考来看,大概是这么个意思。第一个数组就是把每个面的点编号全部按顺序列出来,所以这里我填的是:0,1,2,3,0,1,4,1,2,4,2,3,4,3,0,4。输入了这一串肯定是没法识别的,所以需要按照多边形边数来分组(或者每个多边形有几个点),所以外轮廓数组为:4,3,3,3,3。意思是将点数组按照特定的个数分成五组。第三个是跟边界有关的信息,具体我还没整明白,直接填1,1,1,1,1。(注意是在英文输入法下)

于是视图中就多了个四棱锥(线框显示),每个点的坐标是可以在初始节点中修改的。比如将棱锥的顶点移到某个角的正上方得到直角棱锥。如果用某个数值来统一控制元素点的坐标值,是不是就能设置诸如宽度、高度这样的参数了呢?

今天就先写到这里吧,再见!

C4D场景节点学习笔记001的评论 (共 条)

分享到微博请遵守国家法律