MagicaVoxel→Blenderで汎用フォーマットに
■はじめに
magicaboxelで作ったモデルをblenderに持っていくときに困ったのでメモっときます。最終的にUnityや他のソフトで扱えるようにしていきたいと思います。
blenderをあまり扱ったことがない人のため画像多めで行きます。
この記事は Blender Advent Calendar 2020参加記事です。
自分の環境
MacBook Pro 2017
blender 2.80
MagicaVoxel 0.99.4.2
■MagicaVoxelのモデルをExport
今回はこちらのモデルを使っていきます。
自分の愛用しているMacbookです、割と多めのブロック数で作りました。
さてまず最初にすることはできる限りパーツを統合することです。MagicaVoxelは使用で126*126*126の領域でしかモデリングできません、従って今回作ったような大きいモデルを作る際はパーツ1とパーツ2(画像の大きな色付きの枠で囲まれているところ)を並べることでこの問題を解決できます。ですがこれをするとパーツの数exportしてしまいます。
今回このモデルではキーボードのボタンが個々のパーツとなっています、それをできるだけ一つのパーツにしていきます。やり方は簡単バラバラのパーツを選択してEditからBooleanでUnionするだけ。
注意して欲しいところですが先ほど述べたように126*126*126の領域以上のものにはできないので、なんとなく収まる具合にパーツは選択してください。
だからキーボードの半分を選択したんですね。
そしてある程度パーツを統合したらobjでexportします。
この際テクスチャなどがどこかへ行かないよう一つのフォルダにまとめておくことを強く水準します。
■Blenderにimport
無事モデルをエクスポートできたらいよいよBlender作業に移ります。
まずはBlenderを起動しデフォルトで配置されているキューブなどをすべて消します。
Blenderやっている人はn回見た光景ですね
次に先ほどexportしたobjデータをimportしていきます。
ファイル→インポート→Wavefrontを選択するとこんな画面が出るので先ほどのexportしたデータのフォルダを選択してください。
地獄の始まりです.objと書かれているデータ丁寧に一つずつ右上のボタンでinportしていきます、私の場合29個あるので29回丁寧にやっていきましょう。
できました...もっと効率的な方法はないものか...
右上のボタンを押してきちんとできているか確認します。
■モデルを軽くする
苦行が終わったら次に微調整していきます。
まずコレクションを作ります(イラストレーターとかのレイヤーだと思ってください)右上シーンコレクションと書いてあるところで右クリック→新規です。
collection2という名前で新しくできたと思います。
次に先ほど作成したcollection2にモデルを全部コピペします。
Aキーを押してモデルを全選択し(赤っぽくなるはず)⌘(Ctrl)+Cを押し、右上のcollection2を選択した状態で⌘+V(Ctrl)してください。
できたら最初のcollectionのチェックを外し非表示にしてください。そうしたらまたAキーでcollection2にコピーしたものを全選択し⌘(Ctrl)+Jで統合します。collection2がすっきりしたら成功です。
次に統合してすっきりしたモデルを選択し、TABキーで編集モードへ入ります。そしてAキーで全選択しoption(alt)+Mで出てくるウインドウ(他のバージョンの方は違う可能性が高い)の一番下の距離でを選択します。
すると一番下に〜個の頂点を削除と出るはずです。
次にベイクの準備をします。もう一度TABキーを押しでオブジェクトモードに戻り、⌘(Ctrl)+Cで押し⌘+V(Ctrl)で複製してください。ここから先はこの複製したオブジェクトを編集していきます。
次にコピー元のオブジェクトを一旦右上の目のマーク(ObjObject.003の右)を押し見えなくさせておきます。
複製したオブジェクトを選択した状態で右側の赤い丸いアイコン(下から2番目)を押しマテリアル設定画面に行きます。そしてー(マイナス)ボタンを空になるまで押しまくります。
白くなったら成功です、おまけに新規を押して新規マテリアルを作ります。
Shading画面に移りシェーダーエディター(下のやつ)でShift+A(追加)→入力→テクスチャ座標とShift+A(追加)→ベクトル→マッピングとShift+A(追加)→テクスチャ→画像テクスチャの3つを以下の画像のようにつなげます。そして画像テクスチャの新規を押します。
押すとこんな画面が出ます、Unityなどに持っていくのであれば半角英数字で名前をつけ、幅と高さをお好み(大きければより綺麗になります)で変更してください。1024*2という形で入力すればで簡単に倍になります。OKを押して次へ
次にUV Editing画面に行き、TABキーで編集モード(最初から編集モードになっているはず)にし、Aキーで全選択してからUキーのスマートUV投影を選択します。なんかウインドウが出ますがそのままOKを押してください。
しばらく経つと左側の画面にUVが出ます。
もう少しです頑張りましょう
カメラぽいアイコンを押してレンダー編集モードに行きます。一番上からレンダーエンジンをCyclesに変更。ベイクから選択→アクティブにチェックを入れ、レイの距離を0.1mに変更。
いよいよ最後です。TABキーを押しオブジェクトモードに戻り非表示にしていた元のモデル(私はObjobject.003)の目のチェックを外し、右上のモデル名が書かれているところで元のモデル(私はObjobject.003)を選択→UVが出たモデル(私はObjObject.031)Shift+クリックで複数選択します。最後ベイクボタンを押し少し待ちます。
少しすると左側のUV画面にカラーの画像が表示されます。一応元のモデルの目のチェックを外し、UVが出たモデルのみを表示して確認します。
確認できたら左の画像を保存します、画像→名前をつけて保存でお好きなところへ保存してください。
解像度が低いと感じた人は画像テクスチャに指定した解像度を上げればより綺麗になります。
■BlenderでExport
あとはお好みのフォーマットでエクスポートしてください。ここでは例としてFBXでexportしていきます。UVとテクスチャが貼られたモデルを選択しファイル→エクスポート→FBXを選択します。
次の画面で選択したオブジェクトにチェックを入れエクスポートします。
これでモデルが出力されました。UE4やUnityに出力したモデルをインポートしテクスチャを先ほど保存したものを選択してください。多分うまくいっているはず
■その他情報など
MagicaVoxelのバージョンが0.98であればこちらのプラグインがオススメです。
このBlenderプラグインは文字通りMagicaVoxelのモデルをBlenderにそのまま取り込むものとなっています。この方法であればVoxelの状態を残しつつインポートできるので物理演算で色々楽しめると思います。