示例内容
概述
- 本示例显示如何在不使用口形同步组件,仅使用原生API Wrapper类对原始对象进行变形。
操作方法
场景信息
中间件 | ADX LipSync(CRI Lips), CRI ADX (CRI Atom) |
示例 | Expansion示例 |
存储位置 | /CRIWARE/SDK/unity/samples/UnityProject/Assets/Scenes/criatom/expansion/LipSync |
场景文件 | Scene_03_LipSync_NativeAPI.unity |
ACF文件 | /CRIWARE/SDK/unity/samples/UnityProject/Assets/StreamingAssets/ADXLipSync/ForADXLipSyncSample.acf |
ACB文件 | /CRIWARE/SDK/unity/samples/UnityProject/Assets/StreamingAssets/ADXLipSync/ForADXLipSyncSample.acb |
相关Tips
- 需要准备多个CriLipsAtomAnalyzer,或需要在多个CriAtomExPlayer上执行挂载或卸载时,
请参照下列页面。
程序说明
- 在此示例中没有使用任何组件,而使用了原生API Wrapper的类。
程序库的初始化
- 使用LipSync插件的原生API Wrapper类时,需要事先进行程序库的初始化。
CriWare.CriLipsAtomPlugin::InitializeLibrary LipSync库的初始化不能在 CRIWARE Library Initializer 组件或 CriWare.CriWareInitializer::Initialize 中进行。
使用LipSync插件组件时,将在组件的内部处理中进行LipSync库的初始化。
Atom协同口形解析模块的从创建到挂载的步骤
- 创建与Atom协同的口形解析模块 CriWare.CriLipsAtomAnalyzer 。
此时预定在 CriWare.CriAtomExPlayer 播放的音频的最大采样率超过48000Hz时,
需要在CriLipsAtomAnalyzer的构造函数中指定。
atomAnalyzer = new CriLipsAtomAnalyzer();
atomExPlayer = new CriAtomExPlayer();
atomAnalyzer.AttachToAtomExPlayer(atomExPlayer);
然后使用 CriWare.CriLipsAtomAnalyzer::AttachToAtomExPlayer 将其挂载到播放器。
与Atom协同的口形解析模块的设定
- 根据播放 CriWare.CriLipsAtomAnalyzer 对象的环境对参数进行设置。
也可以在挂载到 CriAtomExPlayer 之前设置 CriLipsAtomAnalyzer 的参数。
各参数设置 API 可设置时机请参考各 API 说明。
private CriLipsAtomAnalyzer atomAnalyzer;
~~
atomAnalyzer.SetSilenceThreshold(-40.0f);
CriAtomExAcb acb = CriAtom.GetAcb(cueSheetName);
atomExPlayer.SetCue(acb, cueId);
CriAtomEx.WaveformInfo waveformInfo;
acb.GetWaveFormInfo(cueId, out waveformInfo);
atomAnalyzer.SetSamplingRate(waveformInfo.samplingRate);
从与Atom协作的嘴形解析模块中获取嘴形信息
- 从创建的 CriWare.CriLipsAtomAnalyzer 中获取嘴形信息。
在使用为实际角色模型获取的嘴形信息时,建议使用通过::CriLipsMouth::GetInfoAtSilence 可以获得的
与闭合嘴形信息的差异。
可获取的嘴形信息详情请参考以下页面。
private void Update()
{
atomAnalyzer.GetInfo(out info);
Vector3 localScale;
localScale.x = info.lipWidth;
localScale.y = info.lipHeight;
localScale.z = info.tonguePosition;
image.transform.localScale = localScale;
}
销毁与Atom协同的口形解析模块
- 销毁已创建的 CriWare.CriLipsAtomAnalyzer 。
在销毁之前请调用 CriWare.CriLipsAtomAnalyzer::DetachFromAtomExPlayer 从挂载的 CriWare.CriAtomExPlayer 上分离开。
atomAnalyzer.DetachFromAtomExPlayer(true);
atomAnalyzer.Dispose();
终止程序库
- 调用 CriWare.CriLipsAtomPlugin::FinalizeLibrary 终止程序库。