メインコンテンツまでスキップ

UV座標


※ 翻訳には「Google AI Studio」を利用し、「Gemini Experimental 1206」のモデルを使用しています。

このガイドラインは、Khronos Groupの「3DC-Asset-Creation」で公開されている「UV Coordinates」を日本語に翻訳したものです。

原文のライセンス: Creative Commons Attribution 4.0 International License


UV座標

バージョン 1.0.0 最終更新日: 2020年10月20日

アセット作成ガイドラインの概要に戻る

UVレイアウト

UVレイアウト/UVマッピングは、アーティストが3Dモデルを取得し、テクスチャマップを正確に投影できるように、そのさまざまなサーフェスの平坦化された2D表現を作成するプロセスです。この結果の2D表現は、アンラップされたUVマップと見なされ、効率的なテクスチャリングを可能にします。複雑なモデルには複数の個別の要素があり、モデルの各部分が独自のUVレイアウトを使用する可能性があることに注意してください。

この最初のガイドの目的のために、UV座標をリアルタイムの使用例を念頭に置いて具体的に構築する方法を見ていきます。

文字UVは、2D UVマップの2つの軸を参照し、X(水平)軸とY(垂直)軸に相当し、結果はUV空間で0から1の間に正規化されます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.1: シンプルな椅子のモデルのUVレイアウト

高レベルでは、ほとんどのリアルタイムエンジン(Unreal EngineやUnityを含む)では、3Dモデルが正しく表示されるためにUVマッピングを含める必要があり、eコマースエクスペリエンス内で使用するように設計されたモデルの場合、モデル全体のUVを持つことが作成プロセスの重要な部分です。

UVレイアウトは、アーティストがビットマップテクスチャとマテリアルを構築する方法にも密接に関連しています。UVがないとモデルにテクスチャを効果的に割り当てることができないため、完成したジオメトリのクリーンなUVを作成することは非常に重要な最初のステップです。

アーティストがUVの作成にアプローチする方法は、アンラップするオブジェクトによって異なり、モデルを分割して良好なUVを作成する方法はたくさんあります。アーティストは、手動および自動のアンラップメソッドを組み合わせて、必要な結果を得ることができます。明確にするために、モデルをアンラップする正しい方法は1つではありません。以下に示すのは、単純な立方体で同じ結果を得るための3つの異なる方法です。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.2: 立方体の複数のUVレイアウトオプション

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.3: UVキューブ

これらのレイアウトはすべて完全に許容できる結果を生成でき、UVをレイアウトする各方法には独自の利点があるため、必要な結果を得るための合理的なアプローチに従うことがより重要です。

まず、モデルを構築したら、開始する前にアンラップする方法を検討することが重要です。このセクションでは、一般的なスツールモデルを例として使用します。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.4: スツールモデルファイル

上記の例では、モデルは11個の別々のピースで構成されており、各ピースは適用されるマテリアルを示すために色分けされています。その目的は、3つの異なるマテリアルを使用することです。木製の脚(合計4つの要素)、クロスサポート(合計4つの要素)、シートベース(合計1つの要素)、木製のシートベースの周りに金属バンド(合計1つの要素)、上部にファブリック/レザーのシートクッション(合計1つの要素)を使用します。この最初の情報は、いくつかの可能なレイアウトオプション(たとえば、同様のマテリアルのUVアイランドを一緒に保つなど)を提供します。

モデルのアンラップを開始する前に、後で適用されるマテリアルの作成を最も効果的に支援する方法を検討することが重要です。シートクッションの場合、マテリアルはプロシージャルレザーになりますか、それともスキャンされたファブリックスウォッチマテリアルになりますか?モデルの木材は単色に塗装されますか、それともアーティストは木材自体の木目と方向を心配する必要がありますか?何が重要かについての最初の質問に答えることは、後の手順に役立ちます。UVマッピングが必要なリアルタイムのeコマースアプリケーションの場合、アーティストは、モデルのすべてのコンポーネントにUVが含まれ、すべてのUVが1つのテクスチャセットにアトラス化されることを確認する準備をする必要があります。

シームの配置

モデルのアンラップを検討する際に最初に考慮すべきことの1つは、シームがどこにあるべきかです。モデルを複数のコンポーネントに分割し、それらのUVシェルを平坦化してビットマップテクスチャを適用できるようにするため、ブレーク(シーム)がどこに存在するかを把握する必要があります。

一般に、UVシームを配置して、モデルの実際のバージョン内の自然なブレークを模倣するか、あまり重要でない領域に隠すように努力する必要があります。目に見えるシームは、モデルのリアルな外観を損なう可能性があります。枕のクッションにファブリックがどのように適用されるかを検討してください。以下の例の画像では、主要なシーム(緑色で示されている)は、アイテムの製造時に実際のファブリックが一緒にステッチされるエッジを表しています。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.5: この枕のUVシームは、テクスチャの自然でリアルなブレークのために室内装飾品のシームに配置されています

物理的な製造中に特定のファブリックまたはマテリアルが割り当てられている家具やその他のモデルの場合、実際のアイテムでそれらの自然なブレークが発生する場所を特定し、それらをガイドとして使用してモデルをUV用に切り離すことは、出発点として最適です。

