アートアセットベストプラクティスガイド
FBX エクスポートガイド

3D アプリケーションからモデルをインポートする方法

3D モデルを Unity にインポートするには 2 つの方法があります。

  • ファイルブラウザから 3D モデルファイルを直接ドラッグして Unity の Project ウィンドウにドロップします。
  • 3D モデルファイルを Project ウィンドウの Assets フォルダーにコピーします。

Project ウィンドウでファイルを選択して Inspector ウィンドウで Model タブを開きインポートオプションを設定します。詳しくは モデル を参照してください。

Unity はよく使用されるたいていの 3D アプリケーションからのモデルインポートをサポートします。特定の3D パッケージからインポートする詳しい説明は、以下のページを参照してください。

テクスチャ

  • テクスチャは、Unity の Project ウィンドウにある Assets フォルダー内の Textures フォルダーに格納します(Mash の近く)。これにより、Unity は常にテクスチャを検索し、そのテクスチャを生成されたマテリアルに自動的に関連付けできます。詳細については、Textures を参照してください。

3D ファイル形式

Unity は 2 つの異なる形式のファイルでインポートした メッシュ をサポートします。

  1. .FBX や .OBJ などの エクスポートされた 3D ファイル形式 。3D モデリングウェアは一般的な形式でエクスポートすることが可能です。このファイルは、多種多様なソフトウェアでインポートしたり編集したりすることができます。
  2. 3D やデジタルコンテンツクリエーション (DCC) のプロプライエタリアプリケーションファイル3D Studio Max の .max ファイル形式、Blender の .blend ファイル形式などが含まれます。プロプライエタリファイルはそれを作成したソフトウェアでのみ編集可能です。それらのファイルは一般的に、最初に変換してインポートしないと、他のソフトウェアで直接編集することはできません。SketchUp の .skp ファイルは例外で、SketchUp からでも Unity からでも読み込むことができます。

Unity は両方の形式のファイルをインポートできます。各形式に長所と短所があるため、どちらを選ぶか検討が必要です。

エクスポートされた 3D ファイル形式

Unity は .fbx、.dae (Collada)、.3DS、.dxf、.obj、.skp ファイルを読み込むことができます。3D ファイルのエクスポートに関しては、3D モデリングソフトウェアのドキュメントを参照してください。

長所:

  • Unity にモデル全体をインポートする代わりに、必要な部分だけをインポートできます。
  • エクスポートしたジェネリックファイルは、エクスポートしていないファイルよりもサイズが小さいことがあります。
  • エクスポートしたジェネリックファイルを使用すると、コリジョンの型や相互関係性ごとに異なるコンポーネントを使用するなど、モジュール単位でのアプローチが推進されます。
  • Unity が直接サポートしていないソフトウェアのファイルも読み込むことができます。
  • すべての情報が正しくエクスポートされたのを確認するために、3D ファイル (.fbx, .obj) は、エクスポート後に 3D モデリングソフトウェアに再インポートが可能です。

短所

  • 元のファイルを変更する場合は、モデルを再エクスポートする必要があります。
  • ソースファイルと Unity にインポートしたファイル間のバージョン管理に特に注意が必要です。

独自の 3D アプリケーションファイル形式

Unity は Max, Maya, Blender, Cinema4D, Modo, Lightwave, Cheetah3D など DCC ソフトウェアのプロプライエタリファイルをインポートできます。これらのファイルはインポートの過程で Unity によって .fbx ファイルに変換されます。

長所:

  • 元のモデルで行われた更新は、自動的に Unity にインポートされます。
  • 最初は簡易ですが、開発とともに複雑化します。

短所

  • Unity プロジェクトを使用するすべてのマシンにライセンスが有効なソフトウェアをインストールする必要があります。
  • Unity プロジェクトを使用するすべてのマシンで、共通のソフトウェアバージョンを使用する必要があります。 異なるソフトウェアバージョンを使用すると、3D モデルをインポートするときにエラーや予期せぬ挙動の原因となります。
  • ファイルが不要なデータで満杯になることがあります。
  • サイズの大きなファイルは Unity プロジェクトのインポートやアセットの再インポートの速度を遅くすることがあります。なぜなら、 モデルを Unity にインポートするとき DCC ソフトウェアをバックグラウンドプロセスとして実行しなければならないからです。
  • Unity は、インポートの過程で内部的にプロプライエタリファイルを .fbx にエクスポートします。このため、.fbx データを検証し問題をトラブルシュートすることが難しくなります。

