![](https://i.imgur.com/d5SDlCn.jpg) # オダマキちゃんを躍らせたい!!!!!! **これを見よ!!!** <iframe width="560" height="315" src="https://www.youtube.com/embed/KQnjHxWYl44" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> # Unity + MMD4Mecanim + Cinemachine でMMDMVを作る方法 この記事は [みす53rd Advent Calendar 2021](https://adventar.org/calendars/6554) の3日目、オダマキです。タイトル通り。最近触ったので書きます。 今回は**Unity上で**手持ちの**VRMモデル**に**MMDダンスデータ**を躍らせました。しかし、モデルはHumanoidなら何でもOKですし、MMDモデルでももちろんできます。(というかMMD4Mecanimは元々MMDモデルを動かす用途を想定して作られてそうな感じ) > なお筆者はMMD(ソフトウェア)まったく知らないどころかインストールすらしたこともありません。物理とかモーフとか何もわからないですゴメンナサイ。 あとこの記事はある程度VRM、Unityを理解している人向けに書いており、ところどころ端折ります。 ## 準備 必要なもの(使ったもの) - Unity - Cinemachine - Timeline - Unity Recorder - MMD4Mecanim - 踊らせるモデル(VRM、FBX、PMX……等) - モーションを加工するときに媒体となるMMDモデル(PMX) - モーション(VMD) - 音源 - その他ステージなどのアセット ### 踊るモデルを用意する 今回はオダマキちゃんVRMです! ![](https://i.imgur.com/xkafuBr.png) カワイイネ・・・・・・ ### MMDダンスデータ、MMDモデルデータを手に入れる 実際に使用するMMDモーションデータ(.vmd)はもちろんですが、MMD4Mecanimではモーションデータを加工するために**MMDモデルデータ(.pmx)が必要**です。 そのためVRMなどを動かす時も、必ず何か一つ媒体となるMMDモデルデータをダウンロードしましょう。 今回は[音街ウナちゃん公式モデル](https://3d.nicovideo.jp/works/td27080)を拝借します。 <iframe src="https://3d.nicovideo.jp/externals/widget?id=td27080" style="width: 312px; height: 176px; border: 1px solid #ccc;" frameborder="0" scrolling="no" allowfullscreen="allowfullscreen"><a href="https://3d.nicovideo.jp/works/td27080">【公式】音街ウナ-Sugar-【モデル配布】Ver1.7</a></iframe> そして肝心の踊る曲ですが、季節を考えて**好き!雪!本気マジック**にしました!懐かしいですね。~~これ2014年ってマジ?~~ <iframe width="312" height="176" src="https://ext.nicovideo.jp/thumb/sm22791352" scrolling="no" style="border:solid 1px #ccc;" frameborder="0"><a href="https://www.nicovideo.jp/watch/sm22791352">【雪ミク テーマ曲】初音ミク「好き!雪!本気マジック」【SNOW MIKU'14】</a></iframe> オリジナル <iframe width="312" height="176" src="https://ext.nicovideo.jp/thumb/sm22802991" scrolling="no" style="border:solid 1px #ccc;" frameborder="0"><a href="https://www.nicovideo.jp/watch/sm22802991">【足太ぺんた】好き!雪!本気マジック 踊ってみた【オリジナル振付】</a></iframe> 振付 <iframe width="312" height="176" src="https://ext.nicovideo.jp/thumb/sm23692832" scrolling="no" style="border:solid 1px #ccc;" frameborder="0"><a href="https://www.nicovideo.jp/watch/sm23692832">【MikuMikuDance】 好き!雪!本気マジック 【MMDモーショントレース】</a></iframe> モーション制作 ### MMD4Mecanimを手に入れる こちらから https://stereoarts.jp/ ![](https://i.imgur.com/eJ4pwPx.png) ### Unity プロジェクトの準備 Cinemachineを動かす関係上 2018.4.17f1 以降のバージョンでプロジェクトを作りましょう。 PackageManagerからCinemachineとTimelineとRecorderを導入します。 ![](https://i.imgur.com/aUYnTSw.png) ![](https://i.imgur.com/WDsIY5o.png) [🔍Recorder 画像無] ダウンロードしておいたMMD4Mecanim.unitypackageを導入します。 ![](https://i.imgur.com/pSHBDdB.png) それから踊らせるモデル、媒体モデル、モーションをUnityのprojectウィンドウにぶち込みましょう。MMDモデルに関してはテクスチャが一緒に入っているフォルダごと入れてください。 ![](https://i.imgur.com/dGA79H4.png) またVRMを動かす方はUniVRMの導入もお忘れなく。 ## モーション変換 MMD4Mecanimに丁寧なチュートリアルが付属するので詳しくはそちらを見てください。 MMD4Mecanimを導入していると.MMD4Mecanimが生成されるので見つけます。 ![](https://i.imgur.com/xxwjFRx.png) これをクリックするとInspectorにモデルの規約などが表示されるのでよく読んで同意します。 ![](https://i.imgur.com/x60TGgO.png) MMDモデルの作者の意に反したアバター使用が問題になったことがあり、そのときにMMD4Mecanimが使われたのでこういう項目があるのでしょうかね。 > 同じプロジェクトにVRCsdkが入ってると一部消されたりします 同意すると以下のようになるため、VMDの項目にモーションファイル.vmdを入れてProcessを押します。 ![](https://i.imgur.com/td8zk0G.png) 処理に時間がかかるので気長に待ちましょう。 するとFBXが出力されます。 ![](https://i.imgur.com/kwywJXy.png) かわよ…… Animation Type を Generic から Humanoid に変更します。 このままウナちゃんに踊ってもらってもいいんですが……ね ![](https://i.imgur.com/zjcRQEn.png) かわいぃ ## Timeline編集 Timelineはシーン全体で同期するシークエンスを作るときに便利な奴です。 まずProjectウィンドウで Timeline アセットを作成します。Create>Timeline 次に空の GameObject を作成するなりなんなりして、適当なGameObjectにPlayable Directorコンポーネントを追加します。 ![](https://i.imgur.com/AaMQ2WQ.png) そして作ったTimelineアセットをコンポーネントのPlayableのところに設定。 ![](https://i.imgur.com/FxGEmGg.png) そして最後にメニューからWindow>Sequencing>Timelineを選択してTimeline編集ウィンドウを出します。 ![](https://i.imgur.com/wjZd2aX.png) Timelineの名に恥じないタイムラインが現れましたね。 このウィンドウの左側の枠に、制御したいGameObjectをドラッグアンドドロップします。 まずはオダマキちゃんのAnimatorを入れたいので、シーンに置いたVRMモデルをドラッグアンドドロップします。 ![](https://i.imgur.com/ez5WmQX.png) すると以下のような選択肢が出るのでAnimation Trackを選択します。 ![](https://i.imgur.com/xOQ4LGc.png) そして出来たトラックにアニメーションをD&Dすると以下のように配置できます。 ![](https://i.imgur.com/E7buPui.png) こうするとAnimatorアセットを作らなくてもアニメーションさせることができます。 音源なんかはTimelineウィンドウに直接放り込むとシーンにAudioSourceを作らなくても鳴らせちゃいます。 そしたらもう最低限は完成です。 ![](https://i.imgur.com/TV1GNyK.png) AnimationやAudioを0フレームからスタートさせると、ロードに時間がかかるため高頻度で音ズレします。なので最初のアイテムは数フレーム待ってから置くとよさそう。 ## Cinemachineを使ったカメラワーク > Cinemachineのふるまいをざっくり説明します。 > > 最低限用意すべきものは実際に映す本物のカメラ一つと、各カットの設定をもったバーチャルカメラが複数。シーン実行中は本物のカメラがバーチャルカメラの設定に従ってあっちに行ったりこっちに行ったりすることで様々なカメラワークが実現できます。 > しかもTimelineとCinemachineの親和性が非常に高く、バーチャルカメラをTimelineにポンポン置くだけでカメラ切り替えができますし、それらを重ねることで自動的にフェードしてくれます。 では実際にカメラワークを作っていきましょう。 まずは Camera に CinemachineBrain コンポーネントを付けます。 ![](https://i.imgur.com/HMZsO02.png) ![](https://i.imgur.com/suxcwmu.png) 次にバーチャルカメラを作ります。上の Menu に Cinemachine/Create Virtual Camera という項目があるのでこちらは一発で作成できます。 ![](https://i.imgur.com/hk3uafK.png) できたのがこちら ![](https://i.imgur.com/fe7V8Vb.png) > 警告マークがついているBodyとAimは、それぞれ「被写体について移動する」、「被写体を注視する」挙動の詳細設定です。(それぞれターゲットが設定されてないヨ。という警告ってわけ) ### 顔アップカメラ 顔を注視するカメラをつくろうと思います。 このカメラは移動はしなくていいので、Bodyの一番最初の設定項目をTransposerからDo nothingにします。 そして上のLook Atにターゲットとなる頭のボーンを設定します。 そのあとなんやかんや設定してこんなかんじ。 ![](https://i.imgur.com/MMKDKj9.png) 目あたりを見るようにOffsetを調整しているのと、LensのFoVをいじってズームしています。 Gameウィンドウに、注視点を画面のどこに収めようとしているかの枠が出ます。 ![](https://i.imgur.com/gvugwo6.png) ### ぐるぐるカメラ MVにありがちな、キャラクター中心に回転するカメラをつくろうと思います。 バーチャルカメラを作成したCinemachineメニューの中にCreate Dolly Camera with Trackという項目があるので選択します。 ![](https://i.imgur.com/rhm9AcR.png) するとこのように二つのGameObjectが生成されます。 まず上のバーチャルカメラのインスペクターを見てみると、Bodyの項目にすでに設定されてます。 ![](https://i.imgur.com/RwyOCi8.png) Tracked DollyモードはPathに指定されている「線路」にしたがって動きます。 つぎにDollyTrackを見てみると、 ![](https://i.imgur.com/X4A89oB.png) Waypointsというのの + マークを何回か押すとtrackの経路点が追加できます。 ![](https://i.imgur.com/KerrvVG.png) ![](https://i.imgur.com/6DeZDxH.png) これで輪っかを作ります。Loopedにチェックを入れると始点と終点がつながります。 ![](https://i.imgur.com/hNxtm6m.png) ![](https://i.imgur.com/FDXVphx.png) これで先ほど見たバーチャルカメラは円をぐるぐる回るはずです。Body項目のPath Positionをいじって遊びましょう。 実際にMV中にぐるぐる動かすためにはAnimationを打ったり、script書いたりが必要ですね。Timelineを使ってるなら断然Animationがおすすめです。 ### 編集 多分カメラワークはしっかり考えながらその都度カメラを作った方がいいのかもしれません。が、めんどくさいので「使いそうなものをたくさん作っておいて適当に並べる」という風にします。 今回は - 正面全身カメラ - 追従バストアップカメラ - 正面顔アップカメラ - 足元カメラ - ぐるぐる回るカメラ(4×2) を用意しました。 回るカメラに関しては、PathPositionをいじるアニメーションを使いたいタイミングでTimelineに配置するのが良いと思います。が、それもめんどくさいので、アニメーションで常にぐるぐる回して使いたいときによさそうな場所にいるカメラを採用するという風にします。 4路線 ×(正回転+逆回転)で8個も回ってりゃいいアングルのカメラ1つくらいあるだろガハハ ![](https://i.imgur.com/vy6cHN5.png) こんな感じです。TimelineウィンドウでCinemachineのトラックを追加するとバーチャルカメラをドラッグアンドドロップできるようになります(赤いトラック) 違った視野角のカメラをフェードさせるとズームみたいなこともできます。Timelineの下二つはカメラを回すアニメーションで、終わったらループする設定になってるので一生回ってます。(隠れてますが8個分あります) ## 調整 せっかくUnityでつくっているのでアセットやらポストプロセスなどふんだんに使いましょうね。 ~~セールで買って一回も使ってないアセットを試してみたい。~~ できたらRecorderで撮影して終了です。RecorderもTimelineにトラックを追加することで撮影時間の指定が楽にできます。 ## 完成 はい <iframe width="560" height="315" src="https://www.youtube.com/embed/KQnjHxWYl44" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> ~~ちょっと音ズレてない?ああああもう撮り直したくないよぉおおおおお~~ 使用したアセットとパッケージ - AZURE nature 天才。ほとんどのモデルとテクスチャに - AllSky 無料版 いつもの。空に - Top-Down Assets 上から見るゲーム用なので横からの見栄えが悪いものもある。遠くにあるオブジェクトに - Postporocess お手軽にいい感じにできる ## まとめ みんなもVTuberごっこしような。そして地味にコードを一行も書かずにできました。 最後に学んだことまとめ。 - 最初はカメラワークしょっちゅう回してたけど、うざいのでやめた。普通にバストアップ、顔アップ、全身を適当に切り替えるだけでも十分では?と思った。 - 木などを大量に配置しなきゃいけないのがだるいよね。ゲームもそうだけど。自然に見せるには疎と密を意識するといいらしいよ。 - オダマキちゃんはかわいい - スカートの貫通はclothコンポーネントを付けるか、その他の布シミュレーションアセットを買うとかで抑えられるのかもしれない。 - モーションがところどころ怪しくなる。もしかしてモーション変換時に媒体になるMMDモデルの体格が踊るモデルと近いとそういうのがなくなるのか?要検証 次はエレン君です!