家具の例のモデルの場合、シームを配置する場所についてのアプローチを検討してみましょう。それらの1つのUVを解決すると、他の3つで繰り返すことができるため、丸い脚から始めましょう。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.6: 木製の脚のUVの考慮事項

ジオメトリを見ると、アーティストは技術的に垂直のUVシームをどこにでも配置できます(形状は円筒形であるため)。しかし、あまり目立たない場所にUVシームを隠すというベストプラクティスが好まれることを考えると、以下に示すように内側のエッジにUVシームを配置することが理にかなっているように見えます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.7: 最初のUVシームの配置

しかし、フォームの残りの部分、つまり脚の丸い底とクロスバーが挿入される円形のインデントも考慮することが重要です。1つのエッジで脚を分割するだけで、結果のテクスチャマップに大きな歪みが生じます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.8: 1つのUVシームのみを使用したアンラップの歪みが赤と青で表示されます

含まれているフォームを考えると、ジオメトリの他の側面を含めるようにUVシームの配置を修正すると、アーティストは次のようなものになる可能性があります。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.9: 修正されたUVシームの配置

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.10: UVレイアウトからの歪みの欠如

UVシームの配置に関する決定には、脚の丸いベースが含まれるようになり、両方のインセットが独自のUVアイランドとして明示的に切り出されていることに注意してください。これにより、あまり目立たない領域にUVシームを隠すという概念が維持され、将来のテクスチャマッピングの歪みを最小限に抑えることができます(これについては次のセクションで説明します)。明確にするために、これはこのモデルにUVシームを配置する唯一の方法ではありませんが、次の考えを念頭に置いて作成されました。

  1. UVシームを可能な限り隠す
  2. UVレイアウトとテクスチャリングが容易になるように、可能な限り少ない数のUVシェルを作成する

より複雑なモデル(このスツール、椅子、テーブルなど)の場合、モデルをパーツ(脚、フレームなど)ごとに分割し、各コンポーネントの非表示または目立たない領域にシームを配置すると、その影響を最小限に抑えることができます。円筒形のコンポーネントの場合、シームがどこにあるかを決定することは個人的な好みの問題ですが、以下に示すように、要素の背面または内側のエッジ(視聴者が頻繁に見ない場所)にシームを配置することは、一般的に望ましいと考えられています。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.11: 背面の脚のUVを分割すると、UVシームを隠すのに役立ちます

UVの方向と歪みのアーティファクト

UVのレイアウトを開始するときは、一時的なビジュアルUVタイルビットマップをモデルに適用して、適用する予定のテクスチャに関連してUVが適切な方向に向けられていることを確認することをお勧めします。ほとんどの場合、これらのUVビットマップには、テクスチャ、グリッドライン、矢印やテキストなどの視覚的なインジケーターがあり、スケールと方向を識別するのに役立ち、作業で使用できる無料のものがたくさんあります。(「テクスチャUVグリッド」のGoogle画像検索は良い出発点です)

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.12: 10cmのグリッドラインと方向を示す矢印が付いた例の3m x 3m UVビットマップ

Image credit: Microsoft

(C)2020, Microsoft. ライセンス: CC BY 4.0 International 図4.13: Microsoft Babylon.jsチームからのテキストと番号を含む例のUVタイルマップ

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.14: 方向UVビットマップが適用された1mの立方体

これらのマップは、モデルのマテリアルとテクスチャマップを作成する前に修正できるように、UVシェルが歪んでいる、レイアウトが不十分である、またはUVが反転している領域を視覚的に識別するのにも役立ちます。これは、各マップ自体に含まれる正方形のタイルを見て行われ、ジオメトリに適用されると、UVが伸びている、圧縮されている、または歪んでいるかどうかを知るのに役立ちます。モデルに反転したテキストまたは数字が表示される場合は、UVが正しい方向を向くように反転する必要があるUVシェルを識別するのにも役立ちます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.15: UVビットマップテクスチャからクッションに見える反転したUV

UVシームの配置と組み合わせて使用すると、モデルをアンラップするときに、テクスチャリングするのがどれほど簡単または難しいかをすぐに理解し始めることができます。ソファの枕とクッションを考えてみましょう。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.16: クッションの自然なエッジに沿った良好なシームの配置

上記の画像からわかるように、UVの歪みは最小限であり(正方形のグリッドパターンはひどく変形したり、明らかに変形したりしていません)、UVレイアウトがモデル自体に対してどのように向けられているかを視覚的に理解するのは非常に簡単です。このUVビットマップの矢印の流れにより、UVの方向を自明に理解できます。これらの場合、これらの2つのオブジェクトのUVレイアウトは、製造される物理的なバージョンにファブリックが適用される方法と一致します。

さらに、この場合、UVビットマップのスケールは、モデルの物理的なサイズを示しています。この特定のUVビットマップインスタンスの各グリッド正方形が長さ0.1メートルを表すことを考えると、アーティストは、枕の幅が約0.4メートル(約16インチ)、ソファのクッションの幅が0.6メートル(約24インチ)であることも視覚的に確認できます。

対照的に、悪いシームの配置と方向のUVビットマップを見ると、多くの潜在的な問題が明らかになります。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.17: 不適切なシームの配置(パターンの流れと清潔さが損なわれていることに注意してください)