ノート .ma, .mb, .max, .c4d, .blend ファイルとして保存されているアセットは、それらに対応する DCC ソフトウェアがコンピューターにインストールされていない限り、インポートすることができません。つまり、同じ Unity プロジェクトを作業するマシンすべてに正しいソフトウェアがインストールされていなければなりません。例えば、 Maya を使ってExampleModel.mb を作成し、あるプロジェクトにコピーしたとします。そのプロジェクトで作業する人は全員、コンピューターに Maya をインストールする必要があります。

モデルインポーター: Model

Unity プロジェクトの Assets フォルダーに配置された Model (モデル) ファイルは自動的にインポートされ Unity アセットとして格納されます。

モデルファイルには、キャラクター、建物、家具などの 3D モデルが含まれます。モデルは複数のアセットとしてインポートされます。Project ウインドウでは、インポートされたメインのオブジェクトが、モデルプレハブとなります。通常は、モデルのプレハブが参照する複数のメッシュオブジェクトも含まれます。

モデルファイルは、このモデルまたは他のモデルをアニメーションするためのアニメーションデータを含む場合があります。アニメーションデータは 1 つ、または、複数のアニメーションクリップとしてインポートされます。

 メッシュフィルター と メッシュレンダラーの組み合わせによりモデルが画面に表示されます
メッシュフィルターメッシュレンダラーの組み合わせによりモデルが画面に表示されます

メッシュのインポート設定

モデルファイルの Import Settings は、モデルが選択されると、FBX インポーターのインスペクターウインドウの Model タブに表示されます。この設定は メッシュ やその 法線 に影響を与えます。設定はディスク上のアセットごとに適用されるため、別の設定を持つアセットが必要な場合は複製し、リネームします。

プロパティー 機能
Meshes
Scale Factor Unity の物理システムは、ゲーム世界での 1 メートルを、インポートされたファイルでの 1 単位と考えます。異なるスケールでモデリングしたい場合は、ここで修正します。それぞれの 3D パッケージのデフォルトは次のとおりです。
.fbx, .max, .jas, .c4d = 0.01
.mb, .ma, .lxo, .dxf, .blend, .dae = 1
.3ds = 0.1
Use File Scale これを有効にすると、モデルのデフォルトのスケーリングを使用します。カスタムの File Scale 値を使用する場合は、これを無効にします。Unity の物理システムは、ゲーム世界での 1 メートルを、インポートされたファイルでの 1 単位と考えます。異なるスケールでモデリングしたい場合は、ここで修正します。
File Scale モデルにカスタムスケールを設定します。 Use File Scale がチェックされている場合にのみ使用できます。
Mesh Compression この値を上げると、メッシュのファイルサイズを小さくできますが、異常が生じる可能性があります。解凍したメッシュの外見と違いすぎないように、できる限り高い値に設定します。このプロパティーは、ファイルサイズの削減 に便利です。
Read/Write Enabled これを有効にすると、メッシュデータはメモリに維持されます。そのため、カスタムのスクリプトを読み込み、変更することが可能です。これを無効にすると、Unity はゲームのメッシュデータのコピーをアンロードできるので、メモリを節約できます。ただし、メッシュを メッシュコライダー と一緒に使う場合、このオプションを有効にしなければならないことがあります。以下の場合が含まれます。
- 負のスケーリング ((–1, 1, 1) など)
- シアートランスフォーム (例えば、回転させたメッシュにスケールした親トランスフォームがある場合)
Optimize Mesh これを有効にすると、メッシュで三角形がリストされる順序を Unity が決定します。Unity は、GPU パフォーマンスが良くなるように頂点とインデックスの順序を変えます。
Import Blendshapes これを有効にすると、メッシュを伴うブレンドシェイプのインポートができるようになります。
Generate Colliders これを有効にすると、メッシュは自動的にアタッチされたメッシュコライダーと一緒にインポートされます。これは、環境ジオメトリの衝突のメッシュを素早く生成するのに役立ちます。しかし、動かすジオメトリには使用を避けてください。
Keep Quads Unity はどんなタイプのポリゴン (三角形以上の多角形) でもインポートできます。5 つ以上の頂点を持つポリゴンは常に三角形に変換されます。クアッドは Keep Quads が無効の時のみ、三角形に変換されます。テッセレーションシェーダーを使用する場合、クアッドのほうが、ポリゴンより好ましい場合があります。 詳しくは DX11 / OpenGL コアテッセレーションのサーフェースシェーダー を参照してください。
Index Format メッシュインデックスバッファのサイズを定義します。 注意 帯域幅とメモリストレージサイズ上の理由で、一般的にはデフォルトとして 16 bit インデックスに設定し、必要なときのみ 32 bit を使用します。
Auto これを選ぶと、メッシュをインポートするときに、メッシュの頂点数に基づいて 16 ビットインデックスか 32 ビットインデックス、どちらかが Unity によって選択されます。Unity 2017.3 以降のバージョンでアセットを加える場合には、これがデフォルトです。
16 bit これを選ぶと、メッシュをインポートするときに、常に 16 ビットインデックスを使用します。メッシュが大きい場合には、64,000 より少ない頂点数に分割されます。Unity 2017.2 以前のバージョンで作成されたプロジェクトの既存のアセットには、この設定が使用されます。
32 bit これを選ぶと、メッシュをインポートするときに、常に 32 ビットインデックスを使用します。この設定は、GPU ベースのレンダリングパイプライン (例えば、コンピュートシェーダーの三角形のカリングを使用して) を行うときに役立つ場合があります。これにより、すべてのメッシュに同じインデックス形式が使用され、シェーダーで 1 つの形式だけを扱うため、コンピュートシェーダーをより簡素化できます。
Weld Vertices これを有効にすると、空間の同じ位置を共有する頂点を結合することができます。これによって、メッシュの全体的な数を削減して頂点数を最適化できます。このオプションはデフォルトで有効になっています。

