はじめに
Unity でリアルタイム / 事前解析対応のリップシンクを行うためのプラグインである uLipSync ですが、これまでは付属スクリプトとしては BlendShape を操作するものしかありませんでした。テクスチャを使った立ち絵などをリップシンクさせたい場合は、自分で Custom Event の仕組みを使って作る必要がありました。
しかしながらこういったユースケースへの要望を時折見かけたので、テクスチャ更新向けのスクリプトを作成することにしました。
なお、uLipSync の基本的な使い方については以下のエントリをご参照ください。
コード
執筆時点では v2.4.0 が最新となります。Sprite の対応やタイルテクスチャを使った UV のためにアニメーション作成機能も追々作成していきます。
デモ
こんにちは、と喋っています。
使い方
08. Texture
に含まれているシーンがサンプルになります。uLipSyncTexture
というコンポーネントが Body > Mouth
にアタッチされています。
テクスチャを差し替えるパターン
タイルテクスチャで UV を変更するパターン
このようにテクスチャ差し替え及び UV 変更それぞれに対して、割り当てたいテクスチャを画像で確認しながらセットできます(ハイブリッドも出来ます)。
- Update Method
- 更新を呼ぶタイミングです。
Late Update
やUpdate
、また LipSync の解析が終わったタイミング(Lip Sync Update Event
) と言ったようないくつかのタイミングの中から選ぶことが出来ます。アニメーションと併用しないのであれば基本的にはUpdate
で問題ないと思います。
- 更新を呼ぶタイミングです。
- Renderer
- 更新したい対象の
Renderer
を指定します。内部的にはマテリアルが実行時に複製され、メインテクスチャが更新されます。
- 更新したい対象の
- Parameters
- Min Volume
- 更新する最低のボリューム値(Log10)です。
- Min Duration
- この時間は少なくとも同じ口の形をキープします
- Min Volume
- Textures
- ここで割り当てたいテクスチャの選択をします
- Phoneme
-
Profile
に対応する音素(e.g. 「A」「I」)を記入します。- 空文字列("")の場合は音声入力がないときの設定として扱われます。
- Texture
- 変更したいテクスチャを指定します
- 無指定の場合はマテリアルにセットされている初期テクスチャが利用されます
- UV Scale
- UV のスケールです。タイルテクスチャの場合は指定してください。
- UV Offset
- UV のオフセットです。タイルテクスチャの場合は指定してください。
おわりに
その他、Animator 更新機能のプルリクも頂いたので、引き続き機能を拡充していきたいと思います。