私の3Dモデルが長方形の底面を持つピラミッドであり、底面の4つの角を1、2、3、4で数え、頂点に5を与えると仮定します。このピラミッドを2Dの星型オブジェクトに投影した場合、星の4つの外側のすべてのポイントが3Dモデルのポイント番号5に関連付けられませんか?
私の3Dモデルが長方形の底面を持つピラミッドであり、底面の4つの角を1、2、3、4で数え、頂点に5を与えると仮定します。このピラミッドを2Dの星型オブジェクトに投影した場合、星の4つの外側のすべてのポイントが3Dモデルのポイント番号5に関連付けられませんか?
回答:
通常の定義方法では、メッシュのすべての頂点がUV座標に対応し、レンダラーがテクセルをフェッチする方法であるため、頂点ごとにそのような座標が1つだけ存在する必要があります。したがって、メッシュに複数のパラメータ設定がない限り、単一の頂点に複数のUV座標を設定することはできません。
ただし、例のように、パラメーター化中にメッシュが分割されることが多く、同じ頂点が複数の場所に配置される可能性があります。ほとんどの場合、これらの頂点はロード/レンダリング中に単純に複製されるため、頂点からUVへのマッピングは1対1または多対1のままです。そのため、レンダラーは例を次のように解釈する可能性があります(v5は4に分割されます)。
私はap_の答えに少し追加する必要があります。
もちろん、1つの頂点に複数のUVを設定できます。これはUVレイヤーと呼ばれます。これは、ライトマップの登場以来、エンジンがライトマップとアルベドマップを同時に表示する方法です。(1996年の地震エンジンかな?)
テレイン、ライトマップ、アルベドラージ、アルベドディテール、ノーマルマップなどのマルチテクスチャリングを行う場合は、UVレイヤーを追加できます。
残念ながら、ラスタライザは、レンダリングするプリミティブに応じてUVレイヤを選択することはありません。このようなレンダラーは、補助的なインデックスバッファー(プリミティブからUVレイヤーへのマッピングバッファー)で実行できますが、グラフィックカードもグラフィックAPIもこれをサポートしていません。これはとにかくKISSに不必要な違反です。
したがって、この場合、設計時にピラミッドの頂点を4つの異なる頂点に分離することになります。とにかく、これの最初の理由は、UVアンラッピングではなく、ほとんどが通常の定義です。シャープなエッジが必要な場合は、シェーディングを解除する必要があるため、異なる法線が必要です。UVのように、法線も通常、頂点ストリームで1-1に定義されます。
最後の提案、おそらくあなたは本当にこのアンラッピングを使いたくないでしょう、私はむしろこれを提案したいと思います:
このようにして、フィルタリングのシームレスな連続性を持ち、エッジと頂点を調べます。