メッシュをインポートするときに、この最適化を無効にする必要がある場合があります。例えば、メッシュに同じ位置を占める重複した頂点を意図的に作成する場合、スクリプトで個々の頂点や三角形のデータを読み取ったり操作したりする方が便利なときなどです。
Import Visibility これを有効にすると、MeshRenderer コンポーネントが有効 (表示されている) かどうかを定義する FBX 設定をインポートします。 詳細は、以下の 可視性のインポート を参照してください。
Import Cameras これを有効にすると .FBX ファイルからカメラをインポートできます。詳しくは後述の カメラのインポート を参照してください。
Import Lights これを有効にすると .FBX ファイルからライトをインポートできます。詳しくは後述の ライトのインポート を参照してください。
Preserve Hierarchy これを有効にすると、このモデルにルートが 1 つしかない場合でも、必ず明示的なプレハブルートを作成します。 通常、FBX インポーターは最適化の方法としてモデルから空のルートノードを取り除きます。 ただし、同じ階層の一部を含む複数の FBX ファイルがある場合は、このオプションを使用して元の階層を維持することができます。

例えば、file1.fbx にはリグとメッシュが含まれ、file2.fbx にも同じリグが含まれていますが、そのメッシュのアニメーションのみが含まれています。 このオプションを有効にせずに file2.fbx をインポートすると、アニメーションはリグなしでインポートされ、階層が一致せず、アニメーションは壊れます。
Swap UVs これを有効にすると、メッシュ内の主要と 2 番目の UV チャンネルを入れ替えます。拡散テクスチャがライトマップからの UV を使用している場合は、この設定を使用してください。
Generate Lightmap UVs これを有効にすると、ライトマップに使用する 2 番目の UV2 チャンネルを作成します。詳しくは ライトマップ を参照してください。
Normals & Tangents
Normals 法線を計算するかどうか、およびどのように計算するかを定義します。これは、ゲームサイズの最適化 に役立ちます。
Import デフォルトのオプション。ファイルから法線をインポートします。
Calculate Smoothing Angle に基づいて、法線を計算します。選択すると、Smoothing Angle が有効になります。
None 法線を無効にします。メッシュが法線マッピングされているか、リアルタイムのライティングの影響を受けているかのどちらでもない場合は、このオプションを使用します。
Normals Mode Unity による法線の計算方法を定義します。これは、 NormalsCalculate に設定されているときにのみ選択できます。
Unweighted Legacy 法線を計算する古い方法 (バージョン 2017.1 より前)。現在の方法での実施に比べ、結果がわずかに違う場合があります。これは、プロジェクトを Unity の最新バージョンに移行する前にインポートされたすべての FBX プレハブでデフォルトです。
Unweighted 法線にウェイト設定はありません。
Area Weighted 法線は面の範囲をウェイトとして使用します。
Area Weighted 法線は各面の頂点角度をウェイトとして使用します。
Area and Angle Weighted 法線は各面の表面範囲と頂点角度をウェイトとして使用します。これはデフォルトのオプションです。
Tangents Unity による法線の計算方法を定義します。これは、 NormalsCalculate または Import に設定されているときにのみ選択できます。
Import NormalsImport に設定されている場合、FBX ファイルから頂点接線をインポートします。メッシュに接線がない場合は、法線マップしたシェーダーとは使用できません。
Calculate Tangent Space MikkTSpace を使って接線を計算します。NormalsCalculate に設定されている場合は、これがデフォルトです。
Calculate Legacy 古い非推奨のアルゴリズムで接線を計算します。
Calculate Legacy - Split Tangent UV チャート全体を分割して、古い非推奨のアルゴリズムで接線を計算します。法線マップのライトがメッシュの継ぎ目によって壊れている場合はこれを使用します。これは通常、キャラクターにのみ適用されます。
None 頂点接線をインポートしません。メッシュに接線がないため、法線マップにしたシェーダーとは使用できません。
Smoothing Angle 端の鋭さの度合いをハードエッジとして設定します。これは、法線マップの接線を分割するのにも使用されます。

