UVおよびUVWマッピングとは正確には何ですか?


26

いくつかの基本的な3Dの概念を理解しようとして、現時点では、テクスチャが実際にどのように機能するかを理解しようとしています。UVマッピングとUVWマッピングは、2Dテクスチャを3Dオブジェクトにマッピングする技術であることを知っています-ウィキペディアは私にもそう語っています。私は説明のためにグーグルで検索しましたが、それが何であるかをすでに知っていると仮定したチュートリアルのみを見つけました。

私の理解では、各3Dモデルはポイントで構成されており、いくつかのポイントが顔を作成しますか?各ポイントまたは面には、2Dテクスチャ内のax / y位置にマッピングされる2次座標がありますか?または、アンラップはモデルをどのように操作しますか?

また、UVWのWは実際に何をしますか、UVを超えて何を提供しますか?私が理解しているように、WはZ座標にマッピングされますが、同じX / Yと異なるZに対して異なる状況がどのような状況で発生しますか、Zパーツは見えませんか?または、私はこれを完全に誤解していますか?


1
個別に二つの質問を尋ねる
Noobのゲーム開発者

1
@NoobGameDeveloperのような人はとても嫌いです。他の人は誰でも質問に答えており、彼らがしていることは質問の間違ったことを見つけようとしているだけです。さあ、彼らに質問させてください。誰も規則に従うべきではないと言っているわけではありませんが、このような質問はここに投稿しても大丈夫です。
ダニエルアズラム

回答:


23

あなたの理解は密接です。各3Dモデルは頂点で構成されています。通常、各頂点は、空間内のポイント、法線(ライティング計算で使用)、および1つ以上のテクスチャ座標の位置を定義します。これらは通常、テクスチャの水平部分をu、垂直部分をvとして指定されます。

オブジェクトがテクスチャ化されると、これらの座標を使用して、テクスチャからプロットするテクセルまたはピクセルを検索します。テクスチャの左端(u = 0)とテクスチャの右端(u = 1.0)、およびテクスチャの上部(v = 0)と下部の間の割合または比率として考えるのが最も簡単ですそれ(v= 1.0)。それらは頂点間で補間され、レンダリングされる画面上のピクセルごとに検索されます。これらはこれらの範囲よりも大きい場合も小さい場合もあり、オブジェクトのレンダリング時に設定されるレンダリング状態により、何が起こるかが指定されます。このオプションはCLAMPおよびREPEATです。クランプにより、座標が0または1のいずれかに制限され、テクスチャが範囲外の場所で汚れます。Repeatは、範囲外にあるテクスチャを繰り返します。これは、座標の小数部分のみを取得し、その場所で使用するのと事実上同じです。

テクスチャ座標をオブジェクトに適用する前に、テクスチャマトリックスを乗算して、何らかの変換(スケーリング、平行移動、回転など)を適用します。この効果はゲーム内でアニメーション化され、オブジェクト自体を動かさずに何かがオブジェクトを横切って移動しているように見せることがあります。テクスチャは単純にスクロールします。テクスチャマトリックスにテクスチャ座標を乗算すると、テクセルを検索してプロットするために使用される2つの値が生成されます(これらをsおよびtと呼びます)。これらは、テクスチャマトリックスが設定されていない場合でも、uおよびvから自動的に生成されます。これは、uvに単位行列を乗算することと同等です。

これはw座標が入る場所ですが、それほど頻繁には使用されません。これは、テクスチャマトリックスを乗算する追加のパラメーターであり、通常、遠近感を考慮したい場合に使用されます(シャドウマッピングなど)。これは、world-view-projectionマトリックスを介してオブジェクト空間の位置をスクリーン空間に変換する場合と同じように機能します。UVWに投影変換を掛けると、最終的に2つの座標、stになり、これらは2Dテクスチャにマッピングされます。


OpenGLはv0を最下位として、v1.0を最上位として扱うことに言及する価値があります。私のテクスチャが奇妙に見えたときにバグを見つけることができなかったとき、過去に多くの時間がかかりました。
tkausl 14

8

三角形を考えてみましょう。

