unity shadergraph 顶点旋转
时间: 2025-01-15 20:48:25 浏览: 64
### Unity Shader Graph 中实现顶点旋转
在 Unity 的 Shader Graph 工具中,可以通过操作顶点位置来创建各种视觉效果。为了实现场景中的顶点旋转功能,主要思路是在 `Vertex` 处理阶段修改网格模型的空间坐标。
#### 准备工作
确保已安装最新版本的 **Shader Graph** 插件并设置好渲染管线为 HDRP 或 URP[^1]。接着,在项目内新建一个材质球,并关联至目标 Mesh Renderer 组件;随后右键点击 Project 文件夹选择 "Create -> Shader -> Universal Render Pipeline -> Unlit Shader Graph" 来建立新的 Shader Graph 资源文件。
#### 构建旋转逻辑
进入编辑好的 Shader Graph 后:
- 添加 Time 输入节点用于获取时间变量;
- 使用 Vector1 类型参数定义角度增量 AngleIncrement 和中心轴 Axis (默认设为 Y 轴);
- 利用 Multiply 乘法运算符连接 Time 输出与 AngleIncrement 参数得到当前帧的角度变化量;
- 将上述结果传递给 Sine / Cosine 函数计算正弦余弦值作为矩阵构建的基础数据;
- 结合 Matrix Construction 矩阵构造器以及之前设定的 Rotation Center(旋转中心),完成完整的旋转变换矩阵组装;
- 把 PositionWS 属性接入 Transform 模块前先通过 Subtract 减去 Rotation Center 移动到原点附近再执行变换处理;
- 变换后的向量重新加上 Rotation Center 返回原始空间定位;
- 修改 Vertex Position WS 字段应用最终调整过的三维坐标。
```csharp
// C# Code Snippet to demonstrate how you might set up parameters within a script that could be used by the shader.
public class RotateObject : MonoBehaviour {
public float angleIncrement = 90f;
private void Update() {
Material material = GetComponent<Renderer>().material;
material.SetFloat("_AngleIncrement", angleIncrement * Time.deltaTime);
}
}
```
此过程涉及到的知识点包括但不限于:理解世界坐标系下的几何转换原理、掌握基本三角函数的应用场景、熟悉 Shader Graph 内部各个模块的功能特性等[^2]。
阅读全文
相关推荐


















