节点阴影

历史上Modo,使用堆栈顺序范例专门通过“着色器树”(Shader Tree)定义了曲面的所有材质着色。除非应用了遮罩或更改了其混合模式,否则按列表顺序排列的较高的层会遮盖较低的层。这种工作方式非常直观和灵活,但是确实使某些类型的设置难以管理,或者完全无法实现某些效果。

通过引入“节点着色”,您可以使用各种驱动因素在每个样本的基础上控制几乎任何表面属性,从而产生以前版本中根本不可能实现的效果。

之所以命名“节点阴影”,是因为它使用节点网络和特定功能的简单视觉表示。这些功能可以代表一个项目及其通道,一个数学运算,甚至是某种类型的以某种方式评估数据的指令。然后将这些不同的节点链接在一起,创建一个网络,该网络定义信息流并控制信息流的评估方式,由此产生的网络称为图。

以这种方式工作提供了一种用于创建着色指令的可视化编程方法,其中每个节点都应用其贡献,然后将信息传递给下一个节点。通过网络的信息流从左到右,其中左侧链接连接为信息提供输入,信息被评估然后返回到右侧连接以产生输出。一旦建立了网络并将其分配给曲面,便会在渲染时评估关联的图形以产生最终的阴影结果。

小费:  Schematic视口(最常用于装配和粒子)是定义阴影图的控制界面。首先必须理解节点着色不是着色器树的替代,着色器树仍然是将着色应用到实际表面以进行渲染的要求,这一点很重要。每个图must包含至少一个特定于Shader Tree的项目。因此,定义节点着色时的基本工作流程是将一个项目添加到“着色器树”(放置到适当的目标中物料组),然后将该纹理层添加到Schematic视口,以进行进一步的网络开发。

图构建基础

通过同时使用多个视口,可以更有效地处理节点图。您可以轻松地在着色器树, Schematic视口和Channels在默认列表中Render工作区布局。可以在下面的菜单栏中访问Layout > Layouts > Render (或只是Render标签,在标签式工作区中)。的Schematic面板(默认情况下不可见)位于选项卡式视口组中Preview窗口,通过选择Schematic特定标签。

任何网络图都至少需要两个节点。由于必须在节点网络中至少包含一个特定于Shader Tree的项,因此通常最简单的方法是在其中添加初始项来启动任何新的着色图。如果您不熟悉着色器树,强烈建议您阅读着色树。这说明了将项目添加到树中并进行设置Effects。添加项目后(必要时将其适当放置在层次结构中),就可以将其放入Schematic视口。这可以通过以下两种方式完成:通过拖放或通过简单地在“着色器树”中选择项目层并使用Add Selected在中找到的按钮Schematic视口。

然后,可以将其他节点直接添加到Schematic使用其视口Add按钮。左键单击该按钮将打开一个包含所有可能节点的菜单,尽管您通常会坚持使用Channel ModifiersShading InputsShader Nodes节点阴影时的菜单选项。选择菜单中的任何项目都会将其添加到Schematic视口。可以通过左键单击并在节点的标题上拖动到新位置,然后释放鼠标按钮来重新放置结果节点。最容易看到数据流从左到右,因此在Schematic视口中,最好按此顺序排列它们,最终目标节点位于视口最右侧。

根据项目的不同,新添加的节点要么完整保留公共通道,要么根本不包含任何通道。通道是节点图中的实际运算符,使用的运算符取决于所需的结果。当需要特定的通道时,可以通过首先在通道中选择目标节点将其添加到节点。 Schematic,然后在Channels视口。使用相同的拖放操作或Add Selected上面概述的方法,将频道添加到Schematic,将它们附加到其关联的项目。

创建节点图的最后一步是通道的连接。这表示项目之间的实际数据流。基本连接有两种类型,输入或输出。有些渠道只有一个,而另一个却两者都有。通道从节点的右侧(输出)连接到另一个节点的左侧(输入)。通道连接由节点两侧的小圆圈表示。单击并拖动将创建一个面条,即在视口中绘制的一条线以可视方式表示连接,然后将面条从输出拖动到输入(反之亦然),然后释放鼠标按钮定义实际的连接,从而固定通道之间的线。即使节点已移动,面条也会进行调整,以确保保留连接表示。

节点图基础-第1部分:

节点图基础-第2部分:

警告:  这是构建基本节点图,添加节点,在必要时添加通道,然后在这些通道之间建立连接的方式。还有各种规则可以控制不同通道类型的连接,这对于理解复杂图形时的理解非常有帮助。使用的全部细节ItemsChannels示意图视口中的内容示意图视口

节点着色基础

知道如何连接图形是很容易的部分,但是如果不了解底层架构,那么做起来就没有多大用处。在最基本的层面上, Nodal Shading关于每个样本的驱动值。为了更好地理解它,我们将其分为两个部分:

Driving values -值只是一个数字,但是驱动的是什么? 着色器树中的每个项目都有许多属性,这些属性是显示在Properties选中时,每个项目的面板。所以,对于Material项目,这将是像Diffuse Color要么Reflection Amount控件。这些控件中的每个控件实际上都是项目上的一个通道,其中channel仅仅是可以动画化的任何属性,或者在节点阴影的情况下都可以控制。

在示意图中,取一个节点的RGB颜色输出,然后将其连接到另一个节点的RGB颜色输入,例如材料的Diffuse Color通道,使输入值控制或驱动与其连接的通道。在“材质”设置中定义的颜色本身不再适用;它的值被传入连接的值覆盖。因此,基本上,通过其输入连接的任何通道都由输入值驱动。驱动通道在Channels视口由带有箭头的小齿轮图标组成。

Per sample -样品的组成是什么? 在渲染图像时,如果我们现在仅关注单个像素,则该像素由多个样本倍数组成,以达到最终值。例如,单次光线跟踪操作会将来自相机的光线沿直线发射到场景中。如果光线撞击表面,则在3D空间中的那个位置对撞击的表面进行采样以找出其外观。回答一些问题,例如什么是表面颜色,光泽,反光,阴影? 所有这些不同的可能性都是单独的样本。节点阴影使您可以在此子像素级别访问样本引擎。

通常,这些样本都是直接从“着色器树”(Shader Tree)中定义的设置派生的,但是通过节点阴影,事情变得非常有趣,因为您可以直接利用这些样本中的信息,在中间修改它们的结果,然后将这些结果应用于不同的属性。共。样本可以来自多种来源,这就是着色器输入参加进来。着色器输入是信息收集节点,输出所采集的各种样本的结果。每个选项都允许您收集有关场景的特定信息,并使用所收集的内容来控制其他内容。

例如, 照亮节点评估光是否在表面发光, 射线广播节点使您可以创建采样射线,以收集与射线相互作用的曲面有关的信息。的射线类型节点根据用于计算光线的实际光线类型来分离阴影信息,并且“着色器输入”将提供有关被阴影物体(无论是表面,粒子,体积还是纹理)的实际信息。

节点阴影不必与复杂的图形,光线或样本有关。有时只需要简单的操作即可。仅在着色器树中,您就可以使用Effect可以为每个图层分配的设置。如果效果的所有可能排列都是可用的,则结果列表将无法管理。节点阴影可提供更多控制。例如,调制网格很容易Line Width具有纹理,甚至具有表面入射角或照明量。以每个样本为基础的驱动值是一个非常简单的概念,但在最大程度发挥其潜力时也具有难以置信的强大功能。

建立程序纹理:

您还可以通过输入通道以点阵方式驱动渲染输出,以获取每个渲染输出的颜色和值。有关如何执行此操作的更多信息,请参见节点驱动渲染输出