これを見よ!!!
この記事は みす53rd Advent Calendar 2021 の3日目、オダマキです。タイトル通り。最近触ったので書きます。
今回はUnity上で手持ちのVRMモデルにMMDダンスデータを躍らせました。しかし、モデルはHumanoidなら何でもOKですし、MMDモデルでももちろんできます。(というかMMD4Mecanimは元々MMDモデルを動かす用途を想定して作られてそうな感じ)
なお筆者はMMD(ソフトウェア)まったく知らないどころかインストールすらしたこともありません。物理とかモーフとか何もわからないですゴメンナサイ。
あとこの記事はある程度VRM、Unityを理解している人向けに書いており、ところどころ端折ります。
必要なもの(使ったもの)
今回はオダマキちゃんVRMです!
カワイイネ・・・・・・
実際に使用するMMDモーションデータ(.vmd)はもちろんですが、MMD4Mecanimではモーションデータを加工するためにMMDモデルデータ(.pmx)が必要です。
そのためVRMなどを動かす時も、必ず何か一つ媒体となるMMDモデルデータをダウンロードしましょう。
今回は音街ウナちゃん公式モデルを拝借します。
そして肝心の踊る曲ですが、季節を考えて好き!雪!本気マジックにしました!懐かしいですね。これ2014年ってマジ?
オリジナル
振付
モーション制作
こちらから
https://stereoarts.jp/
Cinemachineを動かす関係上 2018.4.17f1 以降のバージョンでプロジェクトを作りましょう。
PackageManagerからCinemachineとTimelineとRecorderを導入します。
[🔍Recorder 画像無]
ダウンロードしておいたMMD4Mecanim.unitypackageを導入します。
それから踊らせるモデル、媒体モデル、モーションをUnityのprojectウィンドウにぶち込みましょう。MMDモデルに関してはテクスチャが一緒に入っているフォルダごと入れてください。
またVRMを動かす方はUniVRMの導入もお忘れなく。
MMD4Mecanimに丁寧なチュートリアルが付属するので詳しくはそちらを見てください。
MMD4Mecanimを導入していると.MMD4Mecanimが生成されるので見つけます。
これをクリックするとInspectorにモデルの規約などが表示されるのでよく読んで同意します。
MMDモデルの作者の意に反したアバター使用が問題になったことがあり、そのときにMMD4Mecanimが使われたのでこういう項目があるのでしょうかね。
同じプロジェクトにVRCsdkが入ってると一部消されたりします
同意すると以下のようになるため、VMDの項目にモーションファイル.vmdを入れてProcessを押します。
処理に時間がかかるので気長に待ちましょう。
するとFBXが出力されます。
かわよ……
Animation Type を Generic から Humanoid に変更します。
このままウナちゃんに踊ってもらってもいいんですが……ね
かわいぃ
Timelineはシーン全体で同期するシークエンスを作るときに便利な奴です。
まずProjectウィンドウで Timeline アセットを作成します。Create>Timeline
次に空の GameObject を作成するなりなんなりして、適当なGameObjectにPlayable Directorコンポーネントを追加します。
そして作ったTimelineアセットをコンポーネントのPlayableのところに設定。
そして最後にメニューからWindow>Sequencing>Timelineを選択してTimeline編集ウィンドウを出します。
Timelineの名に恥じないタイムラインが現れましたね。
このウィンドウの左側の枠に、制御したいGameObjectをドラッグアンドドロップします。
まずはオダマキちゃんのAnimatorを入れたいので、シーンに置いたVRMモデルをドラッグアンドドロップします。
すると以下のような選択肢が出るのでAnimation Trackを選択します。
そして出来たトラックにアニメーションをD&Dすると以下のように配置できます。
こうするとAnimatorアセットを作らなくてもアニメーションさせることができます。
音源なんかはTimelineウィンドウに直接放り込むとシーンにAudioSourceを作らなくても鳴らせちゃいます。
そしたらもう最低限は完成です。
AnimationやAudioを0フレームからスタートさせると、ロードに時間がかかるため高頻度で音ズレします。なので最初のアイテムは数フレーム待ってから置くとよさそう。
Cinemachineのふるまいをざっくり説明します。
最低限用意すべきものは実際に映す本物のカメラ一つと、各カットの設定をもったバーチャルカメラが複数。シーン実行中は本物のカメラがバーチャルカメラの設定に従ってあっちに行ったりこっちに行ったりすることで様々なカメラワークが実現できます。
しかもTimelineとCinemachineの親和性が非常に高く、バーチャルカメラをTimelineにポンポン置くだけでカメラ切り替えができますし、それらを重ねることで自動的にフェードしてくれます。
では実際にカメラワークを作っていきましょう。
まずは Camera に CinemachineBrain コンポーネントを付けます。
次にバーチャルカメラを作ります。上の Menu に Cinemachine/Create Virtual Camera という項目があるのでこちらは一発で作成できます。
できたのがこちら
警告マークがついているBodyとAimは、それぞれ「被写体について移動する」、「被写体を注視する」挙動の詳細設定です。(それぞれターゲットが設定されてないヨ。という警告ってわけ)
顔を注視するカメラをつくろうと思います。
このカメラは移動はしなくていいので、Bodyの一番最初の設定項目をTransposerからDo nothingにします。
そして上のLook Atにターゲットとなる頭のボーンを設定します。
そのあとなんやかんや設定してこんなかんじ。
目あたりを見るようにOffsetを調整しているのと、LensのFoVをいじってズームしています。
Gameウィンドウに、注視点を画面のどこに収めようとしているかの枠が出ます。
MVにありがちな、キャラクター中心に回転するカメラをつくろうと思います。
バーチャルカメラを作成したCinemachineメニューの中にCreate Dolly Camera with Trackという項目があるので選択します。
するとこのように二つのGameObjectが生成されます。
まず上のバーチャルカメラのインスペクターを見てみると、Bodyの項目にすでに設定されてます。
Tracked DollyモードはPathに指定されている「線路」にしたがって動きます。
つぎにDollyTrackを見てみると、
Waypointsというのの + マークを何回か押すとtrackの経路点が追加できます。
これで輪っかを作ります。Loopedにチェックを入れると始点と終点がつながります。
これで先ほど見たバーチャルカメラは円をぐるぐる回るはずです。Body項目のPath Positionをいじって遊びましょう。
実際にMV中にぐるぐる動かすためにはAnimationを打ったり、script書いたりが必要ですね。Timelineを使ってるなら断然Animationがおすすめです。
多分カメラワークはしっかり考えながらその都度カメラを作った方がいいのかもしれません。が、めんどくさいので「使いそうなものをたくさん作っておいて適当に並べる」という風にします。
今回は
を用意しました。
回るカメラに関しては、PathPositionをいじるアニメーションを使いたいタイミングでTimelineに配置するのが良いと思います。が、それもめんどくさいので、アニメーションで常にぐるぐる回して使いたいときによさそうな場所にいるカメラを採用するという風にします。
4路線 ×(正回転+逆回転)で8個も回ってりゃいいアングルのカメラ1つくらいあるだろガハハ
こんな感じです。TimelineウィンドウでCinemachineのトラックを追加するとバーチャルカメラをドラッグアンドドロップできるようになります(赤いトラック)
違った視野角のカメラをフェードさせるとズームみたいなこともできます。Timelineの下二つはカメラを回すアニメーションで、終わったらループする設定になってるので一生回ってます。(隠れてますが8個分あります)
せっかくUnityでつくっているのでアセットやらポストプロセスなどふんだんに使いましょうね。
セールで買って一回も使ってないアセットを試してみたい。
できたらRecorderで撮影して終了です。RecorderもTimelineにトラックを追加することで撮影時間の指定が楽にできます。
はい
ちょっと音ズレてない?ああああもう撮り直したくないよぉおおおおお
使用したアセットとパッケージ
みんなもVTuberごっこしような。そして地味にコードを一行も書かずにできました。
最後に学んだことまとめ。
次はエレン君です!