Unity+Oculus+MMD とりあえず書き留めておく場所

Unity+Oculus+MMD VRでキャラクターと遊ぶ

3. Sceneへのモデル配置・モーション再生

前回、ついにモデルを変換することが出来ました。

今回はまず、メインの作業場所であるHierarchy+Sceneにモデルを持っていくことにします。

Sceneビューにモデルを表示する

Unityの画面内は、いろんなものをD&Dでファイル移動できます。

変換されたモデルを、そのままSceneビューもしくはHierarchyビューまでぐいっとD&Dしてください。

f:id:emifuwa:20171117174619j:plain

Hierarchyにモデル名が表示され、Sceneにモデルが表示されていることがわかります。

厳密に言えば、モデルを移動するというよりは、コピーするというか…

Assetフォルダという絵の具箱から、Hierarchyというパレットに色を乗せるような感じ…と筆者は思ってます。

 Sceneビューでの視点移動など

前回やったように、Hierarchy上のオブジェクト…ここではモデルの名前をダブルクリックすると、Sceneビューの中心にモデルが来ます。

自分から見にくい位置にモデルが居るなあ…と思ったら、少し視点を変えてみましょう。

まずSceneビュー右上にある「シーンギズモ」で表示方向を変更します。

f:id:emifuwa:20171117180403j:plain

X(赤)Y(青)Z(緑)は、MMDユーザーならごく見慣れたものだと思います。

それぞれの色の付いたコーン(円錐)の部分をクリックすると、方向がぐるぐると変わります。

そして、シーンビューの左上には、丸っこい手のひらのようなアイコンがあります。

ここを押した状態でScene内を左ドラッグすると、視点を移動することが出来ます。

(ショートカット:Q)

f:id:emifuwa:20171117181419j:plain

MMDで言うところの「右上の緑の十字架」と似たようなやつ…(あっちはアイコンドラッグで、こっちはボタン押してドラッグですが)

また、Sceneビューを右ドラッグすると、視点が回転します。

これはMMDとまったく同じですね。

Sceneビュー上でマウスホイール回転→ズームイン・ズームアウトMMDと同じ。

最初はMMDと勝手が違ってかなり使いにくいと思いますが、

モデルをダブルクリックで真ん中+手のひらで移動+ホイールでズーム+回転はギズモ…この辺に慣れてくれば、問題なく使えるようになります。

アニメーションを再生する

変換されたモデルは、モーションデータの最初のポーズを取っていると思いますが、まだ再生ボタンを押しても動きません。

アニメーションを再生するために、「Animator Controller」を設定しましょう。

まずHierarchy上でモデルの名前を選択すると、画面右の「Inspector」にモデルのプロパティが表示されます。

f:id:emifuwa:20171118100931j:plain

いくつかのパネルで構成されていますが、これらのパネルをコンポーネントと呼んでいます。

モデルの位置情報(Transform)や、MMD4Mechanimによって変換されたモデルであることがわかります。

その中に「Animator」というコンポーネントがありますね。

ここの「Controller」という箇所、今は「None」となっていますが、ここに、このモデルを動かすための「Animator Controller」を設定します。

やり方はいくつかありますが、一番簡単で手っ取り早い方法を紹介します。

まず、Project内・Assetsフォルダの中にある、おおもとの変換後モデルの方に注目します。 

水色のキューブのアイコンの左横にある、グレーの「▶」をクリックしてツリーを開くと、その中には変換済のモーションデータが入っていることがわかります(ここでは「1基本モーション」という名称)

f:id:emifuwa:20171118101108j:plain

このモーションをクリックして選択し、そのままInspector上のモデルの名前めがけてD&Dします。名前の上に乗っける感じ…

f:id:emifuwa:20171118101335j:plain

設定に成功すると、InspectorのAnimatorコンポーネントの「Controller」に、モデルと同じ名前の「Animator Controller」が設定されているのがわかります。

少しわかりにくいのですが、フォルダの中にAnimatorControllerファイルが自動生成されていますね。

f:id:emifuwa:20171118164054j:plain

では、モーションがちゃんと設定されているか、ほかの場所からも確認してみましょう。

現在、このUnity画面には、まだ登場していないタブがいくつかあります。

それらを画面に追加していきます。

タブの追加

画面左下、Gameビュータブの名前が表記されているあたりにカーソルを持っていき、右クリックして出て来るメニューから「Add Tab」→「Animation」を選択します。 

f:id:emifuwa:20171118102703j:plain

すると、Gameビューの横に「Animation」というタブが表示されました。

