FBX スタティック メッシュ パイプライン

FBX コンテンツ パイプラインを使ってスタティックメッシュを設定、エクスポート、インポートします

Windows
MacOS
Linux

FBX インポート パイプラインでスタティックメッシュがサポートされているため、3D アプリケーションから Unreal Engine 4 へのメッシュの取り込みをシンプルで負担なく行うことができます。メッシュをインポートすると、それぞれの 3D アプリケーションでメッシュに適用されているマテリアルで使用されたテクスチャ (ディフューズと法線マップのみ) もインポートされ、UE4 でメッシュに適用するマテリアルの生成に使用されます。

FBX を使用してスタティックメッシュをインポートする機能が以下です。

現時点では、単一ファイルで複数のメッシュをカスタム コリジョンと一緒にインポートすると、最初のメッシュのコリジョンのみがインポートされます。

UE4 の FBX インポート パイプラインでは、FBX 2018 を使用します。エクスポート中に他のバージョンを使用すると、互換性がなくなる場合があります。

一般設定

一般的に、お好きなツールと方法を使用してスタティックメッシュを作成することができます。円滑なエクスポートやインポート処理、およびアンリアルエディタでメッシュを適切に処理するためには、 UV の設定やメッシュの配置に関して考慮すべき条件が幾つかあります。

回転軸

Unreal Engine におけるメッシュの回転軸は、あらゆる変換 (平行移動、回転、スケーリング) を実行する際の中心点を決定します。

Pivot point of a mesh

3D モデリング アプリケーションからエクスポートすると、回転軸の原点は常に (0、0、0) となります。そのため、原点は通常、Unreal Editor 内側のグリッドにスナップする際に、正確にアライメントするためにメッシュの隅を原点にして、メッシュをその原点で作成するのが最適です。

Pivot point located at the origin

三角分割

Unreal Engine のメッシュは、三角分割されなければなりません。これは、グラフィックスのハードウェアがトライアングルしか扱わないためです。

triangles on a cube mesh

メッシュを確実に三角分割する方法はいくつかあります。

  • トライアングルのみを使用してメッシュをモデリングする - これは、仕上がりを最大限に制御できるため、最善の方法です。

  • 3D アプリケーションでメッシュを三角分割する - エクスポートする前にクリーンアップおよび修正できるため良い方法です。

  • FBX エクスポーターがメッシュを三角分割できるようにする - クリーンアップはできませんが単純なメッシュには機能するため、悪くはない方法です。

  • インポーターがメッシュを三角分割できるようにする - クリーンアップはできませんが単純なメッシュには機能するため、悪くはない方法です。

エッジの方向と配置をコントロールできるため、3D アプリケーション内でメッシュを手動で三角分割することが常に最善の解決法です。自動的に三角分割を実行させると、望ましくない結果となる場合があります。

Examples of bad automatic triangulation

UV テクスチャ座標

Unreal Engine 4 は、複数の UV セットのインポートを FBX パイプラインでサポートしています。スタティック メッシュの場合、これは通常ディフューズの UV の一式の処理に使用しますFBX パイプラインを使用したスタティック メッシュの UV の設定に、特別な条件はありません。

法線マップの作成

メッシュの法線マップは、たいていのモデリング アプリケーション内で直接作成することができます。そのためには、低解像度のレンダリング メッシュと高解像度の詳細メッシュを作成します。

low-res mesh and high-res mesh side by side

高解像度の詳細メッシュのジオメトリは、法線マップの法線を生成するために使用します。Epic 社内では XNormal をプロセスに導入するワークフローを採り入れていますが、UE4 でレンダリング処理すると多くの場合、法線の質がはるかに良くなります。プロセスの詳細は、「法線マップ作成ガイド」を参照してください。

マテリアル

外部アプリケーションでモデリングされたメッシュに適用されるマテリアルは、メッシュとともにエクスポートされて、Unreal にインポートされます。これによって、プロセスは簡略化されます。テクスチャを単独で Unreal へインポートする必要がなく、マテリアルを作成したり適用したりする必要もありません。FBX パイプラインを使用すると、インポート プロセスによってこれらの動作すべてが実行可能となります。

こうしたマテリアルもある特定の方法で設定しなくてはいけません。特にメッシュに複数のマテリアルがある場合、またはメッシュ上のマテリアルの順序が重要な場合などです (例えばマテリアル 0 を胴体にして、マテリアル 1 を頭部にしなければならないキャラクター モデルの場合など)。

エクスポートのためにマテリアルをセットアップする詳細については、「FBX マテリアル パイプライン」ページをご覧ください。

Collision (コリジョン)

単純化したコリジョン ジオメトリは、ゲーム内のコリジョン検知の最適化に重要です。Unreal Engine 4 には、スタティックメッシュ エディタ 内でコリジョン ジオメトリを作成するための基本ツールがあります。ただし、状況によっては、使用している 3D モデリング アプリケーション内でカスタムのコリジョン ジオメトリを作成して、これをレンダーメッシュでエクスポートするのが最善の処理となる場合もあります。これは一般的に、オブジェクトが衝突しなくてもよい開口部、または凹んだ領域などを持つメッシュにあてはまります。

例えば、以下があります。

  • ドアウェイ (入口) メッシュ

  • 切り窓がある壁

  • 変わった形状をしたメッシュ

コリジョン メッシュは名前に基づいてインポータによって特定されます。コリジョンの命名記法は、以下に従ってください。

メッシュのプレフィックスと名前

説明

UBX_[RenderMeshName]_##

ボックス は通常の四角形の 3D オブジェクトを使って作成しなければなりません。直角プリズム以外の形状を作成するために、頂点を移動したり、変形することはできません。さもなければ機能しません。

UCP_[RenderMeshName]_##

カプセル は半球で覆われた円筒状のオブジェクトでなければなりません。コリジョンのために実際のカプセルへ変換されるため、多数のセグメント (8 が理想的) は必要はありません。ボックス同様に、個々の頂点を移動することはできません。

USP_[RenderMeshName]_##

球体 は、コリジョンのために実際の球体へ変換されるため、多数のセグメント (8 が理想的) は必要はありません。ボックス同様に、個々の頂点を移動することはできません。

UCX_[RenderMeshName]_##

凸型 オブジェクトは、完全に閉鎖されたすべての凸型オブジェクトです。例えば、ボックスも 凸型オブジェクトになります。次の図では、凸型オブジェクトと非凸型オブジェクトを示しています。

Image comparing correct and incorrect ways to create convex objects

注意・考慮事項

  • RenderMeshName は、 3D アプリケーション内でコリジョン メッシュが関連付けられているレンダリング メッシュと同名でなくてはいけません。そのため、使用している 3D アプリケーションに Tree_01 という名前のレンダリング メッシュがある場合、コリジョン メッシュをそのレンダリング メッシュと共にシーン内に置いて、 UCX_Tree_01 と名前を付けます。そして、同じ FBX ファイルへレンダリング メッシュと一緒にエクスポートします。メッシュ用に 1 つ以上のコリジョン オブジェクトが必要な場合、追加の識別子、例えば UCX_Tree_01_00UCX_Tree_01_01UCX_Tree_01_02 などを使用して名前を拡張することができます。こうすることにより、メッシュに対応するコリジョンとして関連付けがされます。

  • 現在、球体は剛体コリジョンと Unreal のゼロ エクステント トレース (例えば武器) のみに使用し、非ゼロ エクステント トレースには使用しません (例えばプレイヤーの移動)。また スタティックメッシュ が不均等にスケーリングされると、球体とボックスは機能しません。通常は UCX プリミティブを作成します。

  • コリジョン オブジェクトを一度設定したら、レンダリングおよびコリジョン メッシュ両方を同じ「.FBX」ファイルへエクスポートすることができます。アンリアル エディタへ「.FBX」ファイルをインポートすると、ファイルはコリジョン メッシュを探して、これをレンダリング メッシュから削除して、コリジョン モデルへ変化させます。

  • 非凸型メッシュを凸型プリミティブへ分解するのは複雑な操作であるため、予期しない結果となる場合があります。その他のアプローチ方法として、ご自身で Max か Maya を使用してコリジョン モデルを 凸 型の小片に分解することもできます。

  • 複数の凸包によって定義されたコリジョンを持つオブジェクトの場合、凸包が互いに交差しない時に最高の結果が得られます。例えば、ロリポップ形状のコリジョンを、 1 つはキャンディ、もう片方はキャンディの棒の 2 つの凸包で定義した場合、この 2 つの間に以下の図のようなギャップが残るはずです。

CandyCollision.png

  1. UCX_Candy

  2. コリジョン サーフェス間の小さなギャップ

  3. UCX_Stick

ソケット

