CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
[CriAtom]继承ICriLipsMorph接口的自定义类

示例内容

概述

本示例演示如何继承 CriWare.ICriLipsMorph 实现一个本应用程序专用的自定义的变形类。

Lips Expansion 提供以下支持Unity引擎标准功能的变形类。
  • UnityEngine.Animator
  • UnityEngine.SkinnedMeshRenderer
但是,在以下情况:
  • 如果角色是由其他公司制作的中间件或自研动画机制等控制的。
  • 您想组合和变形 Lips 库中的多个分析结果
在这些情况下,Lips Expansion 提供的变形类可能不足以进行口型同步。
在这种情况下,通过继承 CriWare.ICriLipsMorph ,您可以替换变形部分的实现,
同时保留 CriLipsDeformer 组件的 AtomSource 管理功能。

下面讲解如何继承接口以及如何处理接口。

有关注册 ICriLipsMorph 的组件本身的详细说明,请参阅下页。


cri4u_samples_criatom_expansion_lipsync_scene06_main.png


场景信息


中间件 ADX LipSync(CRI Lips), CRI ADX2 (CRI Atom)
示例 Expansion示例
存储位置 /CRIWARE/SDK/unity/samples/UnityProject/Assets/Scenes/criatom/expansion/LipSync
场景文件 Scene_06_LipSync_InheritanceICriLipsMorph.unity
ACF文件 /CRIWARE/SDK/unity/samples/UnityProject/Assets/StreamingAssets/ADXLipSync/ForADXLipSyncSample.acf
ACB文件 /CRIWARE/SDK/unity/samples/UnityProject/Assets/StreamingAssets/ADXLipSync/ForADXLipSyncSample.acb


程序说明

继承 ICriLipsMorph

该示例继承了ICriLipsMorph并实现了一个变形类,该类使用OpenInfo控制嘴巴的张开/闭合比例,
并根据音量值输出“extraBlendShapeIndex”值的反应。
public class CustomLipsMorphBlendShapeExtra : ICriLipsMorph {
// 反映OpenInfo分析结果的BlendShape的索引
public int openIndex;
// 对音量值做出反应的BlendShape索引
public int extraBlendShapeIndex;
public void Update(ICriLipsAnalyzeModule analyzeModule) {
analyzeModule.GetOpenInfo(out CriLipsMouth.OpenInfo openInfo);
Target.SetBlendShapeWeight(openIndex, openInfo.openY * 100);
float vol = analyzeModule.GetVolume();
float th = analyzeModule.GetSilenceThreshold();
// 通过与噪声阈值比较,判断Lips无声时BlendShape变为0
Target.SetBlendShapeWeight(extraBlendShapeIndex, (vol > th) ? 100 : 0);
}
// 以下省略
}

属性面板上的设置

继承 ICriLipsMorph 的类会自动在“Morph Target”下拉菜单中提供选择。
选择“CustomLipsMorphBlendShapeExtra”并输入所需的值。

如果想对自制类做Editor扩展,请对'CustomPropertyDrawer'进行实现。