2010-11-23 5 views
2

私は、任意のサーフェスの交差によって定義されるインタラクティブな3D表現を作成しようとしています。私はこれでメッシュを作成する方法を理解するのに苦労しています(または、3Dボリュームを表現するために目指すべきメッシュよりも優れていますか?)。 SはF(X、Y、Z)= 0、=各表面Sは、ここで、それらのような平面、等球、円柱、円錐、の分析式によって与えられる。サーフェスの交差によって定義された3Dセルのモデリング

enter image description here

について各セルには、サーフェスのリストと各サーフェスの+/-センスがあります。これにより、x、y、z点がセルの内側にあるかどうかを簡単に判別できます。その点を各境界サーフェスの方程式に差し込み、その結果がすべての+サーフェスの場合+ - すべてのサーフェスの場合はポイント内部にある。明らかに、結果がゼロであれば、ポイントはそのサーフェス上にあります。

私は何千ものグリッドポイントをテストすることができます。各セルについて、そのセルの内側にあるポイントに注目し、そのポイントの最も外側のポイントを使用してそのセルのメッシュを作成します。しかし、私には何千もの細胞があり、これは単純には十分に速くはありません。多くのセルは他のセルと比べて非常に小さいか低いアスペクト比なので、私はこのようにするつもりならポイントの非常に細かいグリッドが必要です。

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

おかげで、 ニック

答えて

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) 

類似点は、エッジポイントとコーナーポイントを近似できるようにする必要があります。しかし、これらの種類の点をメッシュに結合する方法を理解することは難しいかもしれません...

関連する問題