衰减 (ATTENUATED) 这个词的含义是消减和柔化阴影 . 在以下的例子中 , 我们通过调整阴影的颜色来减弱阴影的亮度 . 我们这里所演示的技巧在某些场景中是十分有效的 . 他能极大的减少渲染时间 . 但是在某些场合慊故潜匦胧褂霉庀咦纷?. 例如当光线通过使用了透明帖图的物体或有颜色的透明表面时 , 就要必须使用光线追踪 .( 但即使是后面两种情况有时也可以用深度帖图模拟光线追踪 . 可以参考我翻译的另一篇教程。
下面两图是左边用光线追踪右边是衰减深度帖图渲染 . 效果差不多但是光线追踪的渲染时间要多 2.6 倍 .
Section1
打开场景 attenuatedDmapShadow.mb 这个场景包含一个椅子模型和一个加上了 attenuated dmap shadow 效果的聚光灯 , 其名称为 dmapSoftShadow.
Section2 .
在 Hypershade 窗口中的 light 选项卡下选择 dmapSoftShadow, 并点击 Show Upstream Connections 按钮 . 便可以看到这个聚光灯的网络节点 . 这个网络是为了从最近点到最远点淡化阴影而设置的 . 它包含 3 个 Locators, 一个灯光信息节点以及一些能驱使两个 Ramp textures 调整阴影的过滤尺寸和颜色属性的数学节点 .
Section3
Locator 的作用是在空间里标定位置 . 第一个 Locator 的位置就是聚光灯的位置 , 他和聚光灯之间有 constrained 的联系 . 另外两个 Locator 分别在阴影的开始和结束的位置 .
Section4
这 3 个 locators 与 2 个 Distance Between 节点连接 .Distance Between 节点是用来计算聚光灯和另外两个 locator 的距离的 .
Distance Between 节点输出的是 3D 空间上两点间的距离 . 是通过下面的公式计算的 .
(x1,y1,z1) 和 (x2,y2,z2) 分别是两个 locator 的坐标 .
注意 : 必须用 MEL 命令来创建 Distance Between 节点 , 输入 createNode distanceBetween; 命令 . 这个节点不会在 Hypershade 出现 . 你必须在 Outliner 中用鼠标中键把它拖到 Hypershade 中去 .
Section5
然后把聚光灯到两个 locator 的距离连接到 plusMinusAverage Utility 节点上 . 并将此节点设为 Subtract 方式 . 这是一个将聚光灯到两个 locator 的距离相减的工具 . 我们可以了解到两个距离之差 ( 注意这里是遵循矢量加减法则 )
这个距离上的差值将决定两个 Ramp texture 节点如何影响 dmap shadow 的 Filter Size 和 Shadow Color.
Section6
为了确定聚光灯到某个点的距离 , 必须使用 Light Info Utility 节点 . 和 Sampler Info 节点相似 ,Light Info 节点与其他节点连接时能提供某个被渲染点的信息 .
Light Info 与 Sampler Info 不同之处在于需要将一个灯光信息连接到 Light Info 上 . 你会注意到在渲染网络中 dmapSoftShadow 聚光灯的 worldMatrix 属性连接到了 Light Info 节点的 worldMatrix 属性上 . 它告诉了 Light Info 从场景中的什么地方计算输出属性 Sample Distance.
Sample Distance 是从聚光灯中心到某个被渲染点的距离 .
注意 :Light Info 节点在确定 Sample Distance 时十分有用 .
Section7 和 section5 的方法类似 , 我们用另一个 plusMinusAverage 节点来确定 Sample Distance 和聚光灯到 startShadow locator 的距离差 . 为方便起见 , 这个差值命名为 sample point difference.
新闻热点
疑难解答