3

OpenGLでクワッドから作られた地形をテクスチャ化する最良の方法は何ですか? 地形に使用したい約 30 の異なるテクスチャがあり (地形の種類ごとに 1 つのテクスチャ、つまり 30 の地形の種類)、任意の 2 つの地形間をスムーズに移行したいと考えています。

Web をブラウジングしていると、3D テクスチャリング、アルファ チャネル、ブレンディング、シェーダーの使用など、さまざまな方法があることがわかりました。しかし、これらのうちどれが最も効率的で、使用しようとしているテクスチャの量を処理できますか? 例:この一般的な回答では、いくつかの手法の使用方法について説明していますが、ミックスマップには 4 つのプロパティ (RGBA) しかないため、サポートできるテクスチャは 4 つだけです。

また、私はシェーダーについて何も知らないので、シェーダーを必要としない手法が望ましいことにも注意してください。

4

2 に答える 2

3

あなたはテクスチャスプラッティングを説明する回答にリンクしていて、その質問はゲームOblivionに言及しているので、私はそれについていくつかの追加の洞察を提供することができます。

RGBAミックスマップを使用した基本的なテクスチャスプラッティングは、テレインクワッドごとに4つのテクスチャのみをサポートしますが、クワッドごとに異なるテクスチャセットを使用できます。Oblivionは、地形を1辺あたり32グリッドポイント(192フィート)の正方形(「セル」と呼ばれる)に分割し、各セルは4つの地形テクスチャの独自のセットを定義します。そのため、小さな領域内に多くのテクスチャの多様性を持たせることはできませんが、大きな領域でテクスチャを簡単に変えることができます。必要に応じて、より多くのメモリを使用する代わりに、個々のクワッドであっても、より小さな領域のテクスチャセットを定義できます。

クワッドに4つを超えるテクスチャが本当に必要な場合は、複数のミックスマップを使用できます。追加のテクスチャごとに、別のテクスチャルックアップを実行してさらに4つのブレンド係数を取得し、前のミックスマップの結果に加えてさらに4つのテクスチャをブレンドします。メモリを犠牲にして、必要な数のテクスチャにスケールアップできます。

テクスチャスプラッティングは、高さマップのLOD手法と組み合わせるのが難しい場合があります。これは、単一の低詳細地形クワッドが高詳細クワッドのグループを表す場合、大きなクワッドのさまざまな領域に対していくつかの異なるミックスマップをサンプリングする必要があるためです。Oblivionは、完全な詳細な地形にのみテクスチャスプラッティングを使用することで、この問題を回避します。低解像度でレンダリングされた離れたセルは、エディタによって生成された事前に計算されたテクスチャを使用します。これにより、事前にスプラッティングとダウンスケーリングが行われます。

于 2012-07-31T02:38:28.473 に答える
3

テクスチャ スプラッティングの代替手段の 1 つは、クリップマップを使用して「メガテクスチャ」をレンダリングすることです。このアプローチでは、地形全体を表す 1 つの大きなテクスチャがあり、視聴者の現在の位置に基づいてレンダリングするために実際に必要な詳細だけをさまざまな部分にロードすることで、RAM がいっぱいになることを回避できます。(テレインの遠い部分は完全な詳細で見ることができないため、それらを完全な詳細でロードする必要はありません。)

このアプローチの利点は、芸術的な自由度です。頂点グリッドに関係なく、テクスチャ内の好きな場所に細かいディテールを配置できます。欠点は、実装がかなり複雑であり、必要に応じてクリップマップの一部を RAM にロードできるように、クリップマップ全体をおそらくディスク上の大きなファイルに保存する必要があることです。

于 2012-07-31T02:58:45.133 に答える