Skip to content
TriPlanar での自然物描画

1 / 4 自然物と座標から作るUV ​

このステップの目的

位置からUV座標を作り、岩の配置によって模様の参照位置が変わることを確認します。

自然物とテクスチャーマップ ​

石、岩肌、土などの表面を表現する際にも、テクスチャーマップは有効です。
ただし、風景全体を作る場合は、個々のモデルにテクスチャーを貼るだけでは十分ではありません。
同じ岩を何度も配置すると、同じ場所にある亀裂や色むらが繰り返され、複製が目立つ場合があります。

かといって複雑なテクスチャーを大量に用意するのも限界があります。
映像を評価する人間は自然物のディテールを見分けられるわけではありませんので、ある程度のテクスチャーの使いまわしは許容したいところです。

広い岩肌や地面を表現する場合、モデルごとに個別のUVでテクスチャーマップするのではなく、ワールド座標などの共通の基準からUVを作って大きくマップする手法が有効です。

UV座標の生成 ​

一般的なテクスチャーマッピングでは、モデルに保存されたUV座標を使って画像を読みます。
同じモデルを複製すれば、同じ表面の位置に同じ模様が現れます。
個々の岩にディテールを細かく描き込んでいては、風景の規模が大きくなるほど制作の量や調整の手間も増え、かといって画質の向上には限界があります。

ここでは、テクスチャーを参照する座標を、その場所のワールド座標から作る手法を紹介します。

まず、上方向から見た地面に画像を投影する場合を考えます。
この場合のUV座標は、ワールド上のXZ座標から得られます。

例えば、位置が(3, 2, 5)なら、Yを無視して(3, 5)がUV座標となります。

次のHLSLは、ワールド位置からUVを得てテクスチャーをサンプルする例例です。

input.positionWSは画素のワールド座標です。

hlsl
float3 position = GetAbsolutePositionWS(input.positionWS);
float2 uv = position.xz * _Tile;
float3 color = SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, uv).rgb;

ワールド座標でのテクスチャーマップは、同じ岩でも配置した場所によって画像の参照位置が変わります。

予測と結果の照合

同じ範囲に2倍の回数だけ繰り返すため、一つの模様の幅と高さはそれぞれ半分になります。

チェックリスト
  • ワールド座標からUVを作る手法を理解した