スポンサーリンク
VCG LibraryのBall Pivotingを使用してみます
#include <vcg/complex/algorithms/create/ball_pivoting.h>
int X = 50; int Y = 50; auto itr = vcg::tri::Allocator<MyMesh>::AddVertices(mesh,X*Y); for (size_t x = 0; x < X; x++) { for (size_t y = 0; y < Y; y++) { double d1 = rand() % 100 / 2000.0; double d2 = rand() % 100 / 2000.0; double d3 = rand() % 100 / 7000.0; double dx = x / (double)X; // 0.0 ~ 1.0の範囲にする double dy = y / (double)Y; itr->P().X() = dx + d1; itr->P().Y() = dy + d2; itr->P().Z() = d3; ++itr; } }
double radius = 0.05; double clustering = 0.03; tri::BallPivoting<MyMesh> pivot(mesh, radius, clustering); pivot.BuildMesh();
BPAは既に存在する点群に対して実行します。
radiusはボール径です。radiusによって結果が大きく変わります
VCG LibraryのBall Pivotingでメッシュ生成
VCG Library ターゲットの周辺のオブジェクトを取得