幸せになり隊

幸せってなに?どうやったら幸せになれるの?そんな思いを密かに燃えたぎらせる人たちの試行錯誤の記録。

MagicaVoxelで作った3DドットモデルをUnityで動かす方法

f:id:wbhappy:20161211222142p:plain

↓こちらのサイトで非常に丁寧に説明してくださっているのですが、Blender周りで操作が分からないところがあったので自分用にまとめます。文字ばっかりです。

github.dev7.jp

必要なソフト

事前準備

Daishiさんの素材を使う場合

こちらで配布されている2つのファイルを使わせていただきます

  • MagicaVoxel用素体(.vox)
  • 素体用アーマチュア(.blend)
BlenderのRigifyを使う場合(参考)
  1. [File] -> [User Preference] -> [Addons]を開く
  2. 左メニューの[Rigging]を選択し、Rigifyのチェックボックスをオンにする

これ以降の手順はDaishiさんの素材を使う場合のものですが、アーマチュアの部分をBlenderのRigifyに置き換えれば一緒です(ボーン、重みの調整が面倒ですが)

MagicaVoxel

  1. 素体(.vox)を開く
  2. 可動部の頂点が隣接しないようにモデルを作成する
  3. .objを出力する

Blender

  1. 素体用アーマチュア(.blend)を開く
  2. MagicaVoxelで作成した.objをインポートする
    • [File] -> [Import] -> [Wavefront(.obj)]
  3. 素体を縮小させてアーマチュアに合わせる
    1. [Object Mode]にする
    2. 素体をクリックして選択状態にする
    3. [S]で拡大縮小モード -> マウスドラッグで大きさを合わせる
  4. 不要な頂点を削除する
    1. [Edit Mode]にする
    2. [A]で全ての頂点を選択する
    3. [W]でSpecialメニューを開く
    4. [Remove Doubles]で不要な頂点を削除
  5. 関節周辺のメッシュを分割する(首から下は全部やってしまって大丈夫そう)
    1. [Edit Mode]にする
    2. 選択モードを[Face Select]にする
    3. 首から下の部分をすべて選択する([B]を押すと範囲選択モードになる)
    4. [W]でSpecialメニューを開く
    5. [Subdivide]で分割(場合によっては2回やる)
  6. ボーンとメッシュの重み付け
    1. [Object Mode]にする
    2. メッシュ(素体)を選択する
    3. [Shift]を押しながらボーンを選択する(※メッシュ->ボーンの順番が大事)
    4. [Ctrl]+[P]でParentメニューを開く
    5. [With Automatic Weights]を選択する
      • エラーが出るなら[With Envelope Weights]を選択
  7. weightを調整
    1. [Object Mode]にする
    2. メッシュ(素体)を選択する
    3. [Weight Paint Mode]にする
    4. Weightを適宜調整する(ペイントソフトで色を塗るような感じ)
      • ボーンごとに重みを調整していく(Outlinerでボーンを選択していくと楽)
  8. fbxで出力(あとはUnityのRigでHumanoidを選択して動かせばOK)

う〜ん・・・やっぱりBlenderは分かりづらい。 そのうちスクショ載せたい・・・。