モデルインポート
Import Settings ウィンドウ/タブ
FBX に変換されるファイル形式
- 3dsMax (.max)
- Maya (.mb / .ma)
- Blender (.blend)
- Cinema4D (.c4d)
- Modo (.lxo)
- LightWave (.lwo / .lws)
- Cheetah3D (.jas)
それ以外のファイル形式
ドキュメント:
使い方
参考:
FBX Importer をちゃんと理解する Model 編 | LIGHT11
How to change units of a .fbx file – Unity Forum
設定
Scene
- Scale Factor:モデル全体をスケールする。
- Convert Units:モデルファイルに定義されたモデルのスケーリングを Unity のスケールに変換する。
- Import BlendShapes:ブレンドシェイプをインポートする。
- Import Visibility:MeshRenderer が有効化どうかを表す「可視性」をインポートする。
- Import Cameras:カメラをインポートする。
- Import Lights:ライトをインポートする。
- Preserve Hierarchy:モデルにルートが1つしか存在しない場合もプレハブルートを作成する。複数のモデルでリグを共有していて階層を維持する必要がある場合などに使用する。
Meshes
- Mesh Compression:メッシュ境界毎にメッシュ精度を下げて圧縮率を上げる。また、コンポーネント毎にビット深度を下げてメッシュデータを圧縮する。
- Read/Write Enabled:ランタイムに CPU がメッシュデータにアクセスできるように CPU で利用可能なメモリに複製を保持する。メモリ使用量削減のために CPU でメッシュデータにアクセスしない場合は無効にするべき。
- Optimize Mesh:GPU パフォーマンスを改善するためにメッシュ内で三角形の順序を最適化する。
- Generate Colliders:メッシュ形状に沿って自動的にコライダーを生成する。環境ジオメトリの衝突メッシュの生成に役立つ。動くオブジェクトへの使用は避ける。
Geometry
- Keep Quads:三角形分割を行わない。テッセレーションシェーダーの使用時に便利な場合がある。5つ以上頂点を持つ N ゴンはこの設定に関わらず分割される。三角形ポリゴンと四角形ポリゴンは別のサブメッシュに保持される。
- Weld Vertices:空間的に同じ位置にある頂点を融合する。これによって同じ位置の頂点が同じプロパティ (UV、法線、接線、頂点カラーなど) を共有できる。また、頂点数が削減されてパフォーマンスの向上が期待できる。
- Index Format:メッシュインデックスバッファのサイズを指定する。Auto に設定にしておけば、通常は 16bit を用い、必要な場合にのみ 32bit を用いる。
- Normals:法線をインポートするあるいは計算で求めるかを指定する。法線を使用しないモデルに対して None を設定することでデータを削減することができる。
- Blend Shape Normals:ブレンドシェイプの法線を計算するかどうか、及び計算方法を指定する。
- Normals Mode:法線の計算方法を指定する。
- Unweighted (Legacy):Unity 2017.1 より前のバージョンで使用されていた計算方法を使用する。
- Unweighted:重み付けを使用しない。
- Area Weighted:面の大きさによって重み付けを行う。
- Angle Weighted:頂点に占める角度に基づいて重み付けを行う。
- Area and Angle Weighted:面の大きさと頂点に占める角度に基づいて重み付けを行う。(デフォルト)
- Smoothness Source:エッジのスムージングを指定する。
- Prefer Smoothing Groups:モデルファイルの指定を優先する。
- From Smoothing Groups:モデルファイルの指定に従う。
- From Angle:指定された角度に基づいて決定する。
- None:ハードエッジで頂点を分割しない。
- Smoothing Angle:指定した角度より面の成す角度が大きい場合にハードエッジに分割する。(
0
~180
/単位:度) - Tangents:接線の計算方法を指定する。
- Import:ファイルからインポートする。ファイルにデータがない場合、接線は使用できない。
- Calculate Legacy:従来のアルゴリズムで計算する。
- Calculate Legacy – Split Tangent:UV チャート全体を分割して、従来のアルゴリズムで計算する。
- Calculate Mikktspace:MikkTSpace によって接線を計算する。(デフォルト)
- None:接線を使用しない。
- Swap UVs:メッシュの UV チャンネルを入れ替える。Diffuse テクスチャでライトマップの UV を使用する場合にこの入れ替えを使用する。
- Generate Lightmap UVs:ライトマップに使用する UV チャンネルを作成する。
参考:
Model タブ | Unity 2018.4 マニュアル [公式]
ブレンドシェイプ (Blend Shapes)
ブレンドシェイプをインポートするためには Model タブで「Meshes > Import BlendShapes」を有効にする。
参考:
Blender でブレンドシェイプを作成して Unity に取り込む | LIGHT11
Blend Shape Normals
参考:
Unity でカスタム法線メッシュにブレンドシェイプを適用した際に法線が崩れる問題の解決法 – Qiita
アニメーション (Animation)
参考:
Blender と Unity におけるアニメーションのフレームレートを確認する | MR が楽しい
Animation タブ | Unity マニュアル [公式]
Importing non-humanoid animations | Unity Manual [Official]
ルートモーション (Root Motion)
FBX 形式でインポートしたアニメーションでルートモーションを適用する。
手順
- 「Rig」タブで「Root node」を指定する。
- Animator コンポーネントの「Apply Root Motion」を有効にする。
参考:
ルートモーションの概念と設定方法をサクッと理解する | LIGHT11
ルートモーションの仕組み | Unity マニュアル [公式]
マニュアルでのルートモーションのスクリプティング | Unity マニュアル [公式]
How to apply root motion to Blender animation – Unity Answers
How to make root motion in cat .fbx drive movement? – Unity Answers
How to get root motion from animations made in blender? – Unity Answers
Rigify and Root Motion in Unity. Latest Version not working? – Blender Stack Exchange
Animation ignores Root Motion – Unity Forum
No Root Transform Rotation or Position option available in fbx inspector – Unity Forum
How to disable animation root motion – Game Development Stack Exchange
三角形分割 (Triangulation)
参考:
Importing .fbx results in triangulation – Blender Stack Exchange
Normals Mode
参考:
Importing vs calculating normals – Unity Forum
Importing Normals – Unity Forum
How to import smooth normals correctly from Blender? Is it possible? – Unity Forum
Smoothing Angle
参考:
ModelImporter.normalSmoothingAngle | Unity スクリプトリファレンス [公式]
What exactly smoothing angles do – Unity Forum
法線を再計算する
参考:
スムージング角を用いて法線の再計算を行う | NORIO BLOG
better RecalculateNormals | My note
A better method to recalculate normals in Unity Part 2 | The Scheming Developer
Mesh.RecalculateNormals | Unity スクリプトリファレンス [公式]
Mesh Smoothing angle on mesh created at runtime – Unity Forum
法線マップ/接空間
参考:
Generating Perfect Normal Maps for Unity (and Other Programs) | Ben Golus
Unity3D Tangent Basis Calculator Plugin for xNormal | James O’Hare
How to export tangents? (Or rather, import them with Unity?) – Unity Forum
Normal map strange seam problem – Unity Forum
Unity normal map problem – polycount
Weird shading error around next to UV seams – reddit
圧縮 (Mesh Compression)
- FBX のインポート設定を開き、「Model」タブで「Mesh Compression」を
Low
以上に設定する。
参考:
Mesh Compression – モデルデータの書き出しサイズを小さくする | Unity な日々
自動設定
FBX のインポート時にスケールを自動的に調整し、コライダーを追加する。
using UnityEditor;
public class FBXScaleFix : AssetPostprocessor
{
public void OnPreprocessModel()
{
ModelImporter modelImporter = (ModelImporter) assetImporter;
modelImporter.globalScale = 1;
modelImporter.addCollider = true;
modelImporter.normalImportMode = ModelImporterTangentSpaceMode.Calculate;
}
}
Code language: C# (cs)
参考:
Exporting from Unity to Blender? – Unity Forum
アニメーションクリップを取り出して編集する
FBX ファイル内のアニメーションクリップは読み取り専用であるため、そのままでは編集できない。プロジェクトウィンドウで FBX ファイル内のアニメーションクリップを選択して、Ctrl
+ D
で複製する。
参考:
FBX に格納された AnimationClip を取り出し編集可能にする | テラシュールブログ
頂点数/三角ポリゴン数
参考:
その他
参考:
Asset Bundles を使って .fbx モデルをネット上から回収 – Qiita
ドキュメント
3D モデリングソフトウェアからのモデルのインポート | Unity 2018.4 マニュアル [公式]
他のアプリケーションからのエクスポート | Unity 2018.4 マニュアル [公式]
モデルの Import Settings ウィンドウ | Unity マニュアル [公式]
サポートされているモデルのファイル形式 | Unity マニュアル [公式]
他のアプリケーションからインポートするときの制限 | Unity マニュアル [公式]
FBX Instance Importer
動画:
入手:
FBX Instance Importer | Unity Asset Store [Official]
SmoothingAngleFix
コード:
Auto-fix Unity’s tangent space generation when importing models (Farfarer) – GitHub Gist