口型同步配置文件和映射
了解 Convai 口型同步如何使用配置文件和映射来驱动实时面部 blendshape 动画,内置默认值如何工作,以及何时创建自定义资源。
简介
Convai 口型同步通过将传入的语音动画通道与角色上的 blendshape 匹配,实时驱动面部 blendshape 动画。为了可靠地实现这一点,系统需要两样东西:
A Profile,它定义了角色使用的通道架构
A 映射,它告诉 SDK 这些通道如何连接到网格上的实际 blendshape 名称
这两个资源共同使口型同步流程变得可预测、可编辑,并且易于在 Unity 编辑器中适配。
概述
从高层来看,口型同步系统要回答两个问题:
当前启用了哪种面部骨骼架构? 这由 Profile.
每个传入通道应如何影响这个特定的角色网格? 这由 映射.
二者都存储为 Unity ScriptableObject 资源,因此可以在编辑器中直接检查、分配和自定义。
什么是配置文件?
A 口型同步配置文件 定义了面部骨骼架构所期望的通道布局。它充当传入面部动画数据的架构。
例如,如果某个配置文件期望一个名为 jawOpen的通道,系统就会根据该配置文件的规则来解释这个通道。这使得 SDK 能在任何与网格相关的映射发生之前,知道正在发送什么数据以及如何对其进行分类。
配置文件并不绑定到单个角色。它定义的是一种可重复使用的面部骨骼格式,多个角色可以共享。
什么是映射?
A 口型同步映射 将配置文件通道连接到角色的实际 blendshape 名称上 SkinnedMeshRenderer.
这就是口型同步能够在真实角色资源上工作的原因。即使传入的通道架构是有效的,只有系统知道每个通道应该驱动哪个网格 blendshape 时,动画才能正确应用。
映射不仅仅能做简单的一对一路由,它还可以:
将一个源通道路由到多个目标 blendshape
缩放或偏移单个通道
限制过强的数值
禁用不应被驱动的通道
可选地允许未映射的名称直接透传
配置文件与映射如何协同工作
流程很简单:
口型同步配置文件决定当前启用哪种通道架构
口型同步映射从该架构中读取通道
映射将处理后的数值写入角色网格上的目标 blendshape
这种分离很重要,因为它允许一个配置文件在许多不同角色之间复用,而每个角色仍然可以拥有自己的映射。
例如,两个角色可能都使用 arkit 配置文件,但一个可能使用默认映射,而另一个由于 blendshape 名称不同而使用自定义映射。
支持的配置文件格式
目前,Convai 支持以下口型同步配置文件格式:
ARKit
arkit
MetaHuman
mha
CC4 扩展
cc4_extended
这些是目前唯一受支持的传输格式。
这意味着:
你可以在项目中创建自定义配置文件资源
你可以根据工作流重命名或组织配置文件
你可以覆盖某个配置文件所使用的受支持传输格式
你 不能 通过输入自定义值来引入一种全新的传输格式
换句话说,创建自定义配置文件并不会为新的后端格式添加支持。传输格式仍然必须解析为以下受支持值之一: arkit, mha,或 cc4_extended.
内置配置文件
SDK 为受支持的格式包含了内置配置文件。这些代表了口型同步系统使用的标准架构,并且旨在作为权威的内置定义。
每个配置文件资源都包含:
配置文件 ID
内部运行时标识符
显示名称
在编辑器中显示的人类可读标签
传输格式
活动流程使用的受支持格式标记
内置配置文件资源位于:
配置文件注册表
配置文件被分组到一个 配置文件注册表 中,而不是逐个加载。
内置注册表位于:
在运行时,SDK 会加载内置注册表,扫描同一 Resources 路径下的其他注册表,并将它们合并为一个单一目录。
注册表按优先级合并:
优先级数值较低的项先处理
优先级更高的项可以覆盖现有的配置文件 ID
重复的配置文件 ID 会产生警告,且优先级更高的定义生效
这让你无需直接编辑内置 SDK 资源,就能扩展或覆盖配置文件定义。
内置默认映射
SDK 还包含适用于受支持配置文件类型的内置默认映射。
它们位于:
内置集合包括:
ConvaiLipSyncDefaultMap_ARKit
arkit
ARKit 通道的同构式默认映射
ConvaiLipSyncDefaultMap_MetaHuman
mha
MetaHuman 通道的同构式默认映射
ConvaiLipSyncDefaultMap_CC4Extended
cc4_extended
CC4 扩展通道的同构式默认映射
ConvaiLipSyncDefaultMap_ARKitToCC4Extended
arkit
从 ARKit 通道到 CC4 扩展 blendshape 名称的跨骨骼架构转换
这些默认映射旨在开箱即用地覆盖常见用例。
为什么某些内置通道会被限制或禁用
某些内置映射会有意降低或抑制特定通道,以便在常见角色设置上保持结果稳定且自然。
例如包括:
下颌张开限制 以减少夸张的口部运动
眼球旋转通道禁用 适用于不使用由 blendshape 驱动眼部运动的骨骼架构
装饰性通道禁用 适用于这些通道不适合语音动画的骨骼架构
默认映射注册表
该 默认映射注册表 定义每个配置文件自动使用哪一个默认映射。
它位于:
此注册表将每个受支持的配置文件 ID 映射到其默认的 ConvaiLipSyncMapAsset.
映射解析如何工作
当口型同步组件初始化时,SDK 会通过一个回退链确定要使用哪个映射:
组件上的显式映射 如果直接分配了一个映射资源,并且其目标配置文件与活动配置文件匹配,则使用该映射。
默认映射注册表查找 如果没有分配有效的显式映射,系统会检查活动配置文件的默认映射注册表。
安全禁用回退 如果找不到有效映射,SDK 会创建一个安全回退,输出零值而不是为角色做动画。
这种行为可确保缺失或不匹配的设置以安全方式失败,而不会导致场景崩溃。
何时创建自定义资源
通常你 不是 不需要自定义资源,如果你的角色已经匹配某个内置受支持格式,并且它的 blendshape 名称遵循预期的命名约定。
在以下情况下,你应该创建一个 自定义映射 :
你的角色使用不同的 blendshape 名称
你需要自定义限制或缩放
你希望一个源通道驱动多个目标
你希望更好地控制哪些通道被启用
你可以创建一个 自定义配置文件 :
你希望有一个项目特定的配置文件标识或标签
你希望在项目内部以不同方式组织受支持格式
你需要一个自定义配置文件资源,但它仍应解析为当前受支持的传输格式之一
如需逐步说明,请继续查看:
结论
配置文件定义通道架构。映射定义该架构如何驱动特定网格。
一旦你理解了这种分离,口型同步工作流就会变得很直接:选择与你的角色设置相匹配的受支持配置文件格式,然后使用内置映射或自定义映射,将这些通道连接到角色的 blendshape。
需要帮助? 如有疑问,请访问 Convai 开发者论坛.
最后更新于
这有帮助吗?