上記の画像を調べると、これらのモデルのUVレイアウトは、シームが存在する必要があるジオメトリの自然なブレークを無視し、UVの方向は非常にランダムであり、流れと方向は一見ランダムな方向に進んでいます。これにより、これらのモデルのテクスチャリングがはるかに困難になります。さらに、適用されるUVビットマップの意図されたスケールを考えると、モデルの見かけのサイズも完全に無視されます。ソファのクッションの幅は1.1メートル(43インチ)になり、枕はさらに大きく、幅は約1.5メートル(59インチ)になります。テクスチャの実際のスケールは調整できますが(これについては、タイル可能なスキャンされたテクスチャの使用の一部として後で説明します)、UVレイアウトプロセスの一部として可能な限りスケールを念頭に置くことをお勧めします。

同様に、UVビットマップを使用すると、作業中にマッピングレイアウト内の歪みやスケーリングの問題を簡単に見つけることができます。明確にするために、軽微な歪みは避けられない場合があります(特に曲面や丸い表面では)。ただし、アーティストは、適用されたマップの目に見える伸びや破れを最小限に抑えるように努力する必要があります。これにより、同じ歪みアーティファクトを表示しない最終的なマテリアルを作成するプロセスを管理することがはるかに簡単になります。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.18: 不適切なUVレイアウトにより、シートクッションに目に見える伸びや破れが発生します

上記からわかるように、シートクッションのUVは明らかにクリーンではなく、伸びや破れが発生します(UVテクスチャマップが上端と下端でラップすると、奇妙で予期しない歪みやにじみが発生します)。上記のUVテクスチャは、グリッドが非常に不均一であり、一部のグリッド領域が正方形よりも少なく(表示されるべき方法)、エッジに向かって長方形のように見えること(UVの作成が不十分であることを示しています)も示しています。そのため、このような不整合を見つけるために目を鍛え、見つかった場合はUVを編集して、可能な限り均一な分布を復元することが重要です。

多くの最新のUVツールでは、UVシェルのレイアウトを開始するときに、UVの歪みを表示できるようになりました。これらは一般的に、伸びと圧縮の領域を色分けすることで行われ、管理がはるかに視覚的で直感的なプロセスになります。

歪みを特定して対処する方法を確認するために、上記のUVを使用してスツールモデルを使用してみましょう。3ds Maxで目視検査すると、すぐに多くの問題が明らかになります。

  1. クッションのUVは、エッジに沿って大きく歪んでいます。
  2. モデルのさまざまな部分間のグリッドパターンのサイズの違いに見られるように、UVの相対的なスケールはまったく異なります(この問題は別のセクションで対処します)
  3. UVの流れと方向は、いくつかの場所で異なります。

歪みの色分けを含むUVエディターでクッションを開くと、プロセスが大幅にスピードアップするため、これをお勧めします。現在、3ds Max、Maya、UV Layout、RizomUVなどのツールは最適な選択肢です。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.19: 3ds Max、Maya、UV LayoutでのUVストレッチ歪みの視覚化

3ds Maxでは、[Unwrap UVW]モディファイアの[Edit UVWs]ドロップダウンウィンドウで、[Area Distortion]表示を選択して、視覚的な歪みツールをアクティブにできます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.20

Mayaでは、UVエディターで[UV Distortion]表示をアクティブにするだけです。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.21

視覚的なインジケーターを使用すると、クッションの端に大きな伸び(明るい赤)があることは明らかです。これは、そのモデルのUVマッピングに使用されている平面マップの元のアプリケーションが原因です。これを修正するには、曲がったメッシュを分割する別の方法を考え出す必要があります。これにより、UVテクスチャがエッジの周りをより予測どおりにラップするように、可能な限り平坦化されます。

この場合、ソリューションは、自然なシームに沿ったポリゴンのエッジフローから導き出されました。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.22: 最小限のUV歪み(薄い青: 圧縮、薄い赤: 伸び)

上記からわかるように、歪みは大幅に減少し、薄い青とピンクの色合いは、ごくわずかな圧縮と伸びを示しています。結果の適用されたUVビットマップは次のようになります。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.23

新しいUVレイアウトを指定すると、UVビットマップタイルははるかに均一で正方形になり、歪みは大幅に減少し、目に見える伸びや破れがなくなります。トレードオフは、テクスチャアーティストが隠す必要がある4つの小さなシームがあることですが、これは比較的簡単なタスクであるはずです。繰り返しになりますが、これらの曲面(またはスツールの脚)でテクスチャの歪みを完全に排除することはほとんど不可能であるため、目に見える伸びや圧縮を最小限に抑えることが目標です。また、明確にするために、これはこの要素をUVする唯一の方法ではなく、メッシュを分割する方法はたくさんあります。モデルは、適用されるマテリアルの種類と一致する方法でUVを作成する必要がある場合があることを考慮することを忘れないでください。例として、別のマッピングを次に示します。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.24: 代替のクッションUVマッピング

UVの歪みに関するもう1つの考慮事項は、レイアウト内のさまざまなUVアイランドの相対的なスケールに関連しています。ほとんどの場合、モデルには、UVテクスチャが適用されたときに、モデルの各部分が同じ量の視覚的なテクスチャスペースを取得するようなUVを含める必要があります(多くの場合、テクセル密度と呼ばれます)。テクセル密度が不十分なUVマップされたスツールモデルを考えてみましょう。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.25: テクセル密度の不適切なUVレイアウト

UVはすべてアンラップされていますが、UV空間内で互いにランダムに組み立てられ、異なる方向とさまざまなスケールで配置されています。脚などのコンポーネントの場合、4つのUVシェルはすべてサイズが異なり、1つは方向が異なるため、それぞれが異なる量のテクスチャスペースを取得し、UVシェルの方向が異なるため、テクスチャリングが必要以上に困難になります。

ほとんどのUVテクノロジーには、テクセル密度が一貫していることを保証するのに役立つUVパッキングシステムがあります。3ds Max内では、Unwrap UVWモディファイアの[Tools]メニューにある[Pack UVs]コマンドは、均一なテクスチャ分布を保証するための出発点です。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.26

Mayaでは、UVエディターの[Arrange and Layout]ロールアウトの[Layout]コマンドを使用すると、同様のUVパッキング結果を生成するのにも役立ちます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.27

これらのツールを使用すると、UVは、UV空間内のすべてのUVシェルに均一なテクセル密度を提供するように整理、スケーリング、パックされます。ほとんどの場合、ツールはシェルを再配置して整列させ、パックする前にUVシェルを目的の回転角度に手動で再配置するのはアーティストの責任です。このようなUVパッキングの取り組みの結果を以下に示します。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.28: 均一なテクセル密度のための良好なUVレイアウト

UVシェルが再配置されて再パックされると、このUVレイアウトは歪みをほとんど示さず、UVビットマップに見られるように均一なテクセル密度を提供します。さらに、脚とサポートのUVシェルを手動で回転させて、すべて同じ方向に向けることで、パッキングツールはそれらを同じ方向に向けているため、後でテクスチャリングに役立ちます。

さまざまなUVシェルのテクセル密度を検討する際に留意すべき点の1つは、モデルの特定の部分に、他の領域ではなく、より多くのテクスチャスペースを提供したい場合があることです。たとえば、上記のスツールでは、クッションの下にある木製のシートパンは、ほとんどまたはすべてが見えなくても、UVレイアウトでかなりの量のテクセル密度を占めます。クッションの底自体についても同じことが言えます。モデルの構成によっては(スツールはクッションなしで見える場所にありますか?)、UVをさらに手動で操作して特定の効果を実現できます。

クッションのUVシェルにより多くのテクスチャスペースを提供するために、優れたUVアーティストは、スペースを最大限に活用するためにUVレイアウトに手動で取り組み続けます。スツールの場合、木製のシートパンとクッションのベースを表す2つのUVシェル(以下では赤で示されています)は、モデルの残りの部分に対して縮小されたため、それらの要素により多くのテクスチャスペースを与えることができました。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.29: テクセル密度に対するより最適化されたUVレイアウト

前の画像とこの画像を比較すると、クッションやその他の目に見える要素のテクスチャスペースの量が増加している一方で、歪みや相対的なテクセル密度の違いは示されていません。このプラクティスは、UVの均等に分散されたテクセル密度に必ずしも準拠していませんが、目立たせたいモデルの一部を強調または優先するために使用できます。

実世界のスケール

モデルを構築するとき、実世界でのスケールを考慮することは明らかに重要です。実世界のスケールでモデルを構築すると、拡張現実体験の場合の実世界での照明、物理、配置サイズなど、多くの重要な方法でモデルがどのように動作するかに影響します。モデルが間違ったスケールで構築されている場合、予期しない結果が得られます。また、マップをサーフェスに適用するときに予想されるものと発生するものとの間のスケーリングの違いにより、テクスチャリングがより困難になります。

同様に、実世界のスケールを反映するようにUVレイアウトを作成することは、同じくらい重要です。UVシェルは、テクスチャに対する正しい実世界のサイズを反映する必要があります。多くの場合、アーティストには、定義されたサイズを持ち、そのマテリアルのタイル可能なセクションを表す、スキャンまたは撮影されたファブリックまたはマテリアルのビットマップテクスチャが提供されます。ファブリックやその他のテキスタイルなどの簡単に測定できるテクスチャの場合、それらのテクスチャの適切なスケールに一致するようにUVを設定することが重要です。

いくつかのリアルタイム公開ターゲットが1 UV単位(UとVの両方で0〜1のスペース)を使用していることを考えると= 1メートル(glTFとUSDz)、このテクスチャスケールを念頭に置いてUVを構築することをお勧めします。ここで一貫性を保つことで、同じサイズの現実世界のスケールマテリアルがデフォルトで適用されるとすぐに適切なスケールで表示されるため、柔軟性が得られます。

それは、モデルをメータースケールで構築する必要があるという意味ではありません。衣類や携帯型電子機器などの小さなオブジェクトは、目的の精度を得るためにセンチメートルまたはインチで構築でき(また、より大きな単位スケールでモデリングする一部のレガシー3Dアプリケーションの表示の問題を回避できます)、エクスポート時にのみメータースケールに変換されます。FBXエクスポーターとglTFエクスポーターの両方に、スケール変換を許可する設定があることに注意してください。そのため、変換をテストして、エクスポート時と最終的な配信形式内で適切なスケーリングを取得することを強くお勧めします。

タイル可能なテクスチャについて考える方法に関しては、測定された10cm x 10cmのチェッカービットマップテクスチャがあり、それを5cm x 5cmのオブジェクトに適用する場合は、UVが適切に構築されていれば、出力モデルにテクスチャの4分の1のみが表示されます。同様に、1m x 1mのオブジェクトがある場合、同じ10cmのテクスチャがサーフェス全体で10回繰り返されます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International

図4.30

このタイリングテクスチャの概念は理解しやすいですが、特定の種類のUVレイアウトでのみ機能し、いくつかの制約があります。タイルされたテクスチャはUVスペースを0〜1完全に埋めるため、UVはその方向と機能に合わせる必要があります。例として、特定の「カットコード」またはパターンレイアウトを使用する家具メーカーは、実際のデザインで使用して、使用するファブリックが一緒にステッチされるときに特定の方法で整列するように、3Dでその製造プロセスを複製するには、UVをタイル可能なファブリックテクスチャ自体に対してレイアウトする必要があります。これにより、多くの場合、UVシェルが0〜1のUVスペースの外側に部分的に配置されたり、適切な位置合わせを実現するために互いに重なり合ったりする必要があります。これは多くの用途(ウェブサイトやカタログ画像のオフラインレンダリングなど)に完全に許容できますが、リアルタイムアプリケーションの場合、この種のUVレイアウトは多くの場合問題を引き起こすため、UVがすべて0〜1のUVスペース内にきちんと収まらない限り避ける必要があります。さらに、タイリングテクスチャUVレイアウトは、UVがジオメトリではなくテクスチャに関連して管理されるため、アンビエントオクルージョン出力をサポートしていません。そのため、この種のUVレイアウトではAOマップを生成することは不可能です。目的の公開ターゲット(USDzとglTF)によっては、追加の作業が必要になる場合があります。

リアルタイムアプリケーションとUVの公開ターゲットに関する小さな補足です。ほとんどの場合、企業はARおよびWebベースのeコマースプラットフォームでの可用性を高めるために、できるだけ多くの異なる出力ターゲット形式を活用しようとします。2020年半ばの時点で、この種の作業の2つの最大の形式は現在USDzとglTFであり、これらのそれぞれが実世界のスケールに関してUVをレイアウトするアーティストに課す制約を理解することが重要です。

  • glTFはより堅牢であり、2つの別個のUVチャネルとしてタイルされたテクスチャUVとアトラス化されたUVの混合を許可できます。これは、メインのUVがタイルされ、必ずしも0〜1のスペースにきちんと収まらない現実世界のスケールUVを使用し、2番目のUVセットがアトラス化されて結果のモデルのアンビエントオクルージョンを生成する場合に役立ちます。これには、プライマリUVがマップでタイルされているため、モデルのコンシューマーがモデルに非常に近づくことができる一方で、AO情報を使用して遠距離で高い忠実度を提供するという利点があります。
  • USDzは、iOSを介したARエクスペリエンス用のモデルを表示するためのAppleの形式であり、より制限的であり、現在、すべてのマップに対して単一のUVチャネルのみをサポートしています。そのため、アーティストは、AO情報を犠牲にしてタイルされたUVを維持すること、またはテクスチャベーキングによるAOを含むさまざまなマップに対応するためにすべてのUVを単にアトラス化することのどちらが重要かを検討する必要があります。

どちらのアプローチを採用するかについて厳密なルールはなく、企業は各出力形式に対応するために複数の出力ターゲットを導出できるPBRソースモデルを保持することをお勧めします。ただし、場合によっては、すべての要素をUVスペース内に保持するために、アトラス化されたUVワークフローを使用する必要があります。アトラス化されたUVを使用すると、テクスチャアーティストは、タイルされたテクスチャワークフローでもサポートできない、モデルの一部に非タイル可能な詳細(苦痛やその他のジオメトリ固有の効果など)を適用することもできます。

アトラス化されたUVが現実世界のスケールビットマップテクスチャを処理するように設定されていることを確認する方法はいくつかあります。

最も一般的な方法は、前述のようにUVを一般的なアトラスに構築してパックし、マテリアルとマップコントロールを使用してテクスチャをスケーリングして、既存のUV上のテクスチャの適切な実世界のサイズを表すようにすることです。最も基本的な方法では、キューブとビットマップテクスチャの両方を実世界のスケールに一致するように設定した参照キューブを作成し、そのキューブをシーン内の視覚的なガイドとして使用して、モデル自体に適用されるビットマップスケールを一致させます。UVシェルに関連してビットマップのタイリングを調整することにより、モデルと参照オブジェクトがテクスチャスケールの点で一致するように、マテリアル全体が調整されます。

スツールモデルを例として使用してみましょう。デフォルトでは、アトラス化されたUVレイアウトはかなり簡単です。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.31: スツールのUVレイアウト

次のマテリアルをクッションに適用する必要があり、マテリアルが長さと幅が10cm x 10cmのスキャンされたファブリックスウォッチから派生したものであると想定します。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.32: 10cm x 10cmの醜いファブリックテクスチャ

このマップを使用してマテリアルを作成し、それをスツールクッションに適用するだけで、結果のスケールは大きく外れます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.33: クッションのRWSが正確ではない