各コーナーにはUV座標があります。これらの間を補間して、各ピクセルのUV座標のセットを取得します。(ここにも遊びの視点がありますが、今のところそれを無視しましょう)。

次に、座標UとVからテクスチャからテクセルをフェッチします。つまり、テクスチャ座標x、yからのピクセルです。同じことです。テクスチャについて説明しているため、用語が少し異なります。

テクスチャが本当に3次元のテクスチャである場合、3番目の座標Wも必要になります。

これを視覚化する1つの方法は、木の塊を考えることです。なんとか切り刻むと、ブロック内の各平面に2Dのテクスチャが含まれていることがわかります。

3Dテクスチャは非常にまれなので、当面はそれらを忘れることができます。


珍しい?彼らは何のために使われますか?AAAタイトルのコンテキストで例を示してください。
クアジイルファン

いいえ、彼らは一般的に決して使われないと話しているからです。同じことをするより安価な方法が常にあります。wii sports plusで切り刻まれたアイテムを考えてください。あなたが望む方法でアイテムを壊し、「内部」を見ることができます。ハードウェアが3Dテクスチャをサポートしていれば、膨大な量のメモリを浪費することもできますが、代わりに2Dテクスチャをいくつか使用してシミュレートする方がはるかに安価です。
ヤリコンパ

だから、彼らは排他的ではありませんか?または、これはゲームエンジンが行うよく知られていることにはあまり必要な機能ではありませんか?
クアジイルファン

どういう意味か分かりません。ただし、3Dテクスチャは、単なるテクスチャとして以外の用途にも役立ちます。シェーダーが必要とするデータが3D配列に便利にマッピングされる場合、それが1つの用途になります。しかし、「通常の」テクスチャとして、それらは一般的に単なるメモリの無駄です。
ヤリコンパ

3Dテクスチャのアプリケーションの1つに距離マッピングがありますが、Jariが言うように、複雑さのためにゲームでは非常にまれです。[リンク] http.developer.nvidia.com/GPUGems2/gpugems2_chapter08.html
ジャッカロープ

7

折り紙を考えてください。

UVマップは、3Dメッシュ(シェル)の平らな(ラップされていない)2Dスキンのようなものです。

マップを切り取り、メッシュラインに沿って折りたたむと、結果は3Dモデルになります。

(U、V)浮動小数点値の範囲は(0,0)から(1,1)ですUVマップの左上隅は(0,0)右下隅は(1,1)です

ポリゴンメッシュ(トリス/クワッド)の各頂点には、マップのどの部分を使用するかをレンダラーに指示する(U、V)値があります。

GPUパイプラインでは、頂点シェーダーがこれらの3Dポリゴンの各ピクセルの2D投影を計算し、フラグメントシェーダーがUVマップを使用してそれらに色を付けます。

これは、次のような写真がなければ明らかではありません。

UVメッシュ

他のコメンテーターが言及したように、Wコンポーネントはレンダラーによってシャドウマッピングのようなより洗練された効果のために使用されますが、UVマップは理解の基礎となります。

頂点シェーダーは、色付けする必要のあるピクセルごとに少なくとも1回フラグメントシェーダーを呼び出す必要があることに注意してください。これが、GPUが数十のコアを持つ並列プロセッサである理由です-シェーダーパイプラインは非常に要求が厳しいです。

また、CPU統合GPUはモバイルデバイス向けに設計されており、同様の世代の外部GPUのコア数の10分の1未満に制限されています。これは、モバイルの電力と冷却の制約によるものです。ムーアの法則は遅くなったように見えますが、パフォーマンスはまだ改善しています(あちこちで奇妙なメルトダウンがあります..)

1秒あたり240+フレームで数十億ピクセルのUVマッピングを行うと、本当にホットな混乱が発生する可能性があります!


0

UVマップは、メッシュ内のポイント(x、y、z)をテクスチャイメージ内のポイント(u、v)にマッピングします。画像は(u、v)を色にマッピングするため、2つのマップをチェーン化して、メッシュ空間から色空間へのマップを生成できます。

         uv map       color map
 (x,y,z)   ->   (u,v)    ->     color
 mesh           Texture
 space          space
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.