2016-03-24 11 views
1

3Dメッシュ処理用にVTKを使用しています。私はメッシュを持っており、削減を行うにはvtkDecimatePro()関数を使用しています。関数自体は、TargetReductionを受け取ります。これは、三角形(パーセンテージ)の数の減少に関連しています。問題は、固定数の頂点を持つ必要があることです。たとえば、すべてのメッシュに2000頂点が必要です。現在私はopenflipperと呼ばれるソフトウェアでこれを行っています。これはデシメーションを固定数の頂点に制限することを可能にします。しかし、VTKではこの作業をどのように達成するのかはわかりません。VTKでデシメーションした後に一定数の頂点を取得する方法

ありがとうございます。

答えて

1

希望の頂点数を設定することはできません。そのようには機能しません。目標削減量は近似値であり、は正確にの頂点数になるとは限りません。お返事のための

+0

おかげで@mirniが、私は機能を考えて、

ミロを

// desiredN is the desired number of vertices after reduction double f = static_cast<double>(desiredN)/poly->GetNumberOfVertices(); //... decimate->SetTargetReduction(1.0 - f); // We want to preserve topology so that reduction factor applies to vertices // (otherwise it prescribes reduction in number of faces) decimate->SetPreserveTopology(1); 

HTH _SetTargerReduction_:

あなたは何ができるか、非常に単純に減少係数を計算して、それを設定されています三角形(Not Vertices)の数の減少係数です。私はその方法でそれを使用しており、三角形の数の削減は問題ありません。しかし、私は頂点の数の減少を修正することができませんでした。私はOpenFlipperでこれがどのように行われているのか疑問に思っています。なぜならそこでは必要な頂点の数を定義することができますし、それまではその数の頂点で常にメッシュを生成します。 –

+0

Roger、頂点と面の数はオイラーの公式を使ってトポロジカルな不変量を結んでいるので、トポロジーを維持すると、vertsの数と面の数は同じ量だけ変化するはずです。バーテンの数と比較して少数の穴/ハンドルを有するマニホールド。 実際には、n個のvertsとn個の顔が一貫して変化するように、デシメイトフィルタで 'SetPreserveTopology(1)'を使いたいとします。 – mirni

+0

ありがとう、テストを今すぐ行う –

関連する問題