1 / 4 自然物と座標から作るUV
位置からUV座標を作り、岩の配置によって模様の参照位置が変わることを確認します。
自然物とテクスチャーマップ
石、岩肌、土などの表面を表現する際にも、テクスチャーマップは有効です。
ただし、風景全体を作る場合は、個々のモデルにテクスチャーを貼るだけでは十分ではありません。
同じ岩を何度も配置すると、同じ場所にある亀裂や色むらが繰り返され、複製が目立つ場合があります。
かといって複雑なテクスチャーを大量に用意するのも限界があります。
映像を評価する人間は自然物のディテールを見分けられるわけではありませんので、ある程度のテクスチャーの使いまわしは許容したいところです。
広い岩肌や地面を表現する場合、モデルごとに個別のUVでテクスチャーマップするのではなく、ワールド座標などの共通の基準からUVを作って大きくマップする手法が有効です。
UV座標の生成
一般的なテクスチャーマッピングでは、モデルに保存されたUV座標を使って画像を読みます。
同じモデルを複製すれば、同じ表面の位置に同じ模様が現れます。
個々の岩にディテールを細かく描き込んでいては、風景の規模が大きくなるほど制作の量や調整の手間も増え、かといって画質の向上には限界があります。
ここでは、テクスチャーを参照する座標を、その場所のワールド座標から作る手法を紹介します。
まず、上方向から見た地面に画像を投影する場合を考えます。
この場合のUV座標は、ワールド上のXZ座標から得られます。
例えば、位置が(3, 2, 5)なら、Yを無視して(3, 5)がUV座標となります。
次のHLSLは、ワールド位置からUVを得てテクスチャーをサンプルする例例です。
input.positionWSは画素のワールド座標です。
float3 position = GetAbsolutePositionWS(input.positionWS);
float2 uv = position.xz * _Tile;
float3 color = SAMPLE_TEXTURE2D(_BaseMap, sampler_BaseMap, uv).rgb;ワールド座標でのテクスチャーマップは、同じ岩でも配置した場所によって画像の参照位置が変わります。
予測と結果の照合
同じ範囲に2倍の回数だけ繰り返すため、一つの模様の幅と高さはそれぞれ半分になります。
- ワールド座標からUVを作る手法を理解した