ネノクニスタジオ

Nenokuni Studio

2017/07/22 - ボクセルモデルをUnityで利用する

Category: blender, unity, voxel

近況は大体TwitterとかEntyに書いちゃうのでこういうアーカイブしときたいエントリでもない限りだいたいサイト放置しちゃう。
最近MagicaVoxelを半年振りくらいにいじったりしたので、ついでにちょこちょこ調べてUnityに取り込むところまでやりました。
いくつか躓いたので忘れないためのメモ書き程度に。
ついに僕も3Dデビューです。あとUnityデビューです。でもまだcocos2d-xから離れられない…

参考にした記事
MagicaVoxel→Blender→Unityでボクセルモデルを動かす① – 裏鍵.dump
ボーン、ウェイトのつけかたなどを参考にしました。ありがとうございます。
これにたどり着いてなければ多分諦めていた。
 
1.MagicaVoxelでボクセルモデルを用意
とりあえず適当にモデルを作りましょう。
3Dモデルといえばこれよね的なT-ポーズにしときます。

わりとかわいくできた。
 
2.obj形式でエクスポート
MagicaVoxelからobj形式でエクスポートします。
一緒にパレットファイルもエクスポートされるのでうっかり消さないようにしましょう。あとで使います。
もしかしたらこのパレット直接いじればカラーバリエーション簡単に作れるのかも。
 
3.objファイルをBlenderにインポート
操作方法とかは適当にぐぐるかがんばってくだっさい。基本右クリックだったのはかろうじて覚えてた。
とりあえずモデルの縮尺を適当に小さくして、メッシュから重複した頂点を削除しときましょう。
 
4.アーマチュアを作成
こちらの記事(MagicaVoxel→Blender→Unityでボクセルモデルを動かす① – 裏鍵.dump)を参考にボーンを生やしてアーマチュアを作成します。
ボーンの作成時にきちんと名前をつけておくとUnityに取り込んだときAvatorの設定が楽です。
X-Mirrorモードで自動で割り振られる名称はモデルの左右ではなく画面上における左右?のようです。
(モデルを正面に向けて作業してるとモデルの右をL、左をRみたいにボーンが自動命名されていた)
限りなく楽したいならモデルの尻を見ながらボーンつけてください。
後の作業でなんかボーンの親子関係が色々ややこしいのですが、それは別記事にでもしときます。

 
5.モデルにアーマチュアを設定
こちらの記事(MagicaVoxel→Blender→Unityでボクセルモデルを動かす① – 裏鍵.dump)を参考にモデルにアーマチュアを設定します。
 
6.ウェイトペイント
最初は素直にぺたぺたとウェイトペイントをしていたんですが、めんどくさい。少なくともモデルを量産するのには大分ネックになる作業でした。
MagicaVoxel→Blender→Unityでボクセルモデルを動かす 改① – 裏鍵.dump
自動化できるやん。

参考記事の通りにモデル⇒アーマチュアの順に選択しCtrl+P「自動のウェイトで」を選択することで自動ウェイトペイントが実行されます。
記事中ではobj形式からでは自動ウェイトペイントが使えないと記載がありましたが、Blender2.78cでは特に問題なく実行できました。
ただし5を飛ばして直接モデルとアーマチュアを関連付けつつ自動ウェイトペイントしようとするとエラーで実行されませんでした。
PLY形式の場合は5を飛ばしても大丈夫だったので、この手順の違いなのかも。
ただPLY形式のモデルを使用するとテクスチャをどう設定していいのか良くわからずに死にました。僕は多分objしか使わないと思う。頂点数も微妙な差だけど少ないし。
  
7.自動ウェイトペイントの結果を確認

アーマチュアをポーズモード、モデルをウェイトペイントモードにして自動ウェイトペイントの結果を確認します。
複雑なモデルだとここで修正とか必要になるのかな。わからん。
 
8.FBX形式で出力
というわけでFBX形式で出力します。
 
9.Unityにインポート
はい。
2で出力されたパレットのPNGファイルも一緒にインポートしましょう。Materialあたりに。
 
10.モデルのAvatorを編集


モデルを選択し、RigからAnimationType:Humanoidを選択。Configureからアーマチュアの各部をAvatorに関連付けしていきます。
これが若干めんどくさい。
4で述べたとおり、それっぽい名称がボーンについてるとエディタ側で適当に拾ってくれるようです。
自動命名された名前のままやると左右逆のボーンがAvatorに関連付けられSAN値減りそうな形状になります。怖い。
ボーン同士の親子関係が大分めんどくさいのですが、詳しい解説はまた後日。
 
11.Material等を設定
なんかインポートした時点で設定されてたりされてなかったりだったんですが、とりあえずモデルのMaterialにインポートしたパレット画像を適用します。
あとモデルの表面がなんか気持ち悪いのでNormalsをCaluculateに設定し、Smoothing Angleを0に設定するとそれっぽいです。
これモデル作る時点で適用できないのかな…
 
12.モデルをシーンに追加
適当なシーンにモデルを追加します。
Animatorが設定されていなければ追加し、これまた適当なControllerをAnimatorに追加します。Avatorはモデルに設定されたものを指定。
今回はMecanim Locomotion Starter Kitを使って適当なモーションをつけました。
 

※右はRigの設定失敗してる旧モデル
 
といった感じで完了です。
ボーンは一旦作成したらある程度使い回しが効くみたいなのでこれで色々作って遊べそうです。
今後の課題としては、頭と身体を分割して頭だけ差し替えて表情を変えるとかそういう処理はどうすればいいのかなとか、その場合ボーンはどう設定するのかとかを調べたりする予定です。というか誰か教えて。
 
まあその前にエロゲーとっととリリースしろよって話なんですが。いや、あとちょっとやねん。あとちょっと、あと(以下略