Alembic ファイル インポーター

Alembic ファイルのインポート プロセスを、オプションと合わせて説明します。

Alembic ファイル形式 (ABC)) は、複雑なアニメートされたシーンを非プロシージャルなアプリケーションに依存しないベイクされたジオメトリックな結果に抽出するコンピューター グラフィックスの相互交換フレームワークです。Unreal Engine 4 (UE4) では、Alembic Importer を使って Alembic ファイルをインポートすることができます。これにより、複雑なアニメーションを外部で作成してから UE4 に取り込んで、リアルタイムでレンダリングすることができます。

Alembic ファイルを、他の様々な方法と同様に UE4 に コンテンツをインポートする ことができます。

以下のアンリアル エンジンのライブストリームのアニメーションのトピックで Alembic ファイル インポーターについてご覧いただくこともできます。

Alembic キャッシュをエクスポートする

Autodesk Maya から Alembic キャッシュをエクスポートする方法:

  1. [File Menu] から、[Cache]、そして [Alembic Cache] に進み、ニーズに応じて [Export All to Alembic...] (または Selection) を選択します。

    Maya_01.png

  2. [Export] ウィンドウの [Advanced Options] で、[UV Write][Write Face Sets] のオプションを有効にし、[Export] をクリックします。

    Maya_02.png

    UE4 へのインポート中にマテリアルを作成する予定があれば、[Write Face Sets] を有効にする必要があります。マテリアルは見つかった Face Set Name に基づき作成されるからです。

Alembic ファイルをインポートする

Alembic ファイルを UE4 にインポートするには以下の手順に従います。

  1. コンテンツ ブラウザ[Import] ボタンをクリックし、「.abc」ファイルを指定します。
    AlembicImport_00.png

  2. インポートの方法やオプションを定義できる [Alembic Cache Import Options] ウィンドウが開きます。ファイル名とインポート元の場所がウィンドウ上部に表示されます。ファイル内のアセットに対してインポート プロセスに含めるまたは除外するかを選ぶチェックボックス オプションも表示されます (上部のチェックボックスを使用して、すべてのトラックを含める / 除外することもできます)。

    AlembicImport_01.png

現在、Unreal Engine は 3 辺および 4 辺ポリゴンを含むメッシュのみをサポートしています。ジオメトリに 4 辺より多いポリゴンが含まれる場合、またはジオメトリが NURBS サーフェスまたは SubDiv サーフェスからできている場合、Alembic データのロードに失敗します。

スタティックメッシュとしてインポートする

インポート プロセス中に、コンテンツのインポート方法を定義することができます。デフォルトで、Alembic Import TypeStatic Mesh に設定されます。

ImportType_01.png

Alembic キャッシュをスタティックメッシュとしてインポートする場合、Sampling セクションの Frame Start 値で 1 つまたは複数のスタティックメッシュとして指定された単一のフレームをインポートします。そのフレームから Alembic アニメーションがスタティックメッシュとしてアニメーションなしでインポートされます。以下の設定を使用できます。

スタティックメッシュ オプション

設定

説明

Merge Meshes

インポート時にスタティックメッシュをマージすることができます (オーバーラップする UV セットでは問題が生じることがあります)。

Propagate Matrix Transformations

メッシュをマージする前に、メッシュにマトリクス変換を適用するかどうかを指定します。(「マトリックス変換を継承する」を参照。)

Generate Lightmap UVs

インポート時に ライトマップ UV を作成することができます。

Alembic ファイルをスタティックメッシュとしてインポートする際にデータに複数のメッシュが含まれる場合、[Merge Meshes (メッシュのマージ)] を選んで Unreal Engine 内で単一のスタティックメッシュを作成することができます。このオプションを無効にすると、Alembic ファイル内の各メッシュはマージされずに、代わりに個別のスタティックメッシュとして UE4 にインポートされます。

マトリックス変換を継承する

[Merge Meshes] を有効にする場合には、メッシュをマージする前に [Propagate Matrix Transformations (マトリックス変換を継承)] を有効にするかどうかも考慮する必要があります。これは Alembic ファイル内に含まれる変換データを使って、それをマージ時にメッシュに継承し、変換データを保持するようにします。

Alembic キャッシュとしてエクスポートする作成した以下のサンプルシーンをご覧ください。

MayaObjects.png

[Merge Meshes][Propagate Matrix Transformations] を選択して、ファイルをスタティックメッシュとして UE4 にインポートすると、以下のようになります。

ImportMesh1.png

[Merge Meshes] を選択しても [Propagate Matrix Transformations] のチェックを外すと以下のようになります。

ImportMesh2.png

各メッシュは、0,0,0 起点でマージされます。

サンプリング オプション

Alembic Sampling options

設定

