右や左の旦那様

哀れなぎんしゃりにお恵みを

自由研究

MagicaVoxelでUnity用の人間モデルを作ろう(東北ずん子配布もあるよ)

投稿日:2018年3月11日 更新日:

概要

目標

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追加)
東北きりたんボクセルモデル

-自由研究

執筆者:


comment

メールアドレスが公開されることはありません。

This site uses Akismet to reduce spam. Learn how your comment data is processed.

関連記事

no image

MagicaVoxelとDMM.makeでオリジナルフィギュアを作ろう

もくじ1 読まなくても良い前書き2 概要3 MagicaVoxel3.1 フィギュアの自立の有無3.1.1 基本的に自立しません3.1.2 どうしても自立させたいなら3.2 折れる可能性を考慮する3. …

no image

DCEXPO2017に行ってきました

10/27~29にかけて、お台場の日本科学未来館で開催されたデジタルコンテンツエキスポ2017を見に行ってきました。 どれも見ごたえのある展示ばかりで、非常に面白かったのでいくつか紹介したいと思います …

no image

例え話をしないC言語のポインタの説明

もくじ1 まえおき2 Hello, Worldより簡単に2.1 サンプルコード2.2 変数の置き場所2.3 変数が入っているところを見てみる3 C言語とメモリ3.1 変数cの「まわり」を見てみる3.2 …

no image

C言語のポインタに関する補足説明

前回、C言語のポインタに関する解説記事を書きまして、そこそこの反響を貰うとともにいくつかの指摘を受けました。 前回の記事では幾つか「ウソではないけど真実と違う」記述がありまして、その点を補足としていく …

no image

Unityでメッシュをさわるノウハウ

ヒマなので覚書。ウラを取っていない経験則なので話半分で読んでください。 あと、3Dの基本概念とUnity固有の話の区別が付いていないのでごめんなさい。 もくじ1 Meshクラスの基本2 ポリゴンの読み …