0

3Dテクスチャを使用して、ランダムに生成された地形をテクスチャリングしようとしています。さまざまな領域間でブレンドするさまざまな地形テクスチャを作成できるようにしたいと考えています。R座標がテクスチャのどの部分をピックアップするのか理解できないようです。0.0に設定すると、1.0より前と0.0より後のテクスチャがブレンドされます。全く混ざっていない点がいくつかあるようです。R座標(フロート)は3Dテクスチャの深さでどのように機能しますか?(つまり、深さを何かで割ったものに何かを掛けたものなど)

これを理解するために必要な例:128x512の画像である3Dテクスチャがあります。最初の128x256は草のテクスチャです。後半は汚れの質感です。テクスチャを4つの128x128タイルであるかのように扱っているので、深さは4です。ソリッドグラステクスチャのフロートR座標を見つけるには、どのような計算を行いますか?土から草までブレンドするための開始/終了フロートR座標を見つけるためにどのような計算をしますか?

どんな助けでも大歓迎です!

4

2 に答える 2

2

レイヤー 0 からサンプリングするには、 を使用する必要があることがわかりましたr = 1 / (depth * 2)。一般に、レイヤー N を取得するには、次を使用します。r = (N + 1/2) / depth

ちなみに、この結果は最初の 2 つの座標で同じです。2/d テクスチャの最初のテクセルの値を正確に持つ三角形が必要な場合は、(0.5/width, 0.5/height)各頂点に座標を渡す必要があります。

しかし、しかし...あなたがしようとしているのは、テクスチャ配列が何のために発明されたかです(DX10時代の機能)。3D テクスチャは、さまざまな理由であまり適していません。最大の問題は、ミップ マッピングが期待どおりに機能しないことです (3 次元とは独立した 2D レベル間のミップマップ)。

ミップ マッピングは、エイリアシング アーティファクトを減らすために重要です (特に、すべての深度範囲にまたがる地形では)。レイヤーでミップ マッピングをオンにし始めると、地形が遠くにある場合、テクスチャ座標に関係なく、異なるマテリアル レイヤーがブレンドを開始することがわかります。結局のところ、それがミップマッピングの目的です... 128x128x4 テクスチャは、さらに離れたジオメトリで使用すると、64x64x2、32x32x1、16x16x1 になります。32x32x1 のレベルに到達すると、レイヤーが 1 つしか残っていません。これは、土と草の穏やかな混合物になる可能性があります。繰り返しますが、あなたが望むものではありません。

対照的に、テクスチャ配列は 128x128[4]、64x64[4]、32x32[4]、16x16[4] を提供し、ミップマッピングに関係なく、さまざまなマテリアルを選択する 4 つのレイヤーを保持します。

于 2010-10-23T08:21:11.130 に答える
0

私は自分のコードで何か間違ったことをしたことに気付きました。実際には、R の周囲のテクスチャを取得しているだけではないと思わせてくれました。したがって、最初のテクスチャは 1.0/(深さ*2) です。

于 2010-10-23T00:59:53.397 に答える