サンプル内容
概要
- CriWare.ICriLipsMorph を継承したアプリケーション独自のモーフィングカスタムクラスの実装サンプルです。
Lips Expansion では以下の Unity エンジンの標準機能に対応したモーフィングクラスを用意しています。
- UnityEngine.Animator
- UnityEngine.SkinnedMeshRenderer
ただし、以下のような
- 他社製ミドルウェアや内製の独自アニメーション機構などでキャラクターを制御している場合
- Lipsライブラリの複数の解析結果を組み合わせてモーフィングさせたい場合
状況では Lips Expansion が提供しているモーフィングクラスでは十分にリップシンクができない場合があります。
このような場合は CriWare.ICriLipsMorph を継承することで
CriLipsDeformerコンポーネントのAtomSourceへの管理機能はそのまま、モーフィング部分の実装を差し替えできます。
以下ではインターフェースの継承方法とその取り扱い方法について説明します。
なお、 ICriLipsMorph を登録するコンポーネント自体の詳しい説明は以下のページを参考ください。
シーン情報
ミドルウェア | ADX LipSync(CRI Lips), CRI ADX (CRI Atom) |
サンプル | Expansionサンプル |
格納場所 | /cri/unity/samples/UnityProject/Assets/Scenes/criatom/expansion/LipSync |
シーンファイル | Scene_06_LipSync_InheritanceICriLipsMorph.unity |
ACFファイル | /cri/unity/samples/UnityProject/Assets/StreamingAssets/ADXLipSync/ForADXLipSyncSample.acf |
ACBファイル | /cri/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
を実装してください。