【发布时间】:2019-11-19 17:36:39
【问题描述】:
假设我们有一个有 6 个面的立方体。现在,我可以在 Shader Graph 中以不同的颜色为所有面着色吗?
基本上我想做的是用 Shader Graph 自己重现“极简主义 - Lowpoly Flat/Gradient Shader”。有什么建议吗?
【问题讨论】:
假设我们有一个有 6 个面的立方体。现在,我可以在 Shader Graph 中以不同的颜色为所有面着色吗?
基本上我想做的是用 Shader Graph 自己重现“极简主义 - Lowpoly Flat/Gradient Shader”。有什么建议吗?
【问题讨论】:
这取决于您希望能够显示哪种几何图形。如果您只是使用基轴,则可以使用对象空间法线的拆分 X/Y/Z 分量,使它们饱和,并将它们与各自的颜色相乘,然后将它们相加。这涵盖了 6 个面中的 3 个。对于其他人,除了在饱和之前对所有轴执行 OneMinus 之外,执行相同的操作。
不过,解决此问题的最通用方法是使用点积。点积计算一个向量与另一个向量的平行程度,并返回 -1 到 1 范围内的结果,其中 1 是完全平行的,-1 是反平行的。对于坐标轴 (1, 0, 0), (0, 1, 0) 和 (0, 0, 1),做 Dot(normal, axis),饱和,乘以颜色,将颜色结果相加。使用与上述相同的方法并将点积通过管道传递到 OneMinus 节点中,然后再饱和以获得其他 3 个轴。这允许您在世界空间和对象空间中应用效果。
【讨论】: