マーチングキューブアルゴリズムを使用して生成されたサーフェスに2次元テクスチャ(単純な画像)を適用する必要があるプログラムがあります。私はジオメトリにアクセスでき、比較的簡単にテクスチャ座標を追加できますが、座標を生成する最良の方法は私を避けています。
ボリューム内の各ポイントは単一のデータユニットを表し、データの各ユニットは異なるプロパティを持つ場合があります。物事を単純化するために、私はそれらを「タイプ」に分類し、各タイプにテクスチャ(または単一の大きなテクスチャアトラスの一部)を割り当てることを検討しています。
私の問題は、適切な座標を生成する方法がわからないことです。タイプのテクスチャの場所をタイプクラスに保存して使用することはできますが、シームがひどく引き伸ばされます(2つの隣接するポイントがアトラスの異なる部分を使用している場合)。可能であれば、縫い目のテクスチャをブレンドしたいのですが、それを行うための最善の方法がわかりません。ブレンディングはオプションですが、何らかの方法で頂点にテクスチャを付ける必要があります。ジオメトリをタイプごとにパーツに分割したり、テクスチャリングの目的で頂点を複製したりすることは可能ですが、望ましくありません。
可能であればシェーダーの使用を避けたいのですが、必要に応じて、頂点シェーダーやフラグメントシェーダーを使用して、テクスチャのブレンドを行うことができます。シェーダーを使用する場合、それがテクスチャまたはサンプリングする部分であると判断する最も効率的な方法は何でしょうか。タイプをパラメータに渡すのが最も簡単な方法のようですが、時間がかかる可能性があります。
私のボリュームは比較的小さく、各次元で8〜16ポイントです(生成を高速化するためにボリュームを小さくしていますが、特定の時間に多くの画面が表示されます)。等値面をボリュームの2倍の解像度にすることを簡単に検討したので、各ポイントにはより多くの頂点(理論的には8)があり、テクスチャリングが簡素化される可能性があります。ただし、それによってブレンドが簡単になるとは思えません。
サーフェスを作成するために、OpenGL用の視覚化ライブラリとそのマーチングキューブおよびボリュームシステムを使用しています。ジオメトリをうまく生成しました。テクスチャを作成する方法を理解する必要があります。
これを効率的に行う方法はありますか?もしそうなら、何ですか?そうでない場合、ボリュームのテクスチャリングを処理するためのより良い方法のアイデアを誰かが持っていますか?
編集:注意してください、テクスチャは単に色のグラデーションではありません。それは実際にはテクスチャであり、通常はパターンがあります。したがって、それをマッピングすることの難しさ、グラデーションは些細なことだったでしょう。
編集2:問題を明確にするために、いくつかの例を追加します。彼らは物事を混乱させるかもしれないので、明確な事実以上のすべてを考慮し、可能であればこれらを助けてください。
私のジオメトリは常にキューブになっています(キューブにロード、生成、保存されます)。形状が可能な解決策に影響を与える場合は、それだけです。
地形に対して行われるスプラッティングと同様の手法で、パターンや色(ポイントの「タイプ」に応じて固有のもの)で構成されるテクスチャをジオメトリに適用する必要があります(ただし、これは地形ではないため、同じ手法を使用できるかどうかわからない)。
シェーダーはすばやく簡単な解決策ですが、前述したように、可能であればシェーダーは避けたいと思います。主に互換性と開発時間のわずかな増加のために、固定機能パイプラインで使用できるものが望ましいです。わずかな増加にすぎないため、必要に応じてシェーダーとマルチパスレンダリングを使用します。
他に説明が必要かどうかはわかりませんが、必要に応じて質問を更新します。