🍰

UnityでGameObjectとして扱うための3Dデータの軽量化

2024/01/29に公開

選択肢の確認

CAD、DCCなどモデリングソフトで作成した3DデータをUnityに取り込みたい状況はあります。
ファイル拡張子は数多く存在していて、同様に取り込み方もたくさんあります。
UnityのAsset Managerから動的にモデルを取り込む方法も選択肢の一つだと思いますが、ビルドするアプリにアセットとしてモデルを持たせる前提で以下を書いてます。

フローチャート

フローチャートの番号に対応した説明

Unityが対応するモデルのファイル形式
標準的な3Dファイル形式は対応していますが、.fbxが望ましい。

Pixyz製品で変換
3つの選択肢からやりたいことにあったのを選ぶ

  • 自動処理をするならPixyz Senario Processor
  • Pythonスクリプトで半自動するならPixyz Studio
  • Unity Editorに取り込んでからどうにかするならPixyz Plugin

Pixyz製品で軽量化
軽量化も複数方法がありますが頂点やメッシュを減らして見た目を少し犠牲にしてもデータを軽くしたい場合はDecimationを使う
Decimation画像

UnityMeshSimplifierで軽量化
元の状態
FBXを取り込んだ直後の元の状態ではTris: 8.6M、Verts: 4.6Mだった。

処理後
MeshSimplifierのSimplifyMesh()を実行して元の25%まで削減。 Tris: 2.2M、Verts: 1.2M。

何も考えずに75%削ると曲面が荒くなって見えますので、どこまでトレードオフできるかは検討が必要。
Unityに素で取り込んだモデルを簡単に軽量化できるのは魅力的です。

MeshSimplifierを組み込んだパッケージも公開されていて、便利でした

Discussion