ゴイサギ日記

東京でエンジニアとして頑張って何とか生きてます。。ゆる~く更新していきます

【Unity】3Dモデルのインポート設定

FBXなど3Dモデルのインポート設定で個人的に重要だと思う項目をまとめてみた。

Model
Scale Factor

読み込んだ3Dモデルにスケールを掛けてサイズを調整したい場合に使用します。注意として Scale Factor を変更した3Dモデルに関連するアニメーションがある場合、そちらの Scale Factor も同じ値にする必要があります。

ファイル形式 デフォルト値
.fbx, .max, .jas, .c4d 0.01
.mb, .ma, .lxo, .dxf, .blend, .dae 1
.3ds 0.1
Mesh Compression

メッシュを圧縮します。32bit浮動小数点の代わりに固定小数点*1を使ってサイズを減らすので小数点以下の値を細かくし過ぎると形状が破綻する事があります。キャラモデルの顔などが影響しそうです。

Read/Write Enabled

メモリを消費するだけなのでチェックを外した方が良いです。
ただし、以下の場合はチェックを入れる必要があります。
スクリプトでメッシュを変形させる
・変形メッシュコライダー (負方向スケール、親オブジェクトが回転・縮小)

Optimize Mesh

CPUが計算しやすい頂点の並びに変更します。

Index Format

インデックスバッファのフォーマットを設定します。 (以下で説明する頂点の上限数は 65534個です)

Mode 説明
Auto メッシュの頂点数に応じて 16bit か 32bit を選択します。
16bit 常に16bitフォーマットを使います。頂点が上限数より多いメッシュは分割されます。
32bit 常に32bitフォーマットを使います。頂点が上限数より多くてもメッシュは分割されません。

頂点が上限数以下のモデルは 16bit にするとメモリが節約され、上限数より多くなる場合はメッシュが分割されて描画負荷(Set Pass数)が上がるので 32bit にした方が良さそうですね。

ちなみに上限数を超えてメッシュが分割された場合は以下の警告が表示されます。

Meshes may not have more than 65535 vertices at the moment. Mesh ‘xxxx’ will be split into 2 parts: ‘xxxx_0’, ‘xxxx_1’.
Weld Vertices

同じ位置にある頂点を結合し頂点数を減します。

Normals

法線が必要ないなら None で無効に出来てメモリを節約します。殆どのキャラや背景のモデルはライトを使うので無効にするのは難しいですが、例えばMayaで作成したUI演出のモデルなどは無効にできそうですね。

Tangents

法線マップを使わなければこれも必要ないです。

Rig
Optimize Game Object

チェックを入れて、Extract Transforms to Expose に設定されたGameObjectは、 Optimize Transform Hierarchy による削除対象GameObjectから除外されます。例えば剣や盾などのリンク先オブジェクトを消されたくない場合に設定します。

Animation
Anim Compression

アニメーションの圧縮方法を設定します。Keyframe Reduction を選択した場合、インポート時にキーフレーム数を減らします。

Animation Compression Errors

位置、回転、スケールの各キーフレームを減らす割合を設定します。値が大きい程、キーフレームを減らす割合が増えメモリ消費が少なくなりますが、アニメーションの品質を維持する事が難しくなります。また、このオプションは Anim Compression で Keyframe Reduction を選択した場合のみ有効になります。