示例内容
概述
- 本示例演示如何继承 CriWare.ICriLipsMorph 实现一个本应用程序专用的自定义的变形类。
Lips Expansion 提供以下支持Unity引擎标准功能的变形类。
- UnityEngine.Animator
- UnityEngine.SkinnedMeshRenderer
但是,在以下情况:
- 如果角色是由其他公司制作的中间件或自研动画机制等控制的。
- 您想组合和变形 Lips 库中的多个分析结果
在这些情况下,Lips Expansion 提供的变形类可能不足以进行口型同步。
在这种情况下,通过继承 CriWare.ICriLipsMorph ,您可以替换变形部分的实现,
同时保留 CriLipsDeformer 组件的 AtomSource 管理功能。
下面讲解如何继承接口以及如何处理接口。
有关注册 ICriLipsMorph 的组件本身的详细说明,请参阅下页。
场景信息
中间件 | 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 {
public int openIndex;
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();
Target.SetBlendShapeWeight(extraBlendShapeIndex, (vol > th) ? 100 : 0);
}
}
属性面板上的设置
- 继承 ICriLipsMorph 的类会自动在“Morph Target”下拉菜单中提供选择。
选择“CustomLipsMorphBlendShapeExtra”并输入所需的值。
如果想对自制类做Editor扩展,请对'CustomPropertyDrawer'进行实现。