f:id:emifuwa:20171118102923j:plain

モーションのファイル名も確認でき、モーションキーらしきものも見えます。

(※ちなみに、ここでキーをいじってモーションを変更することはほぼ不可能なので、ここで修正することはあきらめてMMDで作り直しましょう)

必要ない時はGameビューのタブをクリックして、そちらを表示させておいて構いません。

あともう一枚追加します。

以前は右クリック→Add tabで追加できた気がするのですが…このバージョンで確認したらメニューになかったので、別の場所から。

メニューバー→「Window」→「Animator」を選択してください。

f:id:emifuwa:20171118103456j:plain

すると、たぶんSceneタブの横に「Animator」タブが出来ていると思います。

f:id:emifuwa:20171118103808j:plain

中に、モーション名が表記された黄色いかたまり(ステートと呼ばれます)があるのがわかりますね。

ここは複数のモーションデータをくっつけたりなんだかんだする場所なのですが、とりあえずは「こういうところがあるんだな~」程度で構いません。普段は使わないので、Sceneタブの方をクリックしてSceneを表側に表示しておいてください。

Hierarchyタブでモデルを選択した状態で、Animatorタブで黄色いステートが表示されていなかったら「モーションが登録できていない」ということです。

Animatorタブに黄色いステートもあるし、Animationタブにもキーが表示されているので、モーションはちゃんと登録できているようです。

再生ボタンを押してみましょう。

f:id:emifuwa:20171118110149j:plain

モーションを登録できていれば、問題なく動いてくれるはずです。

「AnimatorControllerを設定する」のが一番忘れがちなのでご注意を。

現時点では、カメラがまだ遠くにある上にモデルが向こうを向いているので、Riftで覗いてみても「遠くにいるな~」って感じですよね…

とりあえず、ProjectとSceneをこの辺で一回保存しておきましょう。

音声の追加

ダンスモーションを適用したので、音声も入れたい!という場合。

まず、音源ファイル(wavでいいと思います)をProjectに読み込みます。
D&Dで構いません(ここでは、とりあえずモデルのフォルダの中にD&Dしました)。

すると、オレンジ色の波形のようなアイコンのファイルが読み込まれました。

f:id:emifuwa:20171206101940j:plain

ダンスモーションに合わせたい場合は、モデルを選択し、MMD4Mechanimのコンポーネントから「Anim」タブの中の「Audio Clip」というところに音源ファイルをD&Dします。

ここに音源ファイルを設定すれば、モデルは自動的に音源に合わせて踊ってくれる…はずなのですが…

稀に、モーションと音源がズレてくることがあります。

キー数の多いモーションなどで、たまに生じる不具合なのですが…対策としては

MMD側で不要キー削除を行ったモーションを使う

②音声ファイルの方を加工する

といった感じになります。

それ以外の音声の追加や、基本的なUnityの中での音源の扱いなどに関しては、いくつかリンクをはっておきますのでそちらをご参照ください。

その1 Unityのサウンドの根っこ

[Unity] Unity×音についてざっくりまとめ - Qiita

※なお、配布されているダンスモーションにもたいてい利用規約が存在します。そちらをよく確認の上ご使用ください。

動かしてみて、モーションを修正したくなったら(モデルの再変換)

実際にVRで動かしてみると「ああ~ここのモーションはもうちょっとこうした方が…」っていうのが必ず出てくると思います。

Animationタブでモーションキーらしきものが出てきますが、あれをどうにかしてモーションを修正するのは無理なので、諦めてMMDでモーションを作り直してください。

保存の際は、最初のモーションと区別出来るように、またUnity上で判別しやすいような名前をつけていくといいと思います(日本語でOKです)。

モデルに新しいモーションを入れて変換し直す必要が出て来るのですが、この際にHierarchy上のモデルは削除しないでおいてください

なぜなら、「おおもとを削除しても、Hierarchy上から削除しない限り、このモデルがここにあったという情報がまだ残っているから」です。

f:id:emifuwa:20171118111838j:plain

今後作業をしていく上で、Inspectorでモデルの位置や大きさ、向きを調整したり、モデルに必要なコンポーネントをどんどん足していくことになると思います。

Hierarchy上からモデルを削除してしまうと、それらの情報は残りません。

また一から全部設定し直しです。めんどくさいです。

ですが、Hierarchy上では削除せずおおもとのモデルだけを変換し直せば、完全に同じモデルを変換し直した場合に限り、自動的にScene上に同じ状態で現れてくれます。

なので、モーションを変更するためには、とりあえず

