もくじ
概要
目標
MagicaVoxelで人間っぽいデータを作って、なんとかかんとかしてUnityのHumanoidとして読み込ませます。
つまり、これを、
こうするってことです。
こういう時にお役立ちな東北ずん子ちゃんを作っていきますよ。
手順
MagicaVoxelでデータを作り、Blenderでボーンを組み、Unityでリグを付けます。
というわけで、以降この3つのツールを使い分けつつ説明していきます。
作成モデル
実はだいしさんという先駆者がいまして、MagicaVoxelで作ったプリキュアをUnityで動かすという記事を既に上げておられます。
今回はだいしさんの手法とは違いいわゆるマインクラフト的な、四角で構成されたブロック人形のようなモデルを作ります。
何が違うかというと、パーツの変形を許さない、というところです。
MagicaVoxel
パーツ分割
MagicaVoxelでモデルを作る上で、一番大事なのはパーツを適切に分割することです。
そのため、パーツごとに空間を分けて作業します。こんな感じに。
動かしたいパーツごとにパーツを分割しますが、UnityのHumanoidにする場合以下のボーンが必要になります。これを基準にしてください。
- Hips(尻、股関節あたり)
- Spine(頚椎、腰あたり)
- Head(頭)
- Upper Arm(二の腕)
- Lower Arm(腕)
- Hand(手)
- Upper Leg(太もも)
- Lower Leg(すね)
- Foot(足)
上記の他にも動かしたいパーツがあれば追加でパーツ分けすればいいですし、ボーンがあるからと言って絶対にパーツ分けが必要ということではないです。
今回作る東北ずん子ちゃんはHand(手)を作っていませんし、逆に袖パーツを追加しています。
出力
出力時は次のBlenderとの連携性を考慮して、パーツが物理的に分解された状態で出力します。
そして出力ファイルがまとまるように、WorldビューのUnionコマンドを使って全てのパーツを1つにまとめておきます。
ちなみに形式はplyが良いです。連携性が。
Blender
ボーン入れが面倒なのでボーンだけここで配布しておきます。
東北ずん子ボーン
このファイルを先に用意して作業すると少し楽かもしれません。
インポート
普通にインポートします。まあ迷わんでしょう。初期状態のハコとかカメラとかがあるなら消しといたら良いです。
で、ビューをテクスチャに変えてモデルの座標を(0,0,0)にします。
以降、この位置で作業します。右のペインはNキーで出せます。
モデルの初期調整
MagicaVoxelで作ったデータはボクセル単位で作られていてポリゴン数が非常にムダです。
そして色がVertex Colorsで付けられていて使いづらいです。この辺を調整します。
重複する頂点の削除
まずEdit ModeでRemove Doublesを選択して、重複する頂点を削除。
テクスチャ作成
この状態でUVマップを作成します。
Smart UV Projectを利用して、必ずIsland Marginを設定しときます。
頂点色で出来ている色をUVマップに落とし込みます。
まずUV/Image Editorを開く。
カメラのマークのRenderを開いて、Bake ModeをVertex ColorsにしてBakeします。すると画像がいい感じになります。
この画像はUnityにインポートするときに必要になるんで分かりやすい場所に保存しときます。
3D Viewに戻して、下三角っぽいマークのDataを開いて、UVMapが出来ていることを確認します。そのうえで、Vertex Colorsの「-」をクリックして頂点色を消してしまいます。
(3/14追記)
マテリアルが存在していないとあとでUnityにインポートしたときにマップが張り付かないようです。
まずマテリアルを作成し、
テクスチャで先程保存した画像を選んでおいてください。(画像は後々の作業のものなので別になっちゃってます)
頂点の簡素化
ToolのDeleteからLimited Dissolveを選択すると、要らない頂点が全部削除できます。
これで初期調整おわり。長いですな。
ボーン追加
ボーンを追加しましょう。
人間型のボーンをカンタンに追加する仕組みはいくつかありますが、今回のような特殊モデル用ではないので自作してしまいます。
作業はクソ面倒ですが頑張ります。ポイントだけまとめておきます。
- 手でパーツをいじらずに各座標を整数入力する
- 浮いているパーツにボーンを仕込むので、「Connected」は基本的に外す
- X軸対称はあまり信用できない
- Humanoidに必要なボーンはダミーを用意しておく
ウェイト設定
まずモデルをアーマチュアに突っ込みます。ドラッグアンドドロップしてArmature Deformを選びます。このときWithなんとかという項目は特に選ばなくて良いです。
モデルをウェイトペイントモードにするとボーン単位でウェイトが設定できるようになります。
で、ボーンを選択した状態で対応する頂点を選択してVertex GroupsにAssignします。頂点選択はCtrl+ドラッグでできるはずですが、できなかったら下の方から頂点選択モードにしてください。
こんな感じで各ボーンに対応する範囲だけ真っ赤になるようにウェイトを設定します。
ポーズ設定
ポーズモードを使って空中に浮いていたパーツをドッキングさせます。
整数単位でドッキングできるはずです。ウェイトの設定漏れなどがあればここで不自然な表示になります。
出力
ここまでやれば出力するだけです。fbx形式で出力します。
Unity
インポート
fbxファイルと、テクスチャファイルを同時にドラッグアンドドロップします。テクスチャが張り付いてることを確認します。張り付いてなかったらがんばりましょう。
Humanoid化
インポートしたモデルを選択して、RigのタイプをHumanoidに変更、Applyします。すると、高確率でエラーが出ます。その後Configureを選びます。
人体で赤く表示されているところがボーンが上手く自動割り当てできなかったところです。
右下の割当表示で、灰色の○が該当箇所です。
今回はダミーボーンを用意してあるのでそれを割り当てます。で、ApplyしてDone。
これで完成です。あとは好きなように遊びましょう。
とりあえず、Muscles & Settingsで動きのプレビューができるので、ちゃんと動けているか確認すると良いです。
配布
というわけでUnityで使えるモデルができましたね。
今回作った東北ずん子モデルは(ず・ω・きょ)ライセンスで配布しちゃうので好きに使ってあそびましょう。
(3/15追加)
東北きりたんボクセルモデル