CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
[CriAtom]LipSyncプラグインのネイティブAPIラッパーを使用する

サンプル内容

概要

リップシンク用コンポーネントを使用せずに、ネイティブAPIラッパークラスのみを使用して
プリミティブなオブジェクトをモーフィングさせるサンプルです。
cri4u_samples_criatom_expansion_lipsync_scene03_main.png

操作方法


  • [Playback Cue]ボタン
    • 音声を再生します。


シーン情報


ミドルウェア ADX LipSync(CRI Lips), CRI ADX (CRI Atom)
サンプル Expansionサンプル
格納場所 /cri/unity/samples/UnityProject/Assets/Scenes/criatom/expansion/LipSync
シーンファイル Scene_03_LipSync_NativeAPI.unity
ACFファイル /cri/unity/samples/UnityProject/Assets/StreamingAssets/ADXLipSync/ForADXLipSyncSample.acf
ACBファイル /cri/unity/samples/UnityProject/Assets/StreamingAssets/ADXLipSync/ForADXLipSyncSample.acb


関連Tips

CriLipsAtomAnalyzerを複数用意したり、複数のCriAtomExPlayerにアタッチ・デタッチを行う場合は
以下のページの解説を参照ください。

プログラムの解説

本サンプルではコンポーネントを使用せず、ネイティブAPIをラッパーしたクラスを利用しています。
ライブラリの初期化
LipSyncプラグインのネイティブAPIラッパークラスを使用するには、まずライブラリを初期化する必要があります。
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 オブジェクトを再生する環境にあわせてパラメーターを設定します。
CriLipsAtomAnalyzerに対するパラメーター設定はCriAtomExPlayerにアタッチする前にも可能です。
各パラメーター設定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 から口形状情報を取得します。
実際のキャラクターモデルに取得した口形状情報を使用する場合は、CriWare.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 によってLipSyncライブラリを終了します。