ソケットは一般的にゲーム内であるオブジェクトをスケルタルまたはスタティック メッシュに関わらず別のオブジェクトにアタッチするために使用します。Unreal Engine 4 には、スタティックメッシュ エディタ内で ソケットを作成するためのツールがあります。ソケットをご自身の 3D モデリング アプリケーション内でセットアップし、それをレンダリング メッシュと合わせてエクスポートする必要が生じる場合があります。 こうしたソケットはその後、スケルタルメッシュ上のボーンまたはスタティックメッシュのサイズに相対的に平行移動、回転、スケーリングすることができます。

ご利用のモデリング アプリケーションでソケットを使用するには、SOCKET_ のプレフィックスを持つ Dummy または Helper のオブジェクトを使用する必要があります。

メッシュのプレフィックスと名前

説明

SOCKET_[RenderMeshName]_##

これはモデリング アプリケーションで Dummy または Helper のオブジェクトで使用して、ソケットをメッシュに割り当てます。

注意・考慮事項

  • RenderMeshName は、 3D アプリケーション内でソケット オブジェクトが関連付けられているレンダリング メッシュと同名でなくてはいけません。例えば、使用している 3D アプリケーションに `Object_01`という名前のレンダリング メッシュがある場合、ソケット オブジェクトをそのメッシュと共にシーン内に置いて、 「SOCKET_Object_01」 と名前を付けます。 そして、同じ FBX ファイルへレンダリング メッシュと一緒にエクスポートします。メッシュ用に 1 つ以上のソケット オブジェクトが必要な場合、以下のように さらに識別子を付けて、例えば SOCKET_Object_01_00, SOCKET_Object_01_01, SOCKET_Object_01_02, などを使用して名前を拡張することができます。こうすることにより、そのメッシュのソケットとしてすべて関連付けされます。

  • メッシュに対してソケットを作成する場合、Unreal Engine 4 にインポート可能なソケットを備えた単一メッシュの FBX セットアップだけを持つことができます。例えば、 別個のアセットにしたいレンダリング メッシュが 2 つあれば、別個の FBX ファイルとしてインポートする必要があります。つまり、複数メッシュをインポートし、 個々のメッシュにソケットを割り当てることはできません。しかも、レンダリング メッシュが 2 セットあれば、正しくインポートされません。例えば、 SOCKET_Object_01_00 を持つ Object_01 と、SOCKET_Box_01_00 を持つ別のレンダリング メッシュである Box_01 がある場合、こうしたメッシュを両方ともソケットと共にエクスポートすることはできません。別個の FBX フアィルとして エクスポートする必要があります。

頂点カラー

スタティック メッシュ用の頂点カラーは FBX パイプラインを使用して転送することができます。特別な設定は必要ありません。

Mesh showing vertex colors

メッシュのエクスポート

スタティックメッシュは、個別にエクスポート、もしくは複数のメッシュを単一の FBX ファイルにエクスポートすることができます。インポート パイプラインは、インポート時に Combine Meshes 設定を有効にしてメッシュの結合を指定しない限り、送り先パッケージ内に複数の スタティック メッシュ を複数のアセットへ分割してしまいます。選択したサードパーティの DCC ツールの FBX ファイルをエクスポートするためのドキュメントを参照し、メッシュの作成について前述したガイドラインに必ず従ってください。

UE4 の FBX インポート パイプラインでは、FBX 2018 を使用します。エクスポート中に他のバージョンを使用すると、互換性がなくなる場合があります。

メッシュのインポート

  1. コンテンツ ブラウザ[Add/Import] ボタンをクリックし、[Import] を選択します。開いているファイル ブラウザからインポートしたい FBX ファイルを選択します。

    ドロップダウン リストから FBX file extension を選択して、不要なファイルをフィルタリングすることができます。

    File window showing FBX files for import

    インポートしたアセットのパスは、コンテンツ ブラウザ の現行位置によって決まります。インポートを実行する前に、必ず適切なフォルダへ移動してください。インポートが完了したら、インポートしたアセットを新規フォルダへドラッグすることもできます。

  2. [Import] ダイアログから適切な設定値を選択します。大抵の場合、デフォルト設定をそのまま使用します。全設定値の詳細については、「FBX インポート ダイアログ」を参照してください。

    Static mesh import options

  3. [Import] ボタンをクリックしてメッシュをインポートします。プロセスが成功した場合、最終結果のメッシュ、マテリアル、テクスチャが コンテンツブラウザ に表示されます。

    An imported material, mesh, and texture in the content browser

    テクスチャとマテリアルはスタティックメッシュと一緒にインポートすることができますが、 ColorNormal は自動的に接続されます (サポートされたマテリアルの使用 を仮定)。 Specular マップはインポートされますが、接続はされません。例えば Maya マテリアルの [Diffuse] スロットの Ambient Occlusion マップなどその他のマップは、インポートすらされません。自身が作業しているマテリアルをチェックして、非接続になっているマップを接続したり、インポートされなかったマップをチェックしてください。新しいマテリアルを ダブルクリック して、これらの適切な入力値に対して利用可能なテクスチャを接続するだけでできます。

    スタティックメッシュ エディタ でインポートされたメッシュを表示させてコリジョンの表示を有効にすると、プロセスが期待通りに機能したか判断することができます。