クッション自体は直径約60cmですが、この結果は、クッションのUVシェルがアトラス化されたUVレイアウトのごく一部しか占めておらず、マテリアルのタイルされたテクスチャがUVスペース全体を占め、端から端までわずか10cmを表しているためです。それを適切に一致させるには、ファブリックスウォッチの実際のサイズを表す単純な参照キューブを作成します。この場合、テクスチャは10cm x 10cmであるため、作成されるキューブは10cm x 10cm x 10cmの寸法で構築されます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.34: ビットマップサイズ(10cm x 10cm)に合わせて作成された参照キューブ

次に、テクスチャのスケーリングをさらに視覚化するために、ユーザーは単純なチェッカーパターンをキューブに適用し、それが10cm x 10cmのパターンを表していることを確認する必要があります。

3ds Maxでは、ユーザーはマッピングコントロールで[実世界のスケールを使用]オプションを有効にして、サイズを明示的に設定し、高さと幅の値を直接入力できます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.35

Mayaでは、参照キューブが適切な寸法であることを確認し、place2DTextureノードの[UVを繰り返す]設定をそれぞれ1と1に設定してビットマップテクスチャを使用します。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.36

チェッカーマップを参照キューブに適用した状態で、チェッカーパターンも含むクッションの複製マテリアルを作成し、モデルに適用します。複製の理由は、アトラス化されたUVレイアウトを指定されたビットマップテクスチャを使用してモデルで実世界のスケールオプションを使用できないためです。デフォルトでは、モデルのチェッカーパターンは間違ったスケールになります。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.37: 間違ったテクスチャスケール

3ds maxでは、ビットマップテクスチャ内のUとVのタイリングコントロールを使用して、チェッカーパターンを参照キューブに合わせてスケーリングします。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.38: 参照キューブと適用されたマテリアル間のUVタイリングの一致

Mayaでは、参照キューブのスケールに合わせて[UVを繰り返す]パラメーターを調整します。

チェッカーでタイリングが決定されたら、それらの同じタイリング値を元のマテリアルのビットマップに適用して、スケールが一致することを確認します。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.39: UVアトラス内の適切なRWSでの元のマテリアル

3ds Max用のTexToolsやMaya用のUV Mapping Toolboxなど、ビットマップテクスチャのタイリングがテクセル密度の操作を介してそのマテリアルの実世界のスケールと一致することを自動化および支援できるスクリプト化されたプラグインとツールがあることにも注意してください。

テクスチャ自体のタイリング値を使用することは、リアルタイムアプリケーション用にglTFやUSDzなどの形式にエクスポートできるものではないことに注意することが重要です。そのため、実世界のスケールテクスチャが処理されることを保証する次のステップは、モデルのさまざまな部分のテクスチャベーキングを実行することです。

3ds Maxで、ベイク処理するジオメトリを選択し、[テクスチャにレンダリング]ダイアログを開きます。使用されているレンダラーに応じて、レンダリングする必要があるさまざまなマテリアルコンポーネントを選択します(PBR出力には、通常、ベースカラー、粗さ、法線、金属が含まれます)。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.40: 3ds Maxの[テクスチャにレンダリング]ダイアログ

次に、マップをディスク上の場所にレンダリングします。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.41: スツールクッションのベースカラーのベイク処理されたマップ出力

完了したら、ベイク処理された実世界のスケールマップを含む新しいマテリアルを作成し、それらをモデルに適用できます。この時点で、ファイルはエクスポートされ、リアルタイム作業用のglTF / glBファイルとしてマテリアルを適切に表示します。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.42: WebGLプレーヤーのスツールモデル

同様に、Mayaでは、[レンダリング]パネルの[照明/シェーディング]メニューにある[マップの転送]ツールを使用して、同じテクスチャベーキングプロセスを実行できます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.43: Mayaのマップの転送場所

さて、ここでの最も一般的なワークフローは、最初にすべての実世界のスケールマップを割り当ててから、テクスチャベーキングを実行して、すべてのマップをプロセスの最後に組み合わせることができるようにすることです。この例では、単一の要素を処理する方法を示しました。

覚えておくべきことは、UVを実世界のスケールに調整し、それらをUV 0〜1のスペース内に収めることはほとんど不可能であるということです。そのため、そのような場合、最善の代替策は、適用されたビットマップテクスチャをタイルして、予測可能なマッピングを取得し、そこからテクスチャをベイクダウンするように、実世界のスケールスペースを反映させることです。

アトラスレイアウトでのUVの重複に関する考慮事項

UVマッピングレイアウト内には、多くの場合UVアイランドまたはUVシェルと呼ばれるポリゴンのコレクションがあります。これらのUVシェルは、3Dモデルのさまざまな部分を表しています。モデルのアンラップを開始すると、最初はパーツを平坦化する前に、それらを明らかなグループに分割することに重点を置く場合があります。たとえば、スツールモデルでは、モデルを脚、座面、クッションなどで分割し、それらのパーツを2D表現にアンラップする場合があります。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.44: スツールモデルのUVはすべてアンラップされていますが、パーツごとにのみ整理されています

アンラッピングが進むにつれて、多くの場合、同様のUVパーツが同じようにレイアウトされるため(上記のUVレイアウトのすべての脚とサポートUVシェルなど)、UVレイアウトで時間とテクスチャスペースを節約するために、これらのUVを互いに積み重ねたい場合があります。これにより、UVの重複が生成されます。それらを持つことに問題はありませんが、モデルのマテリアルの作成方法によっては、いくつかの問題が発生する可能性があるため、それらを認識しておくことが重要です。