説明

Sampling Type

アニメーションのインポート中に行われるサンプリングのタイプ

  • Per Frame (デフォルト):インポートしたデータに応じてアニメーションをサンプリングします。

  • Per X Frames:フレーム ステップによって決まる任意の間隔でアニメーションをサンプリングします。

  • Per Time Step:タイム ステップによって決まる任意の間隔でアニメーションをサンプリングします。

Frame Start

アニメーションのサンプリングを開始するための開始インデックスです。

Frame End

アニメーションのサンプリングを終了するための終了インデックスです。

Skip Empty Frames at Start of Alembic Sequence

空の (プリロール) フレームをスキップし、実際にデータを含むフレームからインポートを開始します。

法線の計算オプション

Alembic Normal Calculation options

設定

説明

Force One Smoothing Group Per Object

スムージング グループを計算するのではなく、個々のオブジェクトに対して法線のスムージングを強制するかどうかを設定します。

Hard Edge Angle Threshold

2 つの法線間の角度を鋭角とみなすかどうか (0 に近いほどよりスムーズになります) を決めるためにしきい値を使用します。

Recompute Normals

強制的に法線の再計算を行うことができます。

Ignore Degenerate Triangles

タンジェントと法線を計算するときに縮退三角形を無視することができます。

法線の計算方法

以下は Import type に基づき法線がどのように計算されるか、およびインポートするファイル内で法線がどのように使われるかの概要です。

  • 全てのフレームに対して法線を含むファイルをインポートする場合:

    • スタティックメッシュ / ジオメトリ キャッシュの場合 : 既存の法線が使われます。

    • スケルタル メッシュの場合 : 最初のフレームの法線がスムージング グループを判断するために使用されます。これは、平均フレーム、およびすべてのベースとモーフ ターゲットの法線を計算するために使用されます (あらゆる場合にこれを行います)。

  • 最初のフレームのみに法線を含むファイルをインポートする場合:

    • スタティックメッシュの場合 :フレーム 0 を使う場合、既存の法線が使われます。その他の場合、リクエストされたフレームに対してスムージング グループと法線を計算します。

    • ジオメトリ キャッシュの場合 : すべてのフレームに対してスムージング グループとその結果の法線を計算します。

  • 法線を含まないファイルをインポートする場合:

    • エンジンはスムージングしない法線を計算し、計算した法線に従いスムージング グループを生成し、そのスムージング グループで法線を再計算します。

[Recompute Normals] を有効にすると、上で指定したパスが使用されます (法線がない場合)。

スケルタル メッシュ としてインポートする場合に、アニメーションの法線のデルタが大きいと、適切な法線を取得できないことがあります。これは、モーフ ターゲットが面と頂点の法線を変更する方法によって生じる既知の問題です。この問題の回避策として、 (実験的) スキン キャッシュ機能を使うことができます。

この機能を [Project Settings (プロジェクト設定)] で有効にするには、[Support Compute Skincache][Force all skinned meshes to recompute tangents] オプションを使用します。

これで次回エディタ起動時にシェーダーを再コンパイルします。Skeletal Mesh アセットを開くと、各マテリアル / セクションに対して [Recompute Tangent] オプションを有効にすることができます。

スムージンググループの計算方法

インポート中のメッシュでハードエッジが生じたら、[Hard Edge Angle Threshold] とスムージング グループの計算方法を確認した方が良いです。

1.0 Hard Edge Angle

0.0 Hard Edge Angle

スムージング グループを計算するには、まず頂点と面の法線を計算し、それを使って特定の面に対して接続されてすべての面を確認します。法線間の角度を計算することで、エッジがハードかソフトかを判断することができます (Maya のソフトエッジ / ハードエッジ ツールに類似)。以下の左側の画像はソフトエッジ、右側はハードエッジを表しています。左側の画像内の 2 つの法線間の角度は、右側のものに比べて小さくなっているからです。

NormalsExample.jpg

このことから、Dot Product (内積) を使って 0 から 1 の範囲を閾値として生成し、ハードかソフトかを定義します。例えば、1 に近い値は角度が大きくなり、ハードエッジになります。0 に近い値はソフトエッジになります。次にこの情報を使ってソフトエッジを共有する法線グループを生成します。こうした各グループに対してスムーズな面を作成する面全体で法線をスムージングします。

オブジェクト毎に強制的に 1 つのスムージング グループを設定すると、個々のオブジェクトが完全にスムーズになります (すべてソフトエッジ)。

ジオメトリ キャッシュとしてインポート

ジオメトリ キャッシュ としてインポートすると新しいタイプのアニメーション アセットが作成され、頂点が変化するシーケンスの再生が可能になります。

Import04_gc.png

