【Unity】FBX Importerをちゃんと理解する - Model編

色々と設定項目があるのにいまいちまとまった情報が少ないFBX Importer。
一度ちゃんと理解しておくべき部分なので、簡単ですがまとめてみます。

今回はModelタブについてみていきます。

f:id:halya_11:20180326225943p:plain:w300

これらの項目を順番に見ていきます。

Unityは5.6.1p3(上げねば・・)

Scale Factor / Use File Scale / File Scale

これらについては以前書いた次の記事を参照していただいた方がわかりやすいです。

light11.hatenadiary.com

デフォルト値から変えるケースはあまりないかな、と思います。

Mesh Compression

メッシュを圧縮してファイルサイズを減らします。
Off / Low / Middle / High から選べます。

圧縮Offと圧縮するのとではかなりサイズが変わるケースもありそうなので、
実際に設定してビルドしてみて、見た目的に許容できる範囲を探るのが良さそうです。

細かい情報については以前まとめた記事があるので参照してください。 light11.hatenadiary.com

Read/Write Enabled

メッシュデータを動的に書き換えたいときにはこれをtrueにする必要があります。
ただ、そうするとメッシュがメモリに保持されるため、メモリ使用量が増えます。

不要なときはちゃんとfalseにしておく必要がありそうです。

ちなみに上記のケース以外でも、Mesh Colliderを使っているときに一定の条件をみたすとtrueにしなければならなくなるようです。

However, in certain cases when the Mesh is used with a Mesh Collider, this option must be enabled. These cases include:
- Negative scaling (for example, (–1, 1, 1)).
- Shear transform (for example, when a rotated Mesh has a scaled parent transform).

Optimize Mesh

これをtrueにするとメッシュのtrianglesの順番が並べ替えられます。

これにより、キャッシュヒット率が上がり処理負荷が抑えられるようです。
https://forum.unity.com/threads/what-does-optimize-mesh-do.346220/

trianglesを並べ替えられて困るケースもあまりないと思うので、基本的にtrueで良いと思います。

ちなみに挙動を確認したい場合、Mesh.trianglesをログ出力すれば並べ替えられていることが確認できます。

Import BlendShapes

チェックするとBlendShapeが取り込まれます。
BlendShapeを使う場合のみチェック。

実際にBlendShapeを作って試したい方は下記の記事を参照してください。
light11.hatenadiary.com

Generate Colliders

チェックをするとMeshColliderが自動的に生成されます。
フローを簡易化したい場合に使う感じでしょうか。

Keep Quads

チェックすると四角形ポリゴンを三角形ポリゴンに変換しないで、そのままインポートします。
テッセレーションの際に四角形の方が都合の良いケースがあるとのこと。

Quads might be preferable over polygons when using Tessellation shaders.

基本はチェックなしで良さげ。

Weld Vertices

チェックすると同じ座標にある頂点が結合されます。
デフォルトはON。

あえて頂点を重ねた縮退ポリゴンを作って、アニメーション時などに使用するとかしたい時のみチェックを外します。

Swap UVs

メインのUVとライトマップ用のUVが逆に読み込まれてしまっている場合にチェックします。

Generate Lightmap UVs

ライトマップ用のUVを生成したい場合にチェックします。

Normals

法線情報をどのように生成するかを選択できます。

Importを選択した場合には、FBXの法線情報をそのまま使います。
デフォルト設定。大抵はこの設定と思います。

Calculateを設定するとUnityが法線情報を計算します。
またその場合、SmoothingAngleパラメータが有効になります。

SmoothingAngleを大きくすると滑らかな見た目になります。
f:id:halya_11:20180328233119p:plain:w400
SmoothingAngle: 180(max)

SmoothingAngleを小さくすると角張った見た目になります。
f:id:halya_11:20180328233218p:plain:w400
SmoothingAngle: 0(min)

用途としてはフラットシェーディングしたい時にSmoothingAngleを下げるとかでしょうか。
ただしフラットシェーディングに近づけるということは同じ頂点座標に複数の法線と頂点を持つということになるため、サイズは大きくなります。
そう考えるとなかなかここで制御するのはワークフロー的にきついような・・

また、Noneを選択した場合は法線情報を生成しません。
法線が必要ない場合にはチェックを外しておきます。

Tangent

Calcuateを選択するとUnityが計算します。
ノーマルマッピングをしない場合など、Tangentを使わないならばチェックを外しておきます。

Import Materials

FBXからマテリアル情報を読み込む場合はチェックします。
チェックすると、FBXと同階層にMaterialsフォルダが生成され、その配下にマテリアルが作成されます。

Material Naming

FBXから読み込んだマテリアルの命名方法を選択します。

  • By Base Texture Name: FBXのマテリアルのテクスチャ名をマテリアル名とします
  • From Model's Material: FBXのマテリアル名をマテリアル名とします
  • Model Name + Model's Material: [FBX名]-[FBXのマテリアル名]をマテリアル名とします

Material Search

FBXをインポートした時に、この検索方法でMaterialsフォルダを検索し、その中にMaterial Namingで指定した名前のマテリアルがあれば、自動的にそのマテリアルを紐付けます。

  • Local Materials Folder: FBXと同階層にあるMaterialsフォルダ内のみ検索します
  • Recursive-Up: FBXと同階層から上の階層に向かって再帰的にMaterialsフォルダを検索します
  • Project-Wide: Assets内の全てのMaterialsフォルダを検索します

このようにマテリアルを文字列で検索するため、これを使う場合には命名規則をきちんと決めておく必要があります。

参考サイト

マニュアル docs.unity3d.com

docs.unity3d.com

docs.unity3d.com