あるいは、 Windows から FBX ファイルを単にクリックして コンテンツ ブラウザ へドラッグすると、インポートダイアログが呼び出されます。

スタティックメッシュ LOD

スタティックメッシュ は、カメラから遠ざかるにつれてメッシュの影響を制限するために、ゲーム内の LOD (Level of Detail) を利用することができます。通常は、各 LOD ではトライアングル数が減少するとともに、より単純な単一マテリアル (あるいは複数マテリアル) が適用されることを意味します。

four levels of detail comparison

FBX パイプラインを使用して、DCC ツールで作成された LOD メッシュをインポートしたり、インポートされたスタティックメッシュの LOD を UE 内に直接作成することができます。

LOD 設定

一般に LOD は、完全な詳細度をもつベースメッシュから最も低い詳細度をもつ LOD メッシュまで、さまざまな複雑度のモデルを作成して処理します。これらはすべて同一の回転軸で、全てアラインされて同一空間を使用しなければなりません。各 LOD メッシュには、異なるマテリアルの量など、完全に異なるマテリアルを割り当てることができます。つまり、ベースメッシュは間近に好みの詳細量を与えるために複数のマテリアルを使用することができますが、低い詳細度のメッシュではあまり目立たないため単一のマテリアルを使用します。

各 DCC ツールには、スタティックメッシュの LOD を作成するための独自のワークフローがあります。それらを作成して FBX エクスポートに含める方法の詳細については、選択したツールのドキュメントを参照してください。

LOD のインポート

スタティックメッシュの LOD は、 コンテンツ ブラウザ からベース メッシュとともにインポートすることができます。または、スタティック メッシュ エディタを通じて個別にインポートします。

  1. コンテンツ ブラウザ[Add/Import] ボタンをクリックし、[Import] を選択します。開いているファイル ブラウザからインポートしたい FBX ファイルを選択します。

    ドロップダウン リストから FBX file extension を選択して、不要なファイルをフィルタリングすることができます。

    インポートしたアセットのパスは、コンテンツ ブラウザ の現行位置によって決まります。インポートを実行する前に、必ず適切なフォルダへ移動してください。インポートが完了したら、インポートしたアセットを新規フォルダへドラッグすることもできます。

  2. [Import] ダイアログから適切な設定値を選択します。デフォルト設定で十分ですが、必ず Import LODs を有効にしてください。注意: インポートされるメッシュの名前はデフォルトの命名規則 naming rules に従います。全設定値の詳細については、「FBX インポート ダイアログ」を参照してください。

    ImportOptions_LOD.png

  3. メッシュと LOD をインポートするには、[Import] ボタンをクリックします。プロセスが成功した場合、最終結果のメッシュ、マテリアル、テクスチャが コンテンツブラウザ に表示されます。

    An imported material, mesh, and texture in the content browser

    テクスチャとマテリアルはスタティックメッシュと一緒にインポートすることができますが、 ColorNormal は自動的に接続されます (サポートされたマテリアルの使用 を仮定)。 Specular マップはインポートされますが、接続はされません。例えば Maya マテリアルの [Diffuse] スロットの Ambient Occlusion マップなどその他のマップは、インポートすらされません。自身が作業しているマテリアルをチェックして、非接続になっているマップを接続したり、インポートされなかったマップをチェックしてください。新しいマテリアルを ダブルクリック して、これらの適切な入力値に対して利用可能なテクスチャを接続するだけでできます。

インポートしたメッシュを スタティック メッシュ エディタ で表示して、[Details] パネルの LOD Picker を使って LOD を循環表示することができます。

Static mesh editor level of detail picker

インポートしたスタティックメッシュの LOD を作成する

スタティックメッシュをインポートしたら、LOD を手動で作成する か UE の LOD 自動生成ツールを使用する ことができます。前者は時間がかかりますが良い結果を得ることができます。後者は複数のシンプルなメッシュに対して LOD を作成する必要がある場合に速く処理することができます。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる