夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLens2でリップシンクをおこなう。

本日はHoloLensの表現調査枠です。

 [リップシンク(LipSync)]とはキャラクターモデルの表現などで使用される技術で、音源に合わせてキャラクターモデルの口を動かすことを指します。

 近年ではYouTube上でライブ配信を行うデジタルキャラクターVTuberなどでも使用されており、リアルタイムに声と口の動きを対応させることができます。

〇OVRLipSync

LipSyncを実現するものとしていくつかのパッケージが公開されています。

その中で最も有名で使用されているものがOclusuQuestなどを展開しているOculus社が開発者向けに公開しているUnityPackage、[OVRLipSync]があります。

これはVRなどでも動き非常に高いパフォーマンスですが、HoloLensで使用する場合は障壁があります。

 以下の記事でHoloRangerのDeciさんがまとめておられますが、HoloLens実機にデプロイする際に原因はわからないのですがOVRLipSyncのDllがプロジェクトから外れてしまっているため手動でDLLをコピーする必要があります。

qiita.com

 HoloLens 2の場合はARMのDllが提供されていないため筆者環境では動かすことができませんでした。

〇uLipSync

[uLipSync]は凹みさんが公開しているUnity向けリップシンクのパッケージです。

詳細に関しては以下の凹みさんの記事を確認ください。

tips.hecomi.com

今回はHoloLens2で使用できないOVRLipSyncの代わりに[uLipSync]を使用していきます。

〇環境

 ・Windows10 PC

 ・HoloLens 2

 ・Unity2021.1.01f1

 ・MixedReltyToolkit v2.7

 ・UnityChan(リップシンク用のモデルとして用いました。)

 ・uLipSync v1.01

 事前にMRTKでHoloLensへデプロイできるような環境から説明します。

〇HoloLens 2でリップシンクを行う。

①事前にHoloLens用のプロジェクト設定を行ったプロジェクトにユニティちゃんのモデルを導入します。

unity-chan.com

ユニティちゃんのサイトから[ユニティちゃんライブステージ! -Candy Rock Star-Version:1.0]をダウンロードします。

f:id:Holomoto-Sumire:20210623213205j:plain

②回答したユニティちゃんのパッケージをプロジェクトへインポートします。

③[Assets]→[UnityChan]→[Prefab]→[CandyRockStar]をシーンに配置します。

f:id:Holomoto-Sumire:20210623213707j:plain

筆者環境ではUniversalRenderPipelineを使用しているためマテリアルがエラーを出しています。

このためShaderを変更しました。

f:id:Holomoto-Sumire:20210623214736j:plain

④[uLipSync v1.01]をプロジェクトへ導入します。

⑤Unity上部のワールドタブ、[Window]から[Package Manager]ウィンドウを開き[Burst]、[Mathmatics]パッケージをインストールします。

f:id:Holomoto-Sumire:20210623215016j:plain

Unity2021からは一部パッケージがデフォルトで表示されなくなっています。今回の場合[Mathmatics]がそれに該当します。

この場合[PackageManager]の上部アイコン[+]から[Add Package from git URL]を選択します。

f:id:Holomoto-Sumire:20210623215456j:plain

URLの入力バーに[com.unity.mathematics]と入力することで[Mathmatics]パッケージをインストールできます。

f:id:Holomoto-Sumire:20210623215652j:plain

⑥シーンの[CandyRockStar]オブジェクトから[Music Starter]、[Spring Manager]、[RandomWind]、[Face Update]を削除します。

f:id:Holomoto-Sumire:20210623215909j:plain

⑦[CandyRockStar]オブジェクトに[U LipSync]コンポーネント、[U LipSync BlendShape]コンポーネントを追加します。

f:id:Holomoto-Sumire:20210623220150j:plain

⑧[U LipSync]コンポーネントの[Profile]に[Female]をクリックしプロファイルを追加します。

f:id:Holomoto-Sumire:20210623220724j:plain

⑨[callback]のイベントに[U LipSync BlendShape]コンポーネントの[OnLipSyncUpdate]を追加します。

f:id:Holomoto-Sumire:20210623220905j:plain

⑩[U LipSync BlendShape]コンポーネントの[SkinnedMeshRenderer]にブレンドシェイプキーが登録されている顔のオブジェクトをアタッチします。ユニティちゃんの場合[MTH_DEF]オブジェクトを指定します。

f:id:Holomoto-Sumire:20210623221155j:plain

⑪[U LipSync BlendShape]コンポーネントの[BlendShapes]タブを開き、[Add New BlendShape]を5回選択します。

f:id:Holomoto-Sumire:20210623221413j:plain

⑫作成されたリストの[PhoneName]にAIUEOの母音を設定します。

f:id:Holomoto-Sumire:20210623221701j:plain

⑬[BlendShape]からモデルに設定されている各母音のBlendShapeキーを設定します。

f:id:Holomoto-Sumire:20210623221842j:plain

⑭最後に任意のAudioSourceを追加し、実行することで口が動くようになりました。

f:id:Holomoto-Sumire:20210623222534g:plain

以上でUnity上で確認できました。次回はHoloLens2実機で実行していきます。

f:id:Holomoto-Sumire:20210623213038p:plain
今回の作品はユニティちゃんライセンスに基づき作成しています。