Version: 1.7
语言 : 中文
组件
Graph Code Generator 概述

Rig Graph 资产构建

Rig Graph 允许您创建资产并构建自己的绑定逻辑。这些逻辑会在ProcessAnimation 当中得到执行。创建 Rig Graph 资产时,Rig 预制件资产将会被自动创建,并与 Rig Graph 资产关联。在 Rig Graph 资产编辑界面中创建或修改控制点属性时,Rig 预制件资产也会同步更新,无需单独管理预制件。

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

快速开始

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

  2. 选择预览时所需的游戏对象,进入资产编辑模式。注意:预览游戏对象上不能包含 Rig 预制件上的特有组件:Rig Graph Script MachineRig Graph VariablesRig Effectors Builder

  3. 在层级结构中 Rig 预制件的根对象下,添加控制点对象并编辑 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 预制件的 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

组件
Graph Code Generator 概述