Version: 1.8
语言 : 中文
组件
模块化 Rig Graph 资产构建

Rig Graph 资产构建

Rig Graph 允许您创建资产并构建自己的控制点组和绑定逻辑,这些逻辑会在ProcessAnimation 当中得到执行。

注意: 由于 Rig Graph 在多线程中执行,因此无法在 Script Graph 中调用 mono 相关内容,例如 GetComponentRayCast等。

快速开始

  1. 在资产文件夹中Create -> RigGraph -> Rig Graph Asset,创建默认资产。

  2. 选择预览时所需的游戏对象,进入资产编辑模式。

  3. 在层级结构中带有 _RigRoot 后缀的节点即为控制点组的根对象。在根对象下,添加控制点对象并编辑 Gizmo。

  4. 打开 Script Graph,连接节点创建绑定逻辑。

  5. 通过设置 Preview 窗口预览绑定效果。

资产创建和编辑界面
资产创建和编辑界面
控制点创建和 Script Graph 编辑窗口
控制点创建和 Script Graph 编辑窗口

预览功能

  • 进入资产编辑界面后,立即开启预览,默认的解算方向为前向解算
  • 切换到反向解算反向和前向解算时,需要先设置好 Source Clip,否则将无法切换。解算方向切换成功后,会自动开启预览。
  • 预览开启时,无法在 Hierarchy 窗口中改变控制点的现有层级关系,若想修改控制点的层级关系(删除或改变现有控制点的父子关系)需要先手动关闭预览,再进行层级关系的修改。如果在预览开启时,新建控制点,会自动关闭预览模式。
Rig 效果预览示例
Rig 效果预览示例

节点说明

事件触发节点与执行顺序

构建绑定逻辑时,涉及到三个重要的事件触发节点,其执行顺序有有所不同。

事件单元的执行顺序
事件单元的执行顺序
事件节点名称 图例 执行顺序 作用说明
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 Graph 资产的 Script Graph 中,骨骼基于 Humanoid Avatar 的标准骨骼定义,因此涉及骨骼需通过 HumanBodyBones 检索,对应的读写节点为 Get Avatar Bone Transform 和 Set Avatar Bone Transform。节点的 Name 端口数据类型为 HumanBodyBones,如下图所示:

通过HumanBodybones检索的骨骼读写节点
通过HumanBodybones检索的骨骼读写节点

通过 String 检索到的骨骼或控制点,其读写操作分别通过 Get Transform 和 Set Transform 节点完成。节点的 Name 端口数据类型为 String,如下图所示:

通过String检索的控制点/骨骼读写节点
通过String检索的控制点/骨骼读写节点

List节点的使用

通过 Code Generate 辅助功能将 Script Graph 中定义的绑定逻辑转换为 C# 代码时,对于 Script Graph 中的 List 相关节点,有以下注意事项:

  • 若需创建 List,不可使用 Create List 节点,需通过List of [Value Type] 创建,并在创建时设置 List 的 capacity。
List of String节点
List of String节点
  • 允许使用的 List 相关节点包括:Clear List、Add Item、Get Item、Count Items。

自定义功能节点

Visual Scripting 中除了反射节点,还支持自定义功能节点,节点的端口定义,详情参阅 Set Bone Transform 等功能节点的定义脚本。

控制点组构建

创建具体控制点时,需要在控制点组根对象下创建子对象。创建并选中子对象后,场景中会出现一个带“+”的 Overlay,点击“+”会自动为当前对象挂载 Rig Effector 组件。Rig Effector 组件添加后,Overlay 上的“+”被“-”取代,点击“-”会删除 Rig Effector 组件。所有添加了 Rig Effector 组件的控制点,都会被 Rig Effectors Builder 收集。

通过Overlay增删Rig Effector组件
通过Overlay增删Rig Effector组件

通过 Rig Effector 组件,还可对控制点的 Gizmo 进行编辑设置。

Gizmo属性编辑
Gizmo属性编辑

数据结构说明

  • 支持的数据结构:bool、int、float、string、Enum、Vector 2、Vector 3、Vector 4、Quaternion、RigidTransform、List<>、Spline

  • 自定义的数据结构:Transform1、ElementType

组件
模块化 Rig Graph 资产构建