Alembic ファイル インポータ

Alembic ファイルのインポート プロセスとインポート オプションについて説明します。

Windows
MacOS
Linux

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

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

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

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

お好みの DCC パッケージから Alembic キャッシュ ファイルをエクスポートする場合は、以下のオプションがあります。

3D Art Tool を選択してください。

Autodesk Maya

Autodesk 3ds Max

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

    Maya_01.png

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

    Maya_02.png

    見つかった Face Set 名に基づきマテリアルが作成されるため、Unreal Engine 4 へのインポート中にマテリアルを作成する場合は、[Write Face Sets] を有効にする必要があります。

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

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

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

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

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

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

ImportType_01.png

Alembic キャッシュを スタティック メッシュ としてインポートする場合、1 つ以上のスタティック メッシュとして最初のフレームだけをインポートします。Alembic アニメーションの単一のフレームを Static Mesh アセットとしてインポートし、アニメーションは何も適用されません。以下の設定も使用できます。

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

オプション

説明

Merge Meshes

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

Propagate Matrix Transformations

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

Generate Lightmap UVs

ライトマップ UV を生成するかどうかを示すフラグです。

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

Propagate Matrix Transformations

[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 起点でマージされます。

サンプリング オプション

オプション

説明

Sampling Type

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

オプション

説明

Per Frame

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

Per X Frames

Frame Step で決まる任意の間隔でアニメーションをサンプリングします。

Per Time Step

Time Step で決まる任意の間隔でアニメーションをサンプリングします。

Frame Start

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

Frame End

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

Skip Empty Frames at Start of Alembic Sequence

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

法線の計算オプション

オプション

説明

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

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

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

Import04_sk.png

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

圧縮オプション

オプション

説明

Merge Meshes

圧縮目的で個々のメッシュをマージするかどうかを設定します。

Bake Matrix Animation

マトリクスのみのアニメーションを頂点アニメーションとしてベイクするかどうか (またはスキップするか) を設定します。

Base Calculation Type

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

オプション

説明

Percentage Based

任意のパーセンテージで使うベース数を決めます (デフォルト オプション)。

Fixed Number

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

Percentage (Max Number) of Total Bases

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

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

Minimum Number Of Vertex Influence Percentage

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

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

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信