2

任意のサーフェスの交差によって定義されるセルのインタラクティブな 3D 表現を作成しようとしています。これからメッシュを作成する方法を理解するのに苦労しています (または、3D ボリュームを表現するために目指すべきメッシュよりも優れたものがありますか?)。各面 s は、次のような s = f(x,y,z) = 0 として、平面、球、円柱、円錐などの解析式によって与えられます。

ここに画像の説明を入力

各セルには、サーフェスのリストと各サーフェスの +/- センスがあります。これにより、x、y、z ポイントがセル内にあるかどうかを判断するのは簡単です。そのポイントを各境界サーフェスの式に代入することで、その結果がすべての + サーフェスに対して + で、すべての - サーフェスに対して - である場合、そのポイントは中にあります。明らかに、いずれかのサーフェスで結果がゼロの場合、ポイントはそのサーフェス上にあります。

何千もの格子点をテストして、セルごとにそのセルの内側にある点に注目し、それらの点の最も外側を使用してそのセルのメッシュを作成できます。ただし、私は何千ものセルを持っているので、これでは十分に高速ではありません。多くのセルは、他のセルに比べて非常に小さいか、アスペクト比が低いため、この方法で行うには、非常に細かい点のグリッドが必要になります。

この方法で定義されたセルを静的な 3D モデルに配置する効率的な方法を提案できる人はいますか? この種のジオメトリ仕様で動作し、3D メッシュを作成できるライブラリはありますか? 明らかな何かが欠けていますか?

ありがとう、ニック

4

1 に答える 1

1

一般的な問題として、これは非常に難しい問題です。基本的には一般的な非線形計画問題だと思います。境界が任意の関数によって生成された場合、そのような関数が 1 つでも境界を接する任意の数のセルが存在する可能性があります。関数に関する詳細情報がなければ、グリッド ポイントをチェックする以上のことはできないと思います。

関数についてある程度知っていれば (たとえば、平面、球、円柱、および円錐はすべて円錐曲線である)、より適切に実行できる可能性があります。いずれにせよ、組み合わせアプローチから始めることをお勧めします。たとえば、任意の 3 つの境界が与えられた場合、3 つすべてが交差する点があるかどうかを判断します。

いずれにせよ、セルのコーナーとエッジを特定したら、グリッドベースのアプローチを使用してディスプレイ メッシュを構築できます。たとえば、軸に沿った平面でサーフェスをスライスして、頂点と三角形を決定し、選択した 3D グラフィックス ライブラリ。


別のアイデア: でサーフェスを定義しているのでf(x,y,z)=0、一連の点から始めて、ニュートン法ステップなどを使用して数値的に近くのサーフェスに移行できます。

point p = (x,y,z)
scalar value = f(p)
while abs(value) > epsilon:
  vector gradient = gradient_of_f(p)
  p -= gradient * (value / dot(gradient,gradient))
  value = f(p)

似たようなものを使用すると、エッジとコーナーのポイントを近似できるはずです。この種のポイントをメッシュに接続する方法を理解するのは難しいかもしれませんが...

于 2010-11-24T21:46:03.300 に答える