可視性のインポート

Unity は、Import Visibility プロパティーを利用して、FBX ファイルから可視性に関するプロパティーを読み込むことができます。

Renderer.enabled プロパティーを制御することにより、値とアニメーションカーブを使って MeshRenderer コンポーネントを有効または無効にできます。

可視性の継承はデフォルトで true になっていますが、オーバーライドできます。例えば、親のメッシュの可視性が 0 の場合、子の描画されるものもすべて、無効になります。この場合は、子それぞれの Renderer.enabled プロパティーに対し、1 つのアニメーションカーブが作成されます。

3D モデリングアプリケーションの中には、可視性のプロパティーをサポートしない、または、制限のあるものがあります。詳しくは以下を参照してください。

カメラのインポート

.FBX ファイルからカメラをインポートするとき、以下の Camera プロパティーがサポートされます。

プロパティー 機能
Projection 透視投影 (Perspective) か平行投影 (Orthographic) か。アニメーションをサポートしません。
Field of View アニメーションをサポートします。
Near Clipping Plane / Far Clipping Plane アニメーションをサポートしません。3DSMax からエクスポートする場合に、Clip Manually 設定を有効にします。そうでない場合は、インポートにデフォルト値が適用されます。

ノート: ターゲットのカメラはサポートされません。

ライトのインポート

以下のタイプのライトがサポートされます。

  • Omni
  • Spot
  • Directional
  • Area

以下の Light プロパティーがサポートされます。

プロパティー 機能
Range UseFarAttenuation を有効にすると、FarAttenuationEndValue が使用されます。 FarAttenuationEndValue はアニメーションをサポートしません。
アニメーションをサポートします。
Intensity アニメーションをサポートします。
Spot Angle アニメーションをサポートします。スポットライトのみに使用可能です。

ノート: 3DSMax では、エクスポートされたデフォルト値が、現在選択されているフレームのプロパティーの値になります。混乱を避けるため、エクスポート時にはフレーム 0 に再生ヘッドを移動しておきます。

制限

3D モデリングアプリケーションの中には、ライトのプロパティーにスケールを適用するものがあります。この場合、例えば、スポットライトを階層によってスケールし、ライトの円錐形に影響を与えることが可能です。Unity はこれを行わないので、ライトが異なって見える原因になります。

FBX 形式はエリアライトの幅と高さを定義しません。3D モデリングアプリケーションの中には、このプロパティーを持たず、矩形領域を定義するためにスケーリングの使用しか許可しないものもあります。 このため、エリアライトのサイズは、インポート時に常に 1 になります。

ターゲットライトのアニメーションは、アニメーションがベイクされていない限りサポートされません。


  • 2017–09–04 限られた 編集レビュー で修正されたページ

  • 2018–03–12 限られた 編集レビュー で修正されたページ

  • Keep Quads の既存の (Unity 5.6以前) の機能は、マニュアル 5.6 に初めて記載

  • Normals モード, LightCamera インポートオプションは Unity 2017.1 で追加NewIn20171

  • Materials タブは 2017.2 で追加NewIn20172

  • Index Format プロパティーは2017.3 で追加NewIn20173

  • Preserve Hierarchies2017.3 で追加NewIn20173

関連項目

アートアセットベストプラクティスガイド
FBX エクスポートガイド