如何在Shader Graph中旋转材质?URP升级后材质轴异常求助
材质轴方向异常排查与Shader Graph旋转方案
一、轴方向异常的原因分析
从你描述的效果来看,升级前内置管线材质的色彩沿XZ平面(地形平面)分布,而Shader Graph重建后色彩沿XY平面显示,核心原因是采样空间不匹配:
- Sebastian的地形程序化教程默认基于世界空间XZ平面构建,内置管线材质通常直接使用世界空间的X、Z分量作为采样基准。
- 你当前的Shader Graph直接使用Mesh UV输出到颜色节点,而模型UV可能基于XY平面烘焙,或是误将对象空间的Y轴当作高度轴,导致轴向错位。
- 从你的材质图来看,缺少空间坐标转换节点,直接用原始UV驱动颜色输出,自然和原教程的空间采样逻辑不匹配。
二、修复轴方向异常的步骤
- 替换采样源:在Shader Graph中移除Mesh UV节点,添加World Space Position节点。
- 分离空间分量:用Split节点拆分World Space Position的XYZ分量,提取X和Z作为新的UV输入(对应原教程的地形平面)。
- 适配范围:若X/Z数值范围过大,可添加Multiply节点乘以一个缩放系数(比如0.1),让色彩分布和原效果匹配。
- 将处理后的X/Z分量连接到颜色节点的输入,即可恢复正确的轴向分布。
三、Shader Graph中旋转材质的两种方法
方法1:UV层面旋转(适用于纹理/颜色UV采样)
- 添加UV节点(选择UV0通道),连接到Rotate节点(路径:Math > Transform > Rotate)的
In端口。 - 为Rotate节点的
Angle参数创建可暴露的材质属性(右键参数 > Expose),方便在Inspector中实时调整旋转角度。 - 旋转中心
Center默认设为(0.5, 0.5)(UV中心),可根据需求修改。 - 将Rotate节点的输出连接到颜色/纹理采样节点的UV输入,完成UV旋转。
方法2:空间坐标旋转(适用于程序化地形类材质)
- 添加World Space Position节点,连接到Rotate About Axis节点(路径:Math > Transform > Rotate About Axis)的
In端口。 - 设置旋转轴为Y轴(地形通常绕Y轴旋转),为
Angle参数创建暴露属性。 - 将旋转后的空间坐标连接到后续的采样/颜色计算节点,实现整个材质的空间旋转。
内容的提问来源于stack exchange,提问作者Drunkiel
相关产品推荐
相关产品推荐

