MagicaVoxelで作ったプリキュアをUnityで動かす
つよく! やさしく! うつくしく!
真のゲームクリエイターを目指すおじさんの物語!
夢へ向かって…
当記事はプリキュアAdvent Calendar 2015の13日目です。
前→ プリキュア放送中に今誰が活躍してるかわかるやつ作ろうとした by 100_200さん
次→ rubicureでプリキュアの誕生日を手軽に調べる by sue445さん
お手軽モデルデータ工場としてのMagicaVoxel
個人でゲームを作る場合に強力な味方!
世の中にはMagicaVoxelというボクセルエディタがあって、わりと簡単にプリキュアの3Dモデルデータを作ることが出来ます。

こいつを使ってUnityゲームの素材を作り、みんなニコニコ自家発電で楽しみましょうというのが本記事の趣旨です。
素材配布
素体をベースにプリキュアをモデリング
上記にリンクしたMagicaVoxel用素体をベースにしてプリキュアを作成していきます。
準備
MagicaVoxelをインストールし、素体をインポートしましょう。

(本当に最低限の)基本操作
あとはパレットから好きな色を取り、思うままボクセルを置いたり色を変えたり消したりしてプリキュアをモデリングしていきます。
画面左上の「Brush」の下、「V」「F」「B」のボタンをのうち「V」をオンにしましょう。
その状態で「Attach」モードにすると、3Dビューのカーソル位置にボクセルを置くことができます。
「Erase」モードにすると、カーソル位置のボクセルを消すことができます。
「Paint」モードではボクセルの色を変えます。
とりあえずそれだけ出来れば、あとはなんとかなるなる!
色にこだわれ!
プリキュアの皆さんは実にカラフルで個性的なデザインをしていらっしゃいます。
ボクセルアートという表現力に乏しい世界であっても、「色」さえ原作に忠実に再現すれば、多少形がイビツでもプリキュアに見えるモデルデータを作ることが出来ます(断言)。

ちがうパーツをくっつけてはならない
今回は最終的に、Unity上でSkinnedMeshアニメーションをさせることを目標としています。
よって、髪や服とくっつけずにモデリングしないと、腕や脚が自由に動かせないモデルになってしまいます。

上図のアンラブリーは髪と腕のボクセルがくっついて(隣接して)ますね。
これをそのままアニメーションさせるとこんな感じになります。

腕と髪の頂点が共有されてしまうのでこのようになってしまうわけですね。
Blender上でうまく編集して離れさせることも出来ますが、なかなか面倒です。
面倒な目に遭う前に、気をつけてモデリングしましょう。

特に注意が必要なのは、下図のような状態です。

一見離れているようなのですが、こういう場合も同一頂点なのでうまくいきません。気をつけましょう。
Blenderでプリキュアにボーンを入れる
さてさて、ボクセルプリキュアが完成したら、今度はBlenderにインポートしてボーンを入れていきます。
objで出力
MagicaVoxel右下の「Export」-「obj」をクリックし、obj形式でモデルデータを出力します。
出力先は、UnityプロジェクトのAssetsフォルダ内にするとのちのち楽です。

素体用アーマチュアを読み込む
Blenderを起動し、さきほど配布した素体用アーマチュアを開きます。

objをインポート
つづいて「File」-「Import」-「Wavefront (.obj)」でobjファイルを読み込みます。

拡大縮小&移動でモデルをアーマチュアのサイズ・位置に合わせます。

メッシュの編集
メッシュを編集します。
MagicaVoxelはobj出力時に同一頂点の最適化を行いませんので、「Remove Doubles」コマンドで重複頂点を削除します。
また、関節を入れたい位置に頂点を追加するなどしていい感じに編集します。
私の場合は面倒なので、「Subdivide」で適当に頂点を増やしています。
アーマチュアの編集
アーマチュアの各ボーンをいい感じにモデルに合わせて編集します。
素体からプロポーションを大きく変えていなければ、特に編集の必要はないと思います。
親子にする
メッシュ→アーマチュアの順に選択して「Make Parent」-「Armature Deform With Automatic Weights」でメッシュをボーンに関連付けます。
ポーズモードで意図したとおりにボーンが入ったか確認してください。.

FBX形式でエクスポート
「File」-「Export」-「FBX (.fbx)」でエクスポートします。
出力先はUnityプロジェクトのAssetsフォルダ内にしましょう。
UnityにFBXをインポート
Unityを起動し、出力したFBXを選択します。
インスペクタの「Rig」タグ-「Animation Type」を「Humanoid」に設定し、「Apply」ボタンを押します。

「Configure…」ボタンを押し、ボーンが正しく認識されていることを確認します。
「Done」ボタンを押してアセットのメタ情報を確定します。
アニメーションをつける
Asset Storeにある「Unityちゃん」(無料)のモーションなど、配布されているモーションを付けて楽しみましょう。

参考リンク
- http://github.dev7.jp/b/tags/MagicaVoxel/
- 当ブロクのMagicaVoxel記事
- https://www.youtube.com/playlist?list=PL2E62B90A9EAF5E71 SpreadBlenderさんのblender入門講座のリスト
- Blenderの基本操作について学びやすい動画講座
- https://youtu.be/wdOk5QXYC6Y?list=PL82_oZKG3V-szJO2WTAFjYnR_Qnej7NBA Unity 5 Tutorial - Animation Control
- Unityでスクリプトからアニメーションを制御する基礎
- http://www.nicovideo.jp/watch/sm27704710 【12分で】MagicaVoxelモデルをUnityで動かした【できる】
- 当記事の動画バージョン
むすび
MagicaVoxelは非常に簡単に可愛らしいキャラクターを作ることが出来ます。
作ったキャラクターを動かすのも、Blenderを使えば非常に簡単です。
さらに、それを使ったゲームもUnityを使えば簡単に作ることが出来ます。
みなさんもぜひオリジナルプリキュアゲームを作って楽しいプリキュアライフを送ってください。