Language:
Page Info
Engine Version:

Alembic ファイル インポーター

これは現在、開発進行中の実験的な機能です。一部の機能は期待どおりに機能しなかったり、将来のリビジョンで変更される可能性があります。

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

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

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

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

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

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

Autodesk Maya

Autodesk 3ds Max

  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 に基づき作成されるからです。

  1. [File Menu] から [Export] をクリックします。

    Max_01.png

  2. 保存場所を指定し、保存のタイプを Alembic (*.ABC) にし、[Save] します。

    Max_02.png

  3. ニーズに応じて Alembic Exporter のオプションを定義します。

    Max_03.png

    オプション

    説明

    File Format

    Ogawa は新しく、HDF5 に比べて一段と高速でファイルサイズが小さくなっています。

    Cache Time Range

    Maya と同じです (Single は 1 フレーム、 Active Segements は、ユーザー設定の Time Slider と Frame Range)。

    Every Nth Frame

    フレームをスキップできます (例、2 は、0-2-4-6-8-10 などを意味する場合があります)。

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

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

  1. コンテンツ ブラウザ[Import] ボタンをクリックし、.abc ファイルをポイントするようにします。

    Import.png

  2. インポートの方法やオプションを定義できる [Alembic Cache Import Options] ウィンドウが開きます。

    Import03.png

    ファイル名とインポート元の場所がウィンドウ上部にハイライトされています。 ファイル内のアセットに対してインポート プロセスに含めるまたは除外するかを選ぶチェックボックス オプションも表示されます。

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

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

Import04_sm.png

Alembic キャッシュを スタティックメッシュ としてインポートする場合、ひとつまたは複数のスタティックメッシュとして最初のフレームだけをインポートします。 Alembic アニメーションの単一のフレームを Static Mesh アセットとしてインポートし、アニメーションは何も適用されません。 このインポート方法を選ぶ場合、どのようにアセットをインポートするかを定義するために使用可能な以下のような設定があります。

サンプリング オプション

オプション

説明

Sampling Type

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

オプション

説明

Per Frame

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

Per X Frames

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

Per Time Step

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

Frame Start

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

Frame End

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

スタティックメッシュ

オプション

説明

Merge Meshes

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

Propagate Matrix Transformations

該当する場合、マージ前にマトリクス変換をメッシュに適用します。

Alembic ファイルをスタティックメッシュとしてインポートする際に、データに複数のメッシュが含まれる場合、[Merge Meshes (メッシュのマージ)] を選んでアンリアル エンジン内で単一のスタティックメッシュにすることができます。 このオプションのチェックを外すと、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 起点でマージされます。

法線の計算オプション

オプション

説明

Force One Smoothing Group Per Object

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

Hard Edge Angle Threshold

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

Recompute Normals

法線を強制的に再計算するかどうかを決めます。

Ignore Degenerate Triangles

タンジェント / 法線を計算する場合に、縮退三角形を無視するかどうかを決めます。

法線の計算方法

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

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

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

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

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

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

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

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

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

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

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

これを有効にするには、以下を ConsoleVariables.ini ファイルに追加します。

r.SkinCache.CompileShaders=1
r.SkinCache.Mode=1
r.SkinCache.RecomputeTangents=1

これで次回エディタ起動時にシェーダーを再コンパイルします。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 に近い値はソフトエッジになります。 次にこの情報を使ってソフトエッジを共有する法線グループを生成します。こうした各グループに対してスムーズな面を作成する面全体で法線をスムージングします。

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

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

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

Import04_gc.png

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

これは必ずしもすべてのケースで最適ではない可能性がある実験的なインポート オプションです。

このタイプのインポート方法のインポート オプションには、スタティックメッシュ のインポート オプションと同じ SamplingNormal Calculation のオプションが含まれます。 ジオメトリのキャッシュとしてインポートすると、見つかった Face Set 名に従い マテリアル を作成する機能があります (これは、外部アプリケーションで Face Set を定義して、Alembic キャッシュと共にエクスポートしないと機能しません)。

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

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

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

Import04_sk.png

インポート中、アニメーション シーケンスは 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 個の頂点だけに影響を与えるとします。 この値を 10 に設定すると、前述のベース / モーフターゲットはインポートされません。