MMDで新しいモーションを作成する

→AssetフォルダにD&Dする

→MMD4Mechanimファイルを選択し、新しいモーションを入れ、Processを押す

→新しいモーションを含んだモデルが生成される

という流れになります(その先もあります)。

では、新しいモーションをAssetフォルダにD&Dしたとして、その先を解説します。

f:id:emifuwa:20171118114554j:plain

上図の通りに新しいモーションを入れてProcessを押すと、変換後モデルが2つに増えるわけではなく、以前作成した変換後モデルの中身が自動的に新しいモーションに変わります

一見なにも変わっていないように見えますが、モデルのツリーを開いてみると、モーション名が変更されているのがわかります。

f:id:emifuwa:20171118120514j:plain

ですが、このまま新しいモーションを再生できるわけではありません。

Hierarchy上でモデルを選択し、さきほど追加した「Animatorタブ」をクリックして見てみると、モーション登録は以前の「1.基本モーション」のままになってます。

f:id:emifuwa:20171118121049j:plain

モーションを再登録する必要があります。 

まず、一番最初にモーションを登録する時に自動生成された「AnimatorController」をフォルダの中から削除してしまいます。

f:id:emifuwa:20171118170402j:plain

同じようなアイコン・同じような名前が並んでわかりにくいですが、変換後モデルの下にあるファイルです。

フォルダの中にある方を選択して削除してしまえば、InspectorのAnimatorコンポーネントに登録されている方も消えます。

f:id:emifuwa:20171118170959j:plain

あとは、一番最初にモーションを登録したのと同じ手順を繰り返します。

変換後モデルのツリーを開いた中に入っている新しくなったモーションを、Hierarchy上のモデルにD&Dします。このページの「アニメーションを再生する」の項目で説明していますね。

そうすれば、また新しくAnimatorControllerが自動生成し、モデルに新しいモーションが登録されます。

ですが…これでも何かうまくいかない時があります。

「新しいモーションにしたはずなのに新しい動きが反映されてない…」

「表情モーションだけ消えちゃってる…」

なんてことが、ままあります。

こんな時は慌てず騒がず、Hierarchy上のモデルを選択し、モデルのInspectorを表示させます。

モーションがモデルにちゃんと登録されているかどうか確認する箇所は、AnimatorControllerが適切に設定されていることと、「Anim」タブ内にanimファイルがちゃんと登録されているかどうかです。

f:id:emifuwa:20171118172214j:plain

Inspectorの「MMD4Mechanim Model(Script)」というコンポーネントがあります。

ここでモデルの様々な設定ができるのですが、ここでは「Anim」をクリックします。

Animタブの中を見てみると、ここに設定されているanimファイルが、前のままになっているのがわかりました。

(よくあるんだこれが…)

f:id:emifuwa:20171118173115j:plain

animファイルは、モーション変換時に自動生成されるファイルです。

f:id:emifuwa:20171118173633j:plain

フォルダの中にありますので、それをD&Dで「Anim File」のところに持っていきましょう。

(「Anim File」欄の一番右の◎部分をクリックすると、ファイル選択ウィンドウが開きます。そこからファイルを選択することもできます)

そうすれば、まず問題なく新しいモーションを再生できるはずです。

「めんどくさいな~~!!」と思った方も居ると思いますが、慣れです。

 修正したモーションに変更する手順をまとめると、

①新しいモーションをAssetフォルダに入れる

②変換後モデルとAnimatorControllerは一旦削除する

(※変換したモデルを削除しなくても再変換すれば勝手に入れ替わるんだけど、私は一旦削除してからまた新しく変換し直します~)

③新しいモーションをMMD4Mechanimに入れて再変換

④変換後モデルのツリーを開いて新しいモーションをHierarchyのモデルに乗せる

(すると新しいAnimatorControllerが自動生成・設定される)

⑤InspectorのMMD4MechanimコンポーネントのAnimタブに、新しいanimファイルがちゃんと設定されてるか確認する

わかってしまえばこれだけの作業です。「あ~~やっぱanimがちゃんと入ってない~~」とか言いながら作業できます。

なにごとも最初は慣れですので…!!頑張りましょう!! 

あとねUnityはたまに表示がバグったり、正しい操作をしてもうまくいかないことがまれによくあります!そんな時は一旦保存して、Unity再起動!それでも駄目ならPC再起動!すればなんとかなります!(ず~っとUnity開きっぱなしで一日作業してると調子が悪くなる気がする)

最初はもろもろめんどくさいかもしれませんが、めげずに進みましょう!