インポートされた Alembic アニメーションは、フレームのフリップブックとして再生され、パフォーマンスはメッシュの複雑度に応じて変わります。

ジオメトリ キャッシュには、スタティックメッシュ のインポート オプションと同じ [Sampling] 設定と [Normal Calculation] のオプションが含まれます。また、マテリアルとモーション ベクタに対するサポートが追加されます。このインポート メソッドには、見つかった Face Set 名に従い マテリアル を作成する機能があります (これは、外部アプリケーションで Face Set を定義して、Alembic キャッシュと共にエクスポートしないと機能しません)。モーション ベクターのインポートは、インポーターの Geometry Cache カテゴリの [Motion Vectors] オプションを変更することで有効になります。

Enabling Motion Vectors

Geometry Cache セクションの下部の小さな下向き矢印をクリックするとこれらのオプションが表示されます。

設定

説明

No Motion Vectors

ジオメトリ キャッシュにモーション ベクターはありません。デフォルトで有効になっています。

このオプションを選択するとモーション ブラーがなくなります。

Import Abc Velocities as Motion Vectors

Alembic ファイルからベロシティをインポートし、それをモーション ベクターに変換します。モーション ベクターはディスク上に保存されるため、ファイル サイズは増加します。

ジオメトリ キャッシュにトポロジー (アニメーション中に変わる頂点数) が含まれる場合、3D アプリケーションから頂点ベロシティをエクスポートし、このオプションを使用するようにしてください。

Calculate Motion Vectors During Import

インポート中にモーション ベクターの計算を強制します。モーション ベクターはディスク上に保存されるため、ファイル サイズは増加します。

ジオメトリ キャッシュにトポロジー (アニメーション中に変わる頂点数) が含まれない場合、このオプションを使用します。

モデルの頂点ベロシティを計算するためにモーションベクトルを含め、それらを使用してモーションブラーを計算します。

現時点では、Geometry Cache アセットはテッセレーションの設定に必要な隣接するバッファをサポートしていません。この回避策として、代わりにテッセレーションをサポートするモーフ ターゲットを設定して (このやり方でさらに圧縮されます)、アニメーションを**スケルタル メッシュ**としてインポートすることができます。

スケルタルとしてインポート

このインポート方式では、Alembic ファイルをスケルタル メッシュとしてインポートします。このメッシュには、ベース ポーズがモーフ ターゲットとしてを含まれており、これらをブレンドすることで正確なアニメーション フレームを実現します。スケルタルメッシュとしてインポートするやり方は、頂点カウントが変わらない限り、Alembic アニメーションを再生する最も効率が高い方法です。

Import04_sk.png

インポート中、アニメーション シーケンスは Principal Component Analysis (PCA) スキームを使って圧縮されます。共通ポーズ (ベース) が抽出されて、ウェイト付けされて再生中にオリジナルのアニメーションを合成します。スケルタルメッシュとしてインポートすると、SampleNormal Calculation および Create Materials オプションに加えて、パーセンテージ (使用するベースの定数) も定義して、圧縮度を微調整することができます。

圧縮オプション

設定

説明

Merge Meshes

圧縮の目的で個々のメッシュをマージします。

Bake Matrix Animation

マトリックスのみのアニメーションを頂点アニメーションとしてベイクします。

Base Calculation Type

モーフ ターゲットとして保存する最終的なベースの数をどのように計算するかを指定します。

  • Percentage Based (デフォルト):任意のパーセンテージで使うベースの数を決定します。

  • Fixed Number:インポートするベースの定数を設定します。

Percentage (Max Number) of Total Bases

モーフ ターゲットとして任意 (パーセンテージまたは定数) のベースを生成します。

これは圧縮レベルに関する重要な部分のひとつです。入力するベースの量を少なくすると、アニメーションはより圧縮されますが、アニメーションのディテールは失われます。逆に、入力するベースの数を多くすると、圧縮は少なくなりますが、アニメーションのディテールは保持されます。

Minimum Number Of Vertex Influence Percentage

モーフ ターゲットが有効であるために必要な影響を受ける頂点の最低限の数を設定します。

この設定では、定義された影響度に基づき、ベース ターゲットまたは モーフ ターゲットを決めることができます。たとえば、1000 の頂点を持つモデルがあって、ベースのひとつが 10 個の頂点だけに影響を与えるとします。

基点から大幅な頂点ディスプレースメントを含むアニメーションは、スケルタルメッシュの歪みを引き起こす可能性があります。[No Compression option for Base Calculation Type (基本計算タイプの圧縮オプションなし)] を選択して [Merge Meshes] を有効にするとこれを軽減することができます。

このページは Unreal Engine の前のバージョン用です。現在リリースされている Unreal Engine 5.3 に対して更新は行われていません。
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル