CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
ADX LipSyncで取得可能な口パターン情報

取得可能な口パターンについて

ADX LipSyncが解析結果として出力する口パターンには、3つのパラメータ―タイプがあります。
これらはキャラクターが持つ口の制御パターンに合わせて使い分けます。

口形状情報(CriLipsMouth.Info)

CriWare.CriLipsMouth.Info
口の縦の開き具合、横幅、舌の高さです。
/* 口形状情報構造体 */
public struct CriLipsMouth.Info {
public float lipWidth; /* 口の幅(0.0f ~ 1.0f) */
public float lipHeight; /* 口の高さ(0.0f ~ 1.0f) */
public float tonguePosition; /* 舌の位置(0.0f ~ 1.0f) */
bool isLipWidthReleased; /* 口の幅が閉じ状態に遷移中か */
bool isLipHeightReleased; /* 口の高さが閉じ状態に遷移中か */
bool isLipToungueReleased; /* 舌の位置が閉じ状態に遷移中か */
}

縦と横という直接的なパラメータ―で口を制御するモデルや、単純な図形のスケーリングなどで
口形状を表現する場合での利用に適しています。
また、口の開き具合という一軸のみで口パクを表現したい場合には、縦の開き具合のみを用いることで、
「あ」は大きく開くが「い」はあまり開かないなど、音声に合った口の動きを実現できます。
口形状情報として、舌の高さ(縦方向の位置)も取得可能です。
無音状態で0.0f、舌が歯茎に付いた状態を1.0fとして提示します。
口の動きと共に舌も制御することで、よりリアリティのあるキャラクター表現が可能になります。
注意
「舌の高さ」パラメータ―の出力は開発中のβ版機能です。
解析結果の品質は保証されません。また、今後のアップデートで仕様や動作の変更が発生する可能性があります。
β版機能であることをご理解の上でご利用ください。

覚え書き:
無音状態では縦が0.0f、横幅が0.583fの口形状情報を出力します。この数値は CriLipsMouth.GetInfoAtSilence で取得可能です。
横幅は、「い」と発音すると増え、「う」と発音すると減るというように、無音状態での値を基準として増減します。
このため、アプリケーション側で CriLipsMouth.Info を直接参照して口パクを行う場合、キャラクターのデータ構造に応じて数値を変換してご利用ください。

口形状情報は本サンプルに含まれる Face_Sample モデルのように、最大値でかなり大きく口を開けるモデルをベースに調整した値となっています。

adxlipsync_face_sample_lip_height_open_max.png
Face_Sample モデル LipHeightOpen 最大値

このため制御対象のモデルの最大となる口の大きさによっては、lipHeight の値をそのまま使用すると、口があまり大きく開かずモゴモゴとした動き方になってしまう場合があります。

例えばlog関数などを用いて、CriLipsMouth.Info.lipHeight から取得できる値を加工し、
お手持ちのモデルに適した値となるように変換を行っていただくことでより自然な表現が可能です。


1軸口形状情報(CriLipsMouth.OpenInfo)

CriWare.CriLipsMouth.OpenInfo
1軸口形状情報です。
/* 1軸口形状情報構造体 */
public struct CriLipsMouth.OpenInfo {
/* 1軸口パクの開口割合(0f ~ 1.0f)*/
public float openY;
}
2D,3D問わず、1パターンの口の形(モーフターゲット)を持つキャラクターや、1パラメーターで口の開きを制御するキャラクターなどに対して
より良いリップシンクを表現するための口形状情報です。
音数ごとにハキハキと動いているようなリップシンクが表現されます。

CriLipsMouth.Info.lipHeight 値は内部的に滑らかで有機的なスムージングが行われます。
このため口形状が中間的な動作になります。
これに対して本1軸口形状情報は、顎の描画が省略されているような、非現実的なキャラクターに対してより良いリップシンク動作することを期待できる値を取得できます。

例えば、あいうえおを持たず「笑顔」のような固定の表情とモーフターゲットを持つキャラクターモデルや、RMSなどの音量値をベースにしたキャラクターモデルにも有効です。
覚え書き:
本値は CriWare.CriLipsMouth.MorphTargetBlendAmountAsJapanese を元に内部的に複数の平滑化処理を行っています。
したがって以下のような制約が発生します。

日本語5母音モーフターゲットブレンド量(CriLipsMouth.MorphTargetBlendAmountAsJapanese)

CriWare.CriLipsMouth.MorphTargetBlendAmountAsJapanese
日本語5母音(あいうえお)のブレンド量です。
/* 日本語5母音モーフターゲットブレンド量構造体 */
public struct CriLipsMouth.MorphTargetBlendAmountAsJapanese {
public float a; /* モーフターゲット「あ」のブレンド量(0.0f 以上 1.0f 以下) */
public float i; /* モーフターゲット「い」のブレンド量(0.0f 以上 1.0f 以下) */
public float u; /* モーフターゲット「う」のブレンド量(0.0f 以上 1.0f 以下) */
public float e; /* モーフターゲット「え」のブレンド量(0.0f 以上 1.0f 以下) */
public float o; /* モーフターゲット「お」のブレンド量(0.0f 以上 1.0f 以下) */
}

日本語5母音のブレンドシェイプを持つモデルに対する制御に適した情報です。
発声により、最大で同時に二つの母音のブレンド量が、合計 1.0f 以下になる範囲で増減します。
二つの母音を表現する形状が混ざることで、日本語以外の音声についても自然な口形状が表現可能です。

複数口パターンの組み合わせ

「口形状情報」や「日本語5母音モーフターゲットブレンド量」は、一度の解析で同時に取得可能です。
これにより、「あいうえお+舌の高さ」というように、異なるパターンを組み合わせて使用することもできます。