
Magicavoxelで作った3D(ボクセル)モデルをUnityに取り込みたいけど、うまく行かない事ってありませんか?
▶テクスチャーが反映されない
▶角度がおかしい
▶3Dモデルが重たい
今回は、私自身もとっても困ったので、MagicavoxelからBlender、BlenderからUnityへ。これのやり方を書いていこうと思います。
①Magicavoxelでの準備

40×40×80の大きさでUnityゲームで利用する事を想定した建物を作りました。

まず、このモデルを、.plyファイルで出力します。
②Blenderでの準備

Blenderを開きます。このバージョンは2.9です。

初期のCubeは不要なので削除します。

ファイル→インポート→stanford(.ply)

先程作ったplyファイルを読み込みます。

0 0 0 の座標に先程の建物が出現しました。

3Dビューを変更します。"マテリアルプレビューモード"にします。

ついでに"Camera"と"Light"は不要なので削除します。

真っ白になりました。

"オブジェクトモード"から"編集モード"に変更します。

メッシュを整頓します。
"メッシュ"→"クリーンアップ"→"距離でマージ"を選択します。
このモデルの場合2万5000以上の不要なメッシュが消えました。これで、Unityにモデルを読み込んだ際に軽くなります。

次に、右側にある"マテリアルプロパティ"を選択し、"新規"で新しいマテリアルを追加します。

新しいマテリアルを追加したら、"サーフェル"の欄にある"ベースカラー"を、"頂点カラー"に変更します。
これで、Blenderに取り込んだplyファイルに色が付きます。

そして、画面右側にある"レンダープロパティ"を選択。
レンダーエンジンが"Eevee"になっているので、"Cycles"に変更します。

"ベイク"の欄にある"ベイクタイプ"を"ディフューズ"に変更し、"影響"にある"Contributions"の"直接照明"と"間接照明"のチェックマークを外しておきます。
この時点では、"ベイク"の実行ボタンは押さないでください。

画面上部の"Layout"から"UV Editing"に変更します。
"+ 新規"を押して、新しい画像を作成します。

新規画像の作成画面が出てきました。
名前は任意で入力。今回、"building_01texture"と入力しました。
その後、OKを押します。

新規画像が生成され、見た目はこんな感じになります。


"UV Editing"から"Shading"に変更します。

下の画面で、"追加"→"テクスチャ"→"画像テクスチャ"で、ノードに追加します。

追加されたウィンドウの画像選択ボタンから、先程作った画像"building_01texture"を選択します。

このような画面にします。
こちらも先程の"ベイク"同様、何も接続しないでください。

再び元の画面に戻ります。

モデルが配置されている画面の上部にある"UV"から"スマートUV投影"を選択します。

スマートUV投影の設定画面が出てきます。
アイランドの余白は、"0.20"くらいが良いです。
数値を入力したらOKを押します。

スマートUV投影が反映され、上の画像のようになります。

先程設定した"レンダープロパティ"に戻り、"直接証明"と"間接照明"のチェックマークが外れているか今一度確認しましょう。
次に"ベイク"を実行します。

テクスチャーが出来上がりました。

画面左側にある"Image"→"Save As..."を選択し、作成したテクスチャー画像を保存します。

画面右側の"マテリアルプロパティ"を選択肢、"ベースカラー"を"画像テクスチャ"に変更。

左にあるテクスチャ画像選択画面から、先程作成したテクスチャ画像を選択します。
今回の場合は、"building_01texture"

"マテリアルプロパティ"の"プレビュー"に画像が取り込まれているかを確認します。
これでほぼ設定は完了です。

"ファイル"→"エクスポート"→"FBX (.fbx)"を選択します。

エクスポート画面が出てきました。
前方 "-Zが前方"
上 "Yが上"
になっている事を確認します。
画像だと見切れていますが、"トランスフォームを適用"にチェックマークを入れてください。
何故かというと、
○Blenderの場合、Z軸が上方向の右手座標系。
○Unityの場合、Y軸が上方法の左手座標系。
だからです。
③Unityに入れてみよう

Unityを開きます。

先に、テクスチャ画像を挿入します。

次に、先程エクスポートした.fbxファイルを挿入します。
マテリアルにテクスチャ画像が自動で適応されます。

これで、UnityにMagicavoxelで作ったモデルが表示されるようになりました。

ちなみに、エクスポートの設定でトランスフォームを適応したので、ちゃんとXYZ =000 の値になっています。
④最後に
今回使用した建物のモデル15個を、フリー素材としてitch.ioで配布しています。
