髪のレンダリングとシミュレーションの機能は、ストランド ベースの髪のインポート、レンダリング、シミュレーションの最低限実行可能な実装を提供することを目的としています。このアップデートでは髪のグルーミングのソリューションは提供されません。髪のシェイピングやグルーミングについては、XGen ツールや Shave and a Haircut プラグインを使用して、Maya などの外部 DCC ツールで実行する必要があります。Ornatrix、Yeti、Houdini などのツールを使用することもできます。
このドキュメントでは、Hair Groom のインポートを標準化する試みにおける Alembic ファイルの非公式なスキーマの概要を説明し、髪の情報を 髪のレンダリングとシミュレーション 機能で使用するために、Unreal Engine 4 (UE4) に取り込む方法についても説明します。このドキュメントの目的は、Hair Groom の生成に際してこのスキーマに準拠することで、グルームを UE4 で直接インポートできるようにすることです。インポートが完了すると、レンダリングと物理の両方で UE4 でサポートされている属性が、Alembic ファイル内のこれらの属性にマッピングされます。
目標
- Unreal Engine への髪のインポートを可能にする、グルーム特有の非公式な Alembic メタデータ スキーマを定義する。
- UE4 でサポートされている髪の属性を調べて、これらの属性を Alembic にマッピングする。
カーブ トラック
髪の全般的な形状は、標準の Alembic カーブ スキーマから読み取られます。
Alembic::AbcGeom::ICurves
幅
この使用を使ってエクスポートされたグルーム属性によって、グルームのビルド時にインポーターはそれらを取得および使用できるようになります。ただし、幅の属性には特別な挙動があります。たとえば、Maya などの DCC アプリケーションでは、幅値はカーブ上に直接エクスポートされるので、カスタムされた groom_width
属性をエクスポートする必要はありません。インポーターが Maya の幅値を groom_width
属性に変換します。groom_width
属性がグルームに含まれる場合、インポート中は上書きされることは注目に値します。groom_width
属性が指定されていない、または幅値から変換できない場合、Unreal Engine のビルダーが幅値に 1 センチメートルという値を使用するようにフォールバックします。
カーブの幅は、以下を使用して ICurve ごとに保存できます。
(GeometryScope::kConstantScope)
または、以下を使用してカーブごとに保存できます。
(GeometryScope::kUniformScope)
または、以下を使用して cv ごとに保存できます。
(GeometryScope::kVertexScope)
インポーターは kUniformScope
をサポートしますが、テストされていないことに留意してください。
命名規則
プロパティ名はすべて小文字で、スペースまたは特殊文字を含めることはできません。
すべてのプロパティは、次のプレフィックスで始める必要があります。
groom_
例えば、groom_id
、groom_color
、または groom_width
では適切な命名規則がすべて使用されています。
スコープと優先度
このドキュメントで紹介するプロパティにはスコープが割り当てられています。このスコープでは、グルームのどの「レベル」でプロパティを定義できるかを制御します。
利用可能なスコープは次のとおりです。
スコープ | 説明 |
---|---|
Constant | これらのパラメータは、AbcGeom::ICurves オブジェクトを持つすべてのカーブに対して単一の値を含んでいます。 |
Uniform | これらのパラメータは、AbcGeom::ICurves オブジェクト内にカーブごとの値を含んでいます。 |
Vertex | これらのパラメータは、カーブごと、cv ごとの値を含んでいます。 |
全般的なプロパティ
このセクションでは、グルーム全体に適用されるプロパティの概要を説明します。これらのプロパティは、最上位ノードである IXForm または ICurves に追加する必要があります。
名前 | 型 | 省略可能 | 説明 | 値 |
---|---|---|---|---|
groom_version_major |
int16 | いいえ | このファイルが適合する メジャー なバージョンのグルーム スキーマの特定に使用されます。 | 1 |
groom_version_minor |
int16 | いいえ | このファイルが適合する マイナー なバージョンのスキーマの特定に使用されます。 | 5 |
groom_tool |
string | はい | このファイルを生成したツールの名前とバージョン。問題の追跡・特定とデバッグに便利です。 | |
groom_properties |
string | はい | このグルームの生成に使用されるパラメータを説明する文字列。これらはツール特有のオプションであり、デバッグに使用されます。 |
ジオメトリ パラメータ
すべてのジオメトリ パラメータは省略可能ですが、エクスポートされたグルームにない場合は、内部挙動的にフォールバックします。
名前 | 型 | スコープ | 省略可能 | 説明 | 範囲 |
---|---|---|---|---|---|
groom_ guide |
int8/16/32 | Constant/Uniform | はい | ガイドはインポートされたストランドとでじメーション設定から生成されます。 | 0 = ガイドではない、1 = ガイド |
groom_group_id |
int32 | Constant/Uniform | はい | すべてのストランドは一緒にグループ化されます。 | [0, INT_MAX] |
groom_root_uv |
float32/64[2] | Uniform | はい | ルート UV はストランドのルートを球に投影することで計算されます。 この属性は省略可能です。指定しない場合、ルート UV は球状マッピングを使ってエンジン内に自動生成されます。 |
[-FLOAT_MAX, FLOAT_MAX] |
groom_id |
int32 | Uniform | はい | ストランドに ID はありません。これはデバッグで groom_closest_guides 属性 と使用することを意図しています。 |
[0, INT_MAX] |
groom_color |
float32/64[3] | Vertex | はい | 黒にフォールバックします。 | [0, FLOAT_MAX] |
groom_closest_guides |
int32[3] | Uniform | はい | 補間データが Unreal Engine 外で計算されるような特別な使用を意図しています。 | [0, INT_MAX] |
groom_guide_weights |
float32[3] | Uniform | はい | 補間データが Unreal Engine 外で計算されるような特別な使用を意図しています。 | [0, FLOAT_MAX] |