CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
可以在ADX LipSync获取的口形信息

可获取的口形

ADX LipSync作为解析结果所输出的口型有三种参数类型。
您可以根据角色的口型控制模式进行选择并分开使用。

口形数据(CriLipsMouth.Info)

CriWare.CriLipsMouth.Info
口形数据包含嘴巴纵向张开程度、宽度、舌头高度。
/* 口形数据结构体 */
public struct CriLipsMouth.Info {
public float lipWidth; /* 嘴巴宽度(0.0f ~ 1.0f) */
public float lipHeight; /* 嘴巴高度(0.0f ~ 1.0f) */
public float tonguePosition; /* 舌头位置(0.0f ~ 1.0f) */
bool isLipWidthReleased; /* 嘴巴宽度是否正在转换至闭合状态 */
bool isLipHeightReleased; /* 嘴巴高度是否正在转换至闭合状态 */
bool isLipToungueReleased; /* 舌头位置是否正在转换至闭合状态 */
}

适合用于表达口形数据,例如直接以横纵的参数控制嘴巴的模型
或以简单图形进行缩放(scaling)等。
此外,只想以嘴巴张开程度的一元方式来表达口型变化时,可以仅使用嘴巴的纵向打开程度,
实现配合音频的嘴巴开合动作,例如“A”([ɑ])的开口大,而“I”([i])的口形则左右开得小等。
也可以获取舌头高度(纵向位置)的口形数据。
静音时显示为0.0f、舌头顶在牙龈时为1.0f。
可以同时控制嘴巴和舌头动作,实现更真实的角色口形。
注意
输出“舌头高度”参数仍是正在开发的Beta版本功能。
请理解此版本可能无法保证解析结果的质量。此外,规格和操作可能于今后会作重大修改。

注解说明:
静音时输出的口形数据将以嘴巴高度为0.0f、嘴巴宽度为0.583f。此数值可以在 CriLipsMouth.GetInfoAtSilence 获取。
宽度以静音时的值作为基准加减,例如“I”发声时增加宽度、“U”发声时减少宽度等。
因此,在应用程序侧直接参照 CriLipsMouth.Info 进行对口型时,会根据角色数据构造转换并使用该数值。

如本示例中包含的Face_Sample模型一样,数值最大时嘴部张开幅度很大,而口型信息会基于这种设计调整值的大小。

adxlipsync_face_sample_lip_height_open_max.png
Face_Sample LipHeightOpen模型的最大值

因此,根据要控制的模型的最大嘴巴的大小,如果直接使用lipHeight的值,嘴巴可能不会张得太大,并且动作可能像在嘀咕。

例如,使用log函数等,可以处理从CriLipsMouth.Info.lipHeight获取的值
并执行转换,使其成为适合模型的值,从而可以实现更自然的口型。


单轴口形数据 (CriLipsMouth.OpenInfo)

CriWare.CriLipsMouth.OpenInfo
单轴口形数据。
/* 单轴口形数据结构体 */
public struct CriLipsMouth.OpenInfo {
/* 单轴对口型的开口程度(0f ~ 1.0f)*/
public float openY;
}
无论是2D还是3D,此类型口形数据对于持有单一类型的口型(变形目标)的角色或使用单一参数控制口型开合的角色
能更好的表达唇音同步。
可以根据每个发音表现其口型开合的唇音同步。

CriLipsMouth.Info.lipHeight 的值会在内部有机的进行平滑化。
而此口型将为中间动作。
另一方面,此单轴口形数据可以为(不画下巴等)非真实角色形象,提供能实现更好的唇音同步效果的输出值。

例如,对于没有日语五元音(A,I,U,E,O)的“笑容”等固定面部表情但持有变形目标的角色模型,以及以音量值为基础的角色模型(例如RMS)也很有效。
注解说明:
本值基于 CriWare.CriLipsMouth.MorphTargetBlendAmountAsJapan 在内部进行多重平滑化处理。
因此,会出现以下限制。

日语五元音变形目标混合量(CriLipsMouth.MorphTargetBlendAmountAsJapanese)

CriWare.CriLipsMouth.MorphTargetBlendAmountAsJapanese
日语五元音(A,I,U,E,O)的混合量。
/* 日语五元音变形目标混合量结构体 */
public struct CriLipsMouth.MorphTargetBlendAmountAsJapanese {
public float a; /* 变形目标 "A"([ɑ]) 的混合量(0.0f 以上 1.0f 以下) */
public float i; /* 变形目标 "I"([i]) 的混合量(0.0f 以上 1.0f 以下) */
public float u; /* 变形目标 "U"([u]) 的混合量(0.0f 以上 1.0f 以下) */
public float e; /* 变形目标 "E"([ɛ]) 的混合量(0.0f 以上 1.0f 以下) */
public float o; /* 变形目标 "O"([ɔ]) 的混合量(0.0f 以上 1.0f 以下) */
}

适用于控制日语五元音的BlendShape模型的信息。
发声时,最多同时出现两个元音的混合量,合计将在 1.0f 以下的范囲中增减。
通过混合两个元音的口形,非日语音频也可以显示其自然的口形。

多种不同的口型组合

「口形数据」或「日语五元音变形目标混合量」可以通过一次性的解析同时获取。
也可以使用以上兩种不同口形组合,例如“A,I,U,E,O+舌头高度”。