Rig Graph 允许您创建资产并构建自己的绑定逻辑。这些逻辑会在ProcessAnimation 当中得到执行。创建 Rig Graph 资产时,Rig 预制件资产将会被自动创建,并与 Rig Graph 资产关联。在 Rig Graph 资产编辑界面中创建或修改控制点属性时,Rig 预制件资产也会同步更新,无需单独管理预制件。
注意: 由于 Rig Graph 在多线程中执行,因此无法在 Script Graph 中调用 mono 相关内容,例如 GetComponent,RayCast等。
在资产文件夹中Create -> Rig Graph Asset,创建默认资产。
选择预览时所需的游戏对象,进入资产编辑模式。注意:预览游戏对象上不能包含 Rig 预制件上的特有组件:Rig Graph Script Machine、Rig Graph Variables、Rig Effectors Builder。
在层级结构中 Rig 预制件的根对象下,添加控制点对象并编辑 Gizmo。
打开 Script Graph,连接节点创建绑定逻辑。
通过设置 Preview 窗口预览绑定效果。
构建绑定逻辑时,涉及到三个重要的事件触发节点,其执行顺序有有所不同。
| 事件节点名称 | 图例 | 执行顺序 | 作用说明 |
|---|---|---|---|
| On Setup Event | ![]() |
第0帧触发一次 | 用于初始化控制点的 Transform 值。 |
| On Forwards Solve(前向解算) | ![]() |
在 Setup Event之后,Backwards Solve之后执行,每帧均触发 | Rig Graph 中最主要的解算方向,定义控制点控制骨骼的逻辑 |
| On Backwards Solve(反向解算) | ![]() |
在 Setup Event 之后,Forwards Solve之前执行,每帧均触发 | 从当前骨骼姿势中,解算出控制点的 Transform 值,常用于控制点动画烘焙 |
在 Script Graph 中可访问 Rig Graph Manager 游戏对象层级下的所有 Transform,读写值的数据类型均为 Rigid Transform (仅包含旋转与平移变换)。
在通用人形角色 Rig 预制件的 Script Graph 中,骨骼基于 Humanoid Avatar 的标准骨骼定义,因此涉及骨骼需通过 HumanBodyBones 检索,对应的读写节点为 Get Avatar Bone Transform 和 Set Avatar Bone Transform。节点的 Name 端口数据类型为 HumanBodyBones,如下图所示:
通过 String 检索到的骨骼或控制点,其读写操作分别通过 Get Transform 和 Set Transform 节点完成。节点的 Name 端口数据类型为 String,如下图所示:
通过 Code Generate 辅助功能将 Script Graph 中定义的绑定逻辑转换为 C# 代码时,对于 Script Graph 中的 List 相关节点,有以下注意事项:
Visual Scripting 中除了反射节点,还支持自定义功能节点,节点的端口定义,详情参阅 Set Bone Transform 等功能节点的定义脚本。
创建具体控制点时,需要在控制点组根对象下创建子对象。创建并选中子对象后,场景中会出现一个带“+”的 Overlay,点击“+”会自动为当前对象挂载 Rig Effector 组件。Rig Effector 组件添加后,Overlay 上的“+”被“-”取代,点击“-”会删除 Rig Effector 组件。所有添加了 Rig Effector 组件的控制点,都会被 Rig Effectors Builder 收集。
通过 Rig Effector 组件,还可对控制点的 Gizmo 进行编辑设置。
支持的数据结构:bool、int、float、string、Enum、Vector 2、Vector 3、Vector 4、Quaternion、RigidTransform、List<>、Spline
自定义的数据结构:Transform1、ElementType