3D モデルを Unity にインポートするには 2 つの方法があります。
Project ウィンドウでファイルを選択して Inspector ウィンドウで Model タブを開きインポートオプションを設定します。詳しくは モデル を参照してください。
Unity はよく使用されるたいていの 3D アプリケーションからのモデルインポートをサポートします。特定の3D パッケージからインポートする詳しい説明は、以下のページを参照してください。
Unity は 2 つの異なる形式のファイルでインポートした メッシュ をサポートします。
Unity は両方の形式のファイルをインポートできます。各形式に長所と短所があるため、どちらを選ぶか検討が必要です。
Unity は .fbx、.dae (Collada)、.3DS、.dxf、.obj、.skp ファイルを読み込むことができます。3D ファイルのエクスポートに関しては、3D モデリングソフトウェアのドキュメントを参照してください。
長所
短所
Unity は Max, Maya, Blender, Cinema4D, Modo, Lightwave, Cheetah3D など DCC ソフトウェアのプロプライエタリファイルをインポートできます。これらのファイルはインポートの過程で Unity によって .fbx ファイルに変換されます。
長所
短所
ノート .ma, .mb, .max, .c4d, .blend ファイルとして保存されているアセットは、それらに対応する DCC ソフトウェアがコンピューターにインストールされていない限り、インポートすることができません。つまり、同じ Unity プロジェクトを作業するマシンすべてに正しいソフトウェアがインストールされていなければなりません。例えば、 Maya を使ってExampleModel.mb を作成し、あるプロジェクトにコピーしたとします。そのプロジェクトで作業する人は全員、コンピューターに Maya をインストールする必要があります。
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) など) - シアー (Shear) トランスフォーム (例えば、回転させたメッシュにスケールした親トランスフォームがある場合) |
|
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 による法線の計算方法を定義します。これは、 Normals が Calculate に設定されているときにのみ選択できます。 | |
Unweighted Legacy | 法線を計算する古い方法 (バージョン 2017.1 より前)。現在の方法での実施に比べ、結果がわずかに違う場合があります。これは、プロジェクトを Unity の最新バージョンに移行する前にインポートされたすべての FBX プレハブでデフォルトです。 | |
Unweighted | 法線にウェイト設定はありません。 | |
Area Weighted | 法線は面の範囲をウェイトとして使用します。 | |
Angle Weighted | 法線は各面の頂点角度をウェイトとして使用します。 | |
Area and Angle Weighted | 法線は各面の表面範囲と頂点角度をウェイトとして使用します。これはデフォルトのオプションです。 | |
Tangents | Unity による法線の計算方法を定義します。これは、 Normals が Calculate または Import に設定されているときにのみ選択できます。 | |
Import | Normals が Import に設定されている場合、FBX ファイルから頂点接線をインポートします。メッシュに接線がない場合は、法線マップしたシェーダーとは使用できません。 | |
Calculate Tangent Space | MikkTSpace を使って接線を計算します。Normals が Calculate に設定されている場合は、これがデフォルトです。 | |
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 設定を有効にします。そうでない場合は、インポートにデフォルト値が適用されます。 |
ノート: ターゲットのカメラはサポートされません。
以下のタイプのライトがサポートされます。
以下の Light プロパティーがサポートされます。
プロパティー | 機能 |
---|---|
Range | UseFarAttenuation を有効にすると、FarAttenuationEndValue が使用されます。 FarAttenuationEndValue はアニメーションをサポートしません。 |
Color | アニメーションをサポートします。 |
Intensity | アニメーションをサポートします。 |
Spot Angle | アニメーションをサポートします。スポットライトのみに使用可能です。 |
ノート: 3DSMax では、エクスポートされたデフォルト値が、現在選択されているフレームのプロパティーの値になります。混乱を避けるため、エクスポート時にはフレーム 0 に再生ヘッドを移動しておきます。
3D モデリングアプリケーションの中には、ライトのプロパティーにスケールを適用するものがあります。この場合、例えば、スポットライトを階層によってスケールし、ライトの円錐形に影響を与えることが可能です。Unity はこれを行わないので、ライトが異なって見える原因になります。
FBX 形式はエリアライトの幅と高さを定義しません。3D モデリングアプリケーションの中には、このプロパティーを持たず、矩形領域を定義するためにスケーリングの使用しか許可しないものもあります。 このため、エリアライトのサイズは、インポート時に常に 1 になります。
ターゲットライトのアニメーションは、アニメーションがベイクされていない限りサポートされません。
2017–09–04 限られた 編集レビュー で修正されたページ
2018–03–12 限られた 編集レビュー で修正されたページ
Keep Quads の既存の (Unity 5.6以前) の機能は、マニュアル 5.6 に初めて記載
Normals モード, Light と Camera インポートオプションは Unity 2017.1 で追加NewIn20171
Materials タブは 2017.2 で追加NewIn20172
Index Format プロパティーは2017.3 で追加NewIn20173
Preserve Hierarchies は 2017.3 で追加NewIn20173