For the complete documentation index, see llms.txt. This page is also available as Markdown.

口型同步配置文件和映射

了解 Convai 口型同步如何使用配置文件和映射来驱动实时面部 blendshape 动画,内置默认值如何工作,以及何时创建自定义资源。

简介

Convai 口型同步通过将传入的语音动画通道与角色上的 blendshape 匹配,实时驱动面部 blendshape 动画。为了可靠地实现这一点,系统需要两样东西:

  • A Profile,它定义了角色使用的通道架构

  • A 映射,它告诉 SDK 这些通道如何连接到网格上的实际 blendshape 名称

这两个资源共同使口型同步流程变得可预测、可编辑,并且易于在 Unity 编辑器中适配。

概述

从高层来看,口型同步系统要回答两个问题:

  1. 当前启用了哪种面部骨骼架构? 这由 Profile.

  2. 每个传入通道应如何影响这个特定的角色网格? 这由 映射.

二者都存储为 Unity ScriptableObject 资源,因此可以在编辑器中直接检查、分配和自定义。

什么是配置文件?

A 口型同步配置文件 定义了面部骨骼架构所期望的通道布局。它充当传入面部动画数据的架构。

例如,如果某个配置文件期望一个名为 jawOpen的通道,系统就会根据该配置文件的规则来解释这个通道。这使得 SDK 能在任何与网格相关的映射发生之前,知道正在发送什么数据以及如何对其进行分类。

配置文件并不绑定到单个角色。它定义的是一种可重复使用的面部骨骼格式,多个角色可以共享。

什么是映射?

A 口型同步映射 将配置文件通道连接到角色的实际 blendshape 名称上 SkinnedMeshRenderer.

这就是口型同步能够在真实角色资源上工作的原因。即使传入的通道架构是有效的,只有系统知道每个通道应该驱动哪个网格 blendshape 时,动画才能正确应用。

映射不仅仅能做简单的一对一路由,它还可以:

  • 将一个源通道路由到多个目标 blendshape

  • 缩放或偏移单个通道

  • 限制过强的数值

  • 禁用不应被驱动的通道

  • 可选地允许未映射的名称直接透传

配置文件与映射如何协同工作

流程很简单:

  1. 口型同步配置文件决定当前启用哪种通道架构

  2. 口型同步映射从该架构中读取通道

  3. 映射将处理后的数值写入角色网格上的目标 blendshape

这种分离很重要,因为它允许一个配置文件在许多不同角色之间复用,而每个角色仍然可以拥有自己的映射。

例如,两个角色可能都使用 arkit 配置文件,但一个可能使用默认映射,而另一个由于 blendshape 名称不同而使用自定义映射。

支持的配置文件格式

目前,Convai 支持以下口型同步配置文件格式:

Profile
ID

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 会通过一个回退链确定要使用哪个映射:

  1. 组件上的显式映射 如果直接分配了一个映射资源,并且其目标配置文件与活动配置文件匹配,则使用该映射。

  2. 默认映射注册表查找 如果没有分配有效的显式映射,系统会检查活动配置文件的默认映射注册表。

  3. 安全禁用回退 如果找不到有效映射,SDK 会创建一个安全回退,输出零值而不是为角色做动画。

这种行为可确保缺失或不匹配的设置以安全方式失败,而不会导致场景崩溃。

何时创建自定义资源

通常你 不是 不需要自定义资源,如果你的角色已经匹配某个内置受支持格式,并且它的 blendshape 名称遵循预期的命名约定。

在以下情况下,你应该创建一个 自定义映射

  • 你的角色使用不同的 blendshape 名称

  • 你需要自定义限制或缩放

  • 你希望一个源通道驱动多个目标

  • 你希望更好地控制哪些通道被启用

你可以创建一个 自定义配置文件

  • 你希望有一个项目特定的配置文件标识或标签

  • 你希望在项目内部以不同方式组织受支持格式

  • 你需要一个自定义配置文件资源,但它仍应解析为当前受支持的传输格式之一

如需逐步说明,请继续查看:

结论

配置文件定义通道架构。映射定义该架构如何驱动特定网格。

一旦你理解了这种分离,口型同步工作流就会变得很直接:选择与你的角色设置相匹配的受支持配置文件格式,然后使用内置映射或自定义映射,将这些通道连接到角色的 blendshape。

需要帮助? 如有疑问,请访问 Convai 开发者论坛.

最后更新于

这有帮助吗?