On this page | |
Since | 17.0 |
概要 ¶
UV Layoutは、UV島をテクスチャタイル内に密接に詰め込みます。 UV Layoutは、島の数、島のサイズ、ターゲット、島を表現したアトリビュートに制限されることなく、2Dプロファイルセット(複数の島)を他の2Dプロファイルセット(ターゲット)内に密接に詰め込むことができます。 UV Layoutは、島を密接に詰め込む先のターゲットを選択することができるので、島を特定のターゲットに割り当てたり、未割り当てのままにすることができます。
このノードは、色々なカテゴリの ターゲット に島を詰め込むことができます: 単一UVユニット(0,0
から1,1
)、任意のサイズで任意に配置された1つ以上の矩形、またはUDIMタイル。
UDIMタイル ¶
UDIMは、UVテクスチャ空間グリッド内の単位正方形にラベルを付けるのに便利です。 これは、特定の正方形を参照したり、ファイル名にUDIM番号を使用することでテクスチャファイルを特定のグリッド正方形に一致させるのが簡単です。
典型的なUDIMグリッドは単位正方形のセルで、10セル分の幅、左下のセルの番号が1001です(必要に応じて、このノードのパラメータを使って、これらの慣例すべてをカスタマイズすることができます)。
インタラクティブ状態 ¶
このノードが選択されている時にビューア内でEnterを押すと、このノードのハンドル状態になります。 このノードの状態では、ビューア内でインタラクティブにオーバーライドを島に対して適用することができます。
ビューア内で島を選択してから、上部にあるOverrideメニューを使って、島のターゲット、スケール、直交オフセットをオーバーライドするかどうか選択することができます。そのメニューの隣にあるテキストボックス/スライダを使ってオーバーライド値を設定してから、 Apply をクリックします。
一般的な詰め込み ¶
技術的には、 どの vector3タイプのPoint/Vertexアトリビュートを使っても、島やターゲットを表現することができ、その詰め込み先の投影面(XY, YZ, ZX)を選択することができます(この投影面は、テクスチャアトリビュートなら常に“XY”を、UVW空間ならXとYがそれぞれUとVに呼応します)。
島を定義するのと同じ方法でターゲットを定義することができますが、ターゲットは2番目の入力のジオメトリに基づいています。 つまり、ターゲットは座標アトリビュートの2D投影内でのジオメトリピースのプロファイルになります。このピースは接続性から定義され、必要に応じて分割用エッジまたは島アトリビュートで制御します。
パラメータ ¶
Islands To Pack ¶
UV Attribute
テクスチャ座標に使用するアトリビュートの名前。
通常では、この名前はuv
です。同じジオメトリ上に複数のUVを重ねている場合、独自のアトリビュート名を入力することができます。
(このノードを使って3D内で一般的なレイアウトを行なう場合は、P
を使用することで、モデルのポイント位置を詰め込み平面上に投影することができます。)
Group
これが空っぽの場合、このノードがすべての入力ジオメトリに作用します。プリミティブグループの名前を入力したり、または、グループ構文を使ってプリミティブを指定することで、プリミティブのサブセットのみに作用させることができます。
Overrides ¶
従来のようなUV島の詰め込みをしないのであれば、通常ではこれらの値を変更する必要はありません。 しかし、詰め込む箇所をカスタマイズしたり、既存データを修正したり、一般的な詰め込みをしたいのであれば、これらの値が役立ちます。
ターゲット、スケール、オフセットのオーバーライドは、このノードのビューアステート内でインタラクティブに島へ適用することができます。
Connectivity ¶
デフォルトでは、このノードはポリゴンエッジ上のUVアトリビュート値の接続性から島を定義します。以下のコントロールを使用すれば、これをオーバーライドすることができます。
Separator Edges
このフィールドが空っぽでない場合、このノードは、UVの代わりにこれらのエッジを使ってモデルを島にカットします。
Connectivity Tolerance パラメータ(Packing > Advanced)を上げることで、座標値のわずかなズレのせいでポリゴンが別の島に分かれるのを回避することができます。
Island Attribute
島の結合に使用する整数Primitiveアトリビュートの名前。 このアトリビュートが同じ値のポリゴンを含んだ島が結合されます。“サブ島”がお互いに同じ相対位置内で詰め込まれます。
マイナスの値は無視されます。同じ島内で異なるポリゴンが“結合された”島番号の干渉は、一番小さいインデックス番号のポリゴンの島番号で解決されます。
Target Assignment ¶
詰め込むターゲットが複数存在する場合、UV Layoutは、各島の詰め込み領域が最適なターゲットを選定します。 以下のパラメータは、指定したターゲット内に島を強制的に詰め込むことができます。
Target Attribute
このノードがポリゴンの島を詰め込むターゲット空間(矩形インデックスまたはUDIM番号)を指定した整数Primitiveアトリビュートの名前。
マイナスの値は無視されます。同じ島内のポリゴンのアトリビュート値が異なれば、このノードは、一番小さいインデックス番号のポリゴンの値を使用します。
Overrides
polygon:target
のマッピングをスペースで区切った文字列。
polygonは、詰め込みたい島のポリゴンのどれかのプリミティブ番号です。
targetには、このノードが島を詰め込むターゲット空間(矩形インデックスまたはUDIM番号)を指定します。
例えば、UDIMへ詰め込む場合、35:1009 15:1002
のオーバーライド文字列は、“ポリゴン35を含んだ島をUDIMタイル1009に詰め込み、ポリゴン15を含んだ島をUDIMタイル1002に詰め込む”ことを意味します。
文字列内の後のマッピングが前のマッピングをオーバーライドします。そのため、上記の例では、もしポリゴン35と15がどちらも同じ島に属していた場合、その島はUDIMタイル1003に詰め込まれます。
Variable Scaling ¶
以下のパラメータは、個々の島のスケールをオーバーライドすることができます。
Island Scale Attribute
ポリゴンの島に対するスケールを指定した浮動小数点Primitiveアトリビュート。
マイナスの値は無視されます。同じ島内のポリゴンのアトリビュート値が異なれば、このノードは、一番小さいインデックス番号のポリゴンの値を使用します。
Overrides
polygon:scale
のマッピングをスペースで区切った文字列。
polygonは、スケールしたい島のポリゴンのどれかのプリミティブ番号です。
scaleは、島のサイズにかけるスケールの浮動小数点値。
例えば、35:1.5 15:0.5
は“ポリゴン35を含んだ島を1.5倍大きくし、ポリゴン15を含んだ島を半分のサイズにする”を意味します。
文字列内の後のマッピングが前のマッピングをオーバーライドします。
Projection Offset ¶
UV Layoutはジオメトリの2Dプロファイルを2Dターゲットドメインに詰め込むので、このノードは通常では入力3D座標の3番目(高さ方向)のコンポーネントをそのままにします。
2番目の入力のジオメトリからターゲットを取得する“一般的な詰め込み”ワークフローでは、このノードは、島を詰め込むターゲット内の一番小さい高さだけ3番目のコンポーネントを大きくします。
例えば、高さがZコンポーネントで決まるような階段の平坦な部分がターゲットである場合、各詰め込みジオメトリのZ座標は、その詰め込み先の階段の高さまで上がります。
これらのコントロールを使用することで、各島のオフセット値を加算または減算して、詰め込み平面の高さ方向に上下させることができます。
Island Offset Attribute
ポリゴンの島を上下させるオフセット量を指定した浮動小数点Primitiveアトリビュート。
同じ島内のポリゴンのアトリビュート値が異なれば、このノードは、一番小さいインデックス番号のポリゴンの値を使用します。
Overrides
polygon:offset
のマッピングをスペースで区切った文字列。
polygonは、オフセットしたい島のポリゴンのどれかのプリミティブ番号です。
offsetは、島の“高さ”をオフセットする浮動小数点値。
Scale Island to Match Their Surface Areas
UVアトリビュートを使って測定した相対面積がP
を使って測定した3D表面積に合うように島を再スケールします。
つまり、大きな3Dサーフェスほど大きなUV島になり、小さな3Dサーフェスほど小さなUV島になることを意味します。
(上記のオーバーライドは、この再スケールの後に適用されます。)
Axis Alignment
詰め込みの前に島を整列させる方法。
None
島を事前回転なしで使用します。
By Island Symmetry (default)
“一番長い辺”が水平になるように形状に基づいて島を事前回転します。 このオプションは、島の対称性を検出して、その対称性の評価を試みます。
By Island Position in 3D
最終的に水平ラインとサーフェス上の頂点UVラインが3D座標系に最も上手く整列するように島を事前回転させます。
座標平面のどれかに平行な平坦な島に関しては、これは、UV座標が島と平行な座標平面に合致するように島を回転させるはずです。 曲面の島に関しては、このオプションは、島の各ポリゴンに適した整列を考慮して、その島のポリゴンすべてにおいて総合的に最適な向きを取得します。
Packing ¶
Scale
このノードが島を詰め込む際のスケールの方法を制御します。
Largest packable
指定したターゲットに島をフィットさせると同時に、できるだけ島を大きくします。
Fixed
すべての島に適用する固定スケール係数を指定します。
“Fixed”を選択した場合、詰め込みに失敗した島は、詰め込みターゲットの境界ボックス外に整列されます。 Output Groups and Attributes(以下参照)では、このような“詰め込まれていない”島のポリゴンで構成されたPrimitiveグループを取得することができます。
Pack Into が“UDIM Tiles”の時、ScaleにFixedを使用すると、このノードは、スケールさせた島がフィットできるほどの数のタイルを埋めます。
Island Rotation Step
このノードは、詰め込みがうまく行くように島をあれこれ回転させてみることができます(一部の島は、あと少しだけ回転すればもっと小さなスペースに当てはめることができる場合が出てきます)。 このパラメータを設定すると、軸整列よりも向きを優先することになり、試す回転を増やすほど、より効率的な詰め込み方が見つかりますが、回転の頻度が多いほど遅くなります。
No Rotation
Axis Alignment パラメータで指定した回転を使って島を詰め込みます。
Rotation Step
全円をこの数で割った角度で島の回転を試みます。例えば、180は島を2通りの回転(半円回転と上下反転)を試します。 90は島を4通りの回転(半円回転、左回転、右回転、上下反転)など。角度を半分にするほど、試される回転の数は2倍になります。
Custom
独自に360度の分割数を入力することができます。
円を6分割すると、4分割(90度ステップ)よりも劣化した詰め込み結果になってしまうことに注意してください。 その理由は、試行する回転方法の内2つの回転方法は不作法なので、4分割と比べると6分割による密接な詰め込みは期待できないです。
Avoid Packing Over Non-Group Island
これは、 Group フィールドによって、このノードを入力内のサブセットのポリゴンにのみ適用した時に実行する処理内容を制御します。 これを有効にすると、このノードは、 Group フィールドで選択されたポリゴンを、その入力の他のポリゴンを回避して詰め込みを試みます。 これを無効(デフォルト)にすると、このノードは、他のポリゴンを無視するので、UV空間内で重なってしまう場合があります。
Pack Island in Cavities of Other Islands
これを有効(デフォルト)にすると、このノードは、他の島の“穴”や凹領域の中に島を詰め込もうとします。 これを無効にすると詰め込みが速くなりますが、詰め込みの効率性が悪くなります。
Island Padding
島の分離に使用する余裕代。
この数値は、 Search Resolution (Advanced)の“ピクセル”数なので、その数値を変更すると、UV空間の余裕代の距離が変わります。
Apply Padding Between Island Target Boundary
これを有効にすると、島とターゲット空間のエッジの間に余裕代が追加されます。 これを無効(デフォルト)にすると、島がターゲット空間のエッジまできっちりと詰め込まれます。
Spread Island To All Available Space
ターゲット領域を覆うように島が広がるように、自動的に余裕代を大きくしようとします。
(通常では、詰め込みアルゴリズムは、次々と島を詰め込めるように可能な限りスペースを残すために、処理の度に島を狭い隅に集めていきます。これが有効な時、一度詰め込みが完了したら、その余裕代を徐々に広げて、同じ詰め込み範囲を許容しつつできるだけ余裕代を最大限にします。通常では、この効果によって、利用可能なスペース内で島を広げることができます。これは、詰め込み処理によって利用可能になったスペースの部分が一部の場合において自由な動きを制限してしまうので、均一な広がりは保証されていないことに注意してください。)
Advanced ¶
Iterations
各スケールの試行回数。反復する度に、異なる順番で異なるレイアウトが決めれるように、島の詰め込みを試みる順番がランダムになります。 この反復回数を増やすことで、もっと効率的な詰め込みが行える可能性が高くなりますが、詰め込み処理が遅くなってしまいます。
反復回数を増やすことで、その処理時間は“サブリニア”です。要するに、100回実行した場合、1回の処理時間の100倍まではいかない(だいたいは、そんなにいかないです)ことを意味します。 しかし、反復回数を増やしたところで、それに見合うだけの改善は見込まれません。 島の形状によっては、特に詰め込みが難しい細長い島は、詰め込みを効率化するのには厳しい制約があります。
Search Resolution
詰め込みアルゴリズムは、ピクセルグリッド上に内部的な島の“画像”を構築することで動作しています。 このアルゴリズムは、島を使って複雑なテトリスのゲームのように再生して島をターゲット領域に詰め込みます。 このパラメータは、(すべてのターゲットに対して)詰め込む画像の長い辺の最大ピクセル数を設定します。
Note
UV Layoutを使って、特定のテクスチャ座標に対してUV島を詰め込みたいのであれば、テクスチャ画像よりも大きいピクセル解像度を設定しないでください。 そうでない場合、内部“画像”をテクスチャ画像にスケールダウンした時、テクスチャ画像のピクセルを共有した島を取得することができます。
Connectivity Tolerance
エッジ上で同じ値と見なす UV Attribute 値の許容値を制御します(これによって、2辺のエッジでポリゴンを同じ島に結合します)。 エッジ端点のどちらかでUまたはVの値がこの許容値を超えた場合、このノードは、そのエッジをシーム(継ぎ目)として扱います。
Scale Search Tolerance
このノードが適したスケールの検索を停止するタイミングを制御します。 指定したスケールでは島の詰め込みに成功するものの、この許容値だけスケールを大きくすると詰め込みに失敗するようであれば、このアルゴリズムは、詰め込み可能な大きなスケールの検索を停止します。
Random Seed
Iterations が1より大きい時、このノードは、島の詰め込みを試みる順番をランダムにします。 このシード値を変更すると、反復に対して異なる乱数を生成します。 これは、例えば、2台の異なるコンピュータを使って、それぞれ大きな反復回数でより密接な詰め込みを検索させたい場合、その2台のコンピュータに対して異なるランダムシードを与えれば、同じ検索を行なわないようにすることができます。
Targets ¶
Pack Into
詰め込み方法を制御します。
Rectangles
UV平面内で詰め込み先となる1個以上の正方形または矩形領域を指定することができます。
UDIM Tiles
UDIM番号を使って、UV平面上のタイルを指定することができます。
Islands From Second Input
このノードの2番目の入力に接続されたジオメトリ内の“島”で定義された領域に詰め込みます。
Default Target
これを無効のままにすると、島が最も上手く当てはまる領域に基づいたターゲットに島を分布させます。 これを有効にすると、オーバーライドをしない限り、島はこのターゲットに詰め込まれます。
これは、特にUDIMによる詰め込みをする時に役立ちます。
Target Rectangles ¶
このセクションは、 Pack Into が“Rectangles”に設定されている時に表示されます。
Target Rectangles
Pack Into が“Rectangles”に設定されている時、このマルチパラメータによって、矩形を追加/削除することができます。 UVグリッド上のターゲット領域の位置とサイズを指定することができます。 デフォルトは、0,0から1,1の範囲の単一UV単位正方形です。
Tile Grid ¶
このセクションは、 Pack Into が“UDIM”に設定されている時に表示されます。
既存データを基準に詰め込みを行ないたい場合は、 Starting UDIM を使用します。
とりわけ理由がない限りは、Tile SizeもColumnsも変更しないでください。 元々は、これらのパラメータは柔軟性がありましたが(Columnsの数値は、名前を取得するのに便利なU DIMensionでした)、これらのパラメータは標準化されており、ほとんどのソフトウェアパッケージでハードコーディングされていて、Columnsが10の1×1タイルが使用されています。
Tile size
UV空間のUDIMタイルのサイズ。とりわけ理由(例えば、古いテクスチャと互換性を持たせたい)がない限りは、この値を変更しないでください。
Columns
タイルグリッドを配置する列の数。これは10に標準化されていて、他のソフトウェアパッケージではハードコーディングされていることが多いです。 どうしてもという理由がない限りは、この値を変更しないでください。
Starting UDIM
詰め込みを開始する最初のタイル。タイル番号の低い既存データを基準にこの詰め込みを使用することができます。
Second Input ¶
これらのパラメータは、 Pack Into が“Islands From Second Input”に設定されている時に表示されます。
UV Attribute
島を指定するためのUV Attributeと同様です。これは、2番目の入力のPoint/Vertexアトリビュートです。
Group
これが空っぽの場合、このノードは、2番目の入力のジオメトリすべてに対して動作します。 プリミティブグループの名前を入力するか、グループ構文を使ってプリミティブを指定することで、サブプリミティブのみに作用させることができます。
Connectivity Overrides ¶
Separator Edges
このフィールドが空っぽでない場合、このノードは、UVの代わりにこれらのエッジを使ってモデルを島にカットします。
Connectivity Tolerance パラメータ(Packing > Advanced)を上げることで、座標値のわずかなズレのせいでポリゴンが別の島に分かれるのを回避することができます。
Island Attribute
島の結合に使用する整数Primitiveアトリビュートの名前。 このアトリビュートが同じ値のポリゴンを含んだ島が結合されます。“サブ島”がお互いに同じ相対位置内で詰め込まれます。
マイナスの値は無視されます。同じ島内で異なるポリゴンが“結合された”島番号の干渉は、一番小さいインデックス番号のポリゴンの島番号で解決されます。
Island Stacking ¶
このセクションにあるコントロールは、同じ見た目の島を検出して、それらの島をお互いに積み重ねることができます。 これによって、テクスチャ空間を節約することができます。
Note
Island Stackingは、繋がった島に対してのみ動作します。 Island Attribute で作成された島を積み重ねることはできません。
Stack Identical Islands
同一の島を検出して、お互いに積み重ねます。
Match Mirrored Islands
Stack Identical Islands が有効な時、鏡面対称だと同一になる島も検出され、それを反転させてお互いに積み重ねます。
Allow Stacking on Non-Group Islands
Stack Identical Islands が有効な時、 Group フィールドで選択されていない島も検索して、選択した島と合致すれば、非選択の島の上に選択した島を積み重ねます。
これは、とりあえず既に位置を決めておいた島の上に類似形状の島を配置してみたい場合に役立ちます。
Shape Tolerance
Stack Identical Islands が有効な時、積み重ねる形状の類似許容値を制御します。 目的の島が積み重ね始めるまで、この数値を調整することができます。
Output Groups and Attributes ¶
Nonpacked Polygons
Fixed スケールが大きすぎたために詰め込みに失敗した島のポリゴンを格納したグループを出力します。
Island Number
各ポリゴンが属する島の番号を含んだPrimitiveアトリビュートをそのポリゴンに追加します。
Assigned Target
各ポリゴンが詰め込まれたターゲットの番号を含んだPrimitiveアトリビュートをそのポリゴンに追加します。
See also |