UVが重複しているということは、パーツがテクスチャマップのまったく同じ部分を共有することを余儀なくされることを意味するため、同じUVを共有するそれらのパーツに一意の詳細(アンビエントオクルージョンマップを含む)をすばやく追加する方法はありません。一部のリアルタイムエンジンでは、そのエンジンがモデルのライトマップを自動的に生成しない場合、UVが重複していると、奇妙な照明アーティファクトが発生する可能性があります。

アトラスレイアウトでUVを重複させることが望ましい場合があることに注意してください。モデル上の要素を繰り返すと、テクスチャアトラス内のまったく同じスペースを再利用できる可能性があります。重複により、UVシェルを大きくすることができ、テクスチャスペースを最適化し、各UVシェルの相対的なテクスチャ解像度を向上させることができます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.45: レイアウトで強調表示されたUVの重複

最終的には、視覚的なアーティファクトを回避するために、UVの重複を慎重に使用する必要があります。モデルがアンビエントオクルージョンテクスチャを使用する場合は、オクルージョンが異なる必要があるパーツのテクスチャスペースを再利用しないでください。

さらに、ベイク処理されたモデルが重複するUVを使用する場合、ベイカーは各UVシェルを同じスペースにレンダリングしようとするため、ベイク処理されたテクスチャにアーティファクトが表示される可能性があります。ベーキングツールは、0〜1のUVスペース内にあるもののみをキャプチャします。このスペース外のすべてのUVシェルは、ベーキング中に無視されます。

UVの重複を使用することが決定された場合、ベーキングする前に、すべての重複を0〜1のUVスペースの外側に移動することをお勧めします。ベーキング時には、前向きのUVのコピーを1つだけ0〜1のUVスペースに残す必要があります。すべての重複を正確に1 UV単位(任意の整数でかまいません)移動すると、ベイク後もそこに残すことができ、それでも正しくマッピングされます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.46: 重複するUV(赤)が、0〜1のUVスペースの外側に正確に1単位移動されました。

可能な限り、UVが重複しないように時間をかけることをお勧めします。これは時間がかかる可能性がありますが、必要な場所に関係なく、モデルの柔軟性を最大限に高めるのに役立ちます。

例として、上記のスツールモデルとそのUVレイアウトを使用してみましょう。目標は、そのすべてのUVシェル(合計28個)が単一の0〜1のUVスペース内に収まるようにすることです。これは、個々のUVシェルが重複しないようにしながら、使用されるスペースを最大化するためのパズルのようなものです。

最初のステップは、UVシェルを分離して移動し、すべてが表示されるようにして、作業内容(どのUVシェルがモデルのどの部分に関連しているか)を理解することです。それらをすべて0〜1のUVスペースに入れることを心配しないでください。組織的な観点から、モデルの一部を形成するさまざまなUVシェルをグループ化するのに適した時期です(たとえば、各脚のUVシェル、クッションのUVシェルなど)。これは、マテリアルに基づいてそれらをレイアウトする方法(木材部品、金属、布地など)を通知するのにも役立ちます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.47: すべてのUVシェルが分離され、重複していません

何も重複していないことを確認するために、組み込みツールはUVシェルレイアウトの検証に役立ちます。

  • 3ds Maxでは、Unwrap UVWエディターで、[選択]->[重複するポリゴンを選択]を選択します。ビューでポリゴンが赤く表示された場合、それらを分離するためにさらに作業が必要であることを意味します。
  • Mayaでは、UVエディター内の[ShadeUVs]トグルを使用して、他のUVシェルよりも暗く表示されるUVシェルを探します。これは、重複を示しており、それらを分離するためにより多くの作業が必要です。

UVが重複しなくなったら、手動で、またはできれば支援するように設計された自動UVレイアウトツールを使用して、UVをアトラスにパックします。

アトラスマッピングされたUV

複雑なモデルは、多くの場合、複数のパーツから構築され、それらの個々のピースのそれぞれが、一意の0〜1のUVレイアウトを持つ独自のマテリアルを持っている場合があります。これは高解像度のレンダリングには完全に許容されますが、これらの種類のモデルをリアルタイムエクスペリエンスで使用すると、各オブジェクトが独自のマテリアルを必要とし、各マテリアルが使用される一意のテクスチャマップに対応するためにエンジンから別のドローコールを強制し、読み込みと対話性が低下するため、パフォーマンスが低下します。この対話性の低下は、WebGLエクスペリエンスでも容易に明らかであり、回避する必要があります。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.48: 個々のモデルコンポーネントのアンラップされた0〜1のUV

リアルタイム環境でモデルを表示するために必要なドローコールの数を減らすには、さまざまなUVシェルをすべて単一のUVマップレイアウトに結合して、モデルを最適化する必要があります。これはUVのアトラス化と呼ばれ、テクスチャがすべてモデル全体に適用される単一のビットマップテクスチャセット(ベースカラー、法線、粗さ、金属、AOなど)に存在するため、好ましい方法です。複数のマテリアルを複数のマップとともにリアルタイムエクスペリエンスにロードする代わりに、アトラス化されたUVを使用すると、すべてを組み合わせて、単一のマテリアルとマップのセットのみが必要になるようにすることができます。

3ds Maxでこれを行う方法はいくつかありますが、最も簡単な方法は、個別にUV処理されたすべてのコンポーネントを選択し、それらすべてに新しい共有Unwrap UVWモディファイアを適用することです。新しいUVは既存のUVからモディファイアスタックに渡されるため、各モデルコンポーネントの下に独自のUnwrap UVWモディファイアがあるかどうかは関係ありません。新しいUnwrap UVWモディファイアは、元の作成されたUVを統合および再編成するために使用されます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.49: 共有Unwrap UVWモディファイアが適用されました

複数の個別のオブジェクト間で共有されているため、モディファイアスタックではイタリック体になります。UVエディターを開くと、各オブジェクトのさまざまなUVがすべて、元の作成されたとおりに互いに重ねて表示されます。グループとして、それらを操作して単一のUVシートに再パックすることができます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.50: 共有UVエディターウィンドウ

この時点で、UVを手動で編集して再パックすることも、アーティストが単に多数のツールの1つを使用してそのアクションを自動的に実行することもできます。

[ツール]->[UVをパック]を選択すると、以下に示す結果が得られます。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.51: スツールモデルのアトラス化されたUVレイアウト

モディファイアスタックの上に共有UVを使用すると、3ds Maxアーティストにとっての利点は、各コンポーネントの元のUVが保持され、いつでもアクセスできることです。

Mayaでは、プロセスは似ています。まず、モデルのすべてのコンポーネントを選択します。

次に、UVエディターウィンドウの[レイアウト]ボタンをクリックして、すべてのUVシェルを重複しない配置にアトラス化します。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.52

唯一の違いは、Mayaでは、各コンポーネントの元のUVを保持するために、ユーザーは[レイアウト]コマンドを実行する前に新しいUVテクスチャセットを作成する必要があることです。そうしないと、結合されたUVレイアウト内の元のコンポーネントのUVのそれぞれに対する変更が永続的になります。

テクスチャをアトラス化することのトレードオフは、モデルの全体的なテクスチャ解像度が低下することです。高解像度のテクスチャマップで個別にUVマッピングされたモデルに複数のコンポーネントがある場合、それらのテクスチャをアトラス化すると、モデルのすべてのUVが単一のテクスチャマップに収まる必要があるため、それらをより小さなUVスペースに効果的にリファクタリングしています。そのため、それらの再ベイク処理されたテクスチャの結果の解像度は、アトラス化のために低くなります。

透明または屈折マテリアルに関する重要な注意点が1つあります。透明度または屈折を含むモデルのパーツの場合、それらのマテリアルは、リアルタイムエクスペリエンス内で適切に使用できるようにするために、個別に保持する必要があります。これは、モデル全体を単一のUVセットにアトラス化し、単に2番目のマテリアルに同じUVを使用できないという意味ではありません。これを行うと、リアルタイムで使用するためにモデルに別のドローコールが追加されることは事実ですが、透明度と屈折はUnrealやUnityなどのリアルタイムエンジンで非常に特定の方法で処理されるため、それらのマテリアルを個別にロードすると、透明と非透明の両方のマテリアルが結合された場合に発生する可能性のある他の問題を回避するのに役立ちます。また、モデル全体に同じUVレイアウトを使用し、単に2つのマテリアルを異なるパーツに適用することの利点には、マテリアル間で多くの同じマップ(粗さ、金属、法線、発光など)を再利用できることが含まれます。唯一の違いは、透明マテリアルのベースカラーテクスチャマップには透明度のブレンド量を指定するアルファチャネルがあり、非透明マテリアルのベースカラーテクスチャにはアルファチャネルがないことです。

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.53: ガラスに透明度がない(WebGL)、左。ガラスに透明度がある(WebGL)、右

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.54: コールボックスモデル全体のUV

Image credit: TurboSquid

(C)2020, TurboSquid. ライセンス: CC BY 4.0 International 図4.55: ガラスマテリアルのアルファチャネル

もう1つの例外は、インタラクティブな構成可能性のためにバリアントを表示する必要があるモデルです。モデルに、色の異なる靴紐、アッパー、ソールなどを持つ靴などのマテリアルのバリエーションがある場合、これらの各パーツには独自のマテリアルが必要になります。次に、顧客は個々のパーツのマテリアルを交換して、カスタム製品を構成できます。次に、各パーツはアトラスUVレイアウトと一意のマテリアルを使用できます。したがって、このような状況でのUVのアトラス化は、特定のマテリアルグループに関連付けられたUVに限定されます。

UVセット

  • glTF仕様では、複数のUVセットを使用できます。ただし、一部のビューアは複数のUVセットをサポートしていますが、他のビューアはサポートしていません。
  • USDは、_usdExport コマンドフラグ-uvs_を使用する場合、UVセットをサポートします。
  • USDZは現在、AR Quick Lookで複数のUVセットをサポートしていません。

KHR拡張機能

KHR_texture_transformはタイリングをサポートするために必要ありません。UV自体をスケーリングするだけで済みます。ただし、実世界のスケールUVを使用し、マテリアルで各ビットマップを個別にタイルする場合は必要です。

アセット作成ガイドラインの概要