本日はHoloLensの表現調査枠です。
[リップシンク(LipSync)]とはキャラクターモデルの表現などで使用される技術で、音源に合わせてキャラクターモデルの口を動かすことを指します。
近年ではYouTube上でライブ配信を行うデジタルキャラクターVTuberなどでも使用されており、リアルタイムに声と口の動きを対応させることができます。
〇OVRLipSync
LipSyncを実現するものとしていくつかのパッケージが公開されています。
その中で最も有名で使用されているものがOclusuQuestなどを展開しているOculus社が開発者向けに公開しているUnityPackage、[OVRLipSync]があります。
これはVRなどでも動き非常に高いパフォーマンスですが、HoloLensで使用する場合は障壁があります。
以下の記事でHoloRangerのDeciさんがまとめておられますが、HoloLens実機にデプロイする際に原因はわからないのですがOVRLipSyncのDllがプロジェクトから外れてしまっているため手動でDLLをコピーする必要があります。
HoloLens 2の場合はARMのDllが提供されていないため筆者環境では動かすことができませんでした。
〇uLipSync
[uLipSync]は凹みさんが公開しているUnity向けリップシンクのパッケージです。
詳細に関しては以下の凹みさんの記事を確認ください。
今回はHoloLens2で使用できないOVRLipSyncの代わりに[uLipSync]を使用していきます。
〇環境
・Windows10 PC
・HoloLens 2
・Unity2021.1.01f1
・MixedReltyToolkit v2.7
・UnityChan(リップシンク用のモデルとして用いました。)
・uLipSync v1.01
事前にMRTKでHoloLensへデプロイできるような環境から説明します。
〇HoloLens 2でリップシンクを行う。
①事前にHoloLens用のプロジェクト設定を行ったプロジェクトにユニティちゃんのモデルを導入します。
ユニティちゃんのサイトから[ユニティちゃんライブステージ! -Candy Rock Star-Version:1.0]をダウンロードします。
②回答したユニティちゃんのパッケージをプロジェクトへインポートします。
③[Assets]→[UnityChan]→[Prefab]→[CandyRockStar]をシーンに配置します。
筆者環境ではUniversalRenderPipelineを使用しているためマテリアルがエラーを出しています。
このためShaderを変更しました。
④[uLipSync v1.01]をプロジェクトへ導入します。
⑤Unity上部のワールドタブ、[Window]から[Package Manager]ウィンドウを開き[Burst]、[Mathmatics]パッケージをインストールします。
Unity2021からは一部パッケージがデフォルトで表示されなくなっています。今回の場合[Mathmatics]がそれに該当します。
この場合[PackageManager]の上部アイコン[+]から[Add Package from git URL]を選択します。
URLの入力バーに[com.unity.mathematics]と入力することで[Mathmatics]パッケージをインストールできます。
⑥シーンの[CandyRockStar]オブジェクトから[Music Starter]、[Spring Manager]、[RandomWind]、[Face Update]を削除します。
⑦[CandyRockStar]オブジェクトに[U LipSync]コンポーネント、[U LipSync BlendShape]コンポーネントを追加します。
⑧[U LipSync]コンポーネントの[Profile]に[Female]をクリックしプロファイルを追加します。
⑨[callback]のイベントに[U LipSync BlendShape]コンポーネントの[OnLipSyncUpdate]を追加します。
⑩[U LipSync BlendShape]コンポーネントの[SkinnedMeshRenderer]にブレンドシェイプキーが登録されている顔のオブジェクトをアタッチします。ユニティちゃんの場合[MTH_DEF]オブジェクトを指定します。
⑪[U LipSync BlendShape]コンポーネントの[BlendShapes]タブを開き、[Add New BlendShape]を5回選択します。
⑫作成されたリストの[PhoneName]にAIUEOの母音を設定します。
⑬[BlendShape]からモデルに設定されている各母音のBlendShapeキーを設定します。
⑭最後に任意のAudioSourceを追加し、実行することで口が動くようになりました。
以上でUnity上で確認できました。次回はHoloLens2実機で実行していきます。