Cleaning up sample prog

This commit is contained in:
Paolo Cignoni 2016-06-09 10:46:10 +00:00
parent ef724af624
commit 121d356fbf
5 changed files with 412 additions and 403 deletions

View File

@ -1,6 +1,8 @@
DEPENDPATH += . ../../.. DEPENDPATH += . ../../..
INCLUDEPATH += . ../../.. INCLUDEPATH += . ../../..
CONFIG += console stl CONFIG += console c++11
TEMPLATE = app TEMPLATE = app
# Mac specific Config required to avoid to make application bundles # Mac specific Config required to avoid to make application bundles
CONFIG -= app_bundle CONFIG -= app_bundle
QMAKE_CXXFLAGS += -std=c++11

View File

@ -98,7 +98,7 @@ void example2(){
// normally, faces with more than 4sides are split into parallelograms // normally, faces with more than 4sides are split into parallelograms
// this merges them (optional, try removing it!) // this merges them (optional, try removing it!)
vcg::tri::PolygonSupport<MyMesh,int>::MergeFlatFaces(m); vcg::tri::PolygonSupport<MyMesh,MyMesh>::MergeFlatFaces(m);
int savemask = vcg::tri::io::Mask::IOM_BITPOLYGONAL; int savemask = vcg::tri::io::Mask::IOM_BITPOLYGONAL;
vcg::tri::io::ExporterOFF<MyMesh>::Save(m,fullMeshFilename,savemask); vcg::tri::io::ExporterOFF<MyMesh>::Save(m,fullMeshFilename,savemask);

View File

@ -1,6 +1,8 @@
#include <iostream> #include <iostream>
#include <QTime> #include <QTime>
#ifdef _OPENMP
#include <omp.h> #include <omp.h>
#endif
#include "nanoflann.hpp" #include "nanoflann.hpp"
@ -77,21 +79,25 @@ void testKDTree(CMesh& mesh, std::vector<unsigned int>& test_indeces, std::vecto
vcg::ConstDataWrapper<CMesh::VertexType::CoordType> wrapperVcg(&mesh.vert[0].P(), mesh.vert.size(), size_t(mesh.vert[1].P().V()) - size_t(mesh.vert[0].P().V())); vcg::ConstDataWrapper<CMesh::VertexType::CoordType> wrapperVcg(&mesh.vert[0].P(), mesh.vert.size(), size_t(mesh.vert[1].P().V()) - size_t(mesh.vert[0].P().V()));
vcg::KdTree<CMesh::ScalarType> kdTreeVcg(wrapperVcg); vcg::KdTree<CMesh::ScalarType> kdTreeVcg(wrapperVcg);
std::cout << "Build: " << time.elapsed() << " ms" << std::endl; std::cout << "Build: " << time.elapsed() << " ms" << std::endl;
int nn=1;
// Computation of the point radius // Computation of the point radius
float mAveragePointSpacing = 0; float mAveragePointSpacing = 0;
time.restart(); time.restart();
#pragma omp parallel for reduction(+: mAveragePointSpacing) schedule(dynamic, 10) #pragma omp parallel for reduction(+: mAveragePointSpacing) schedule(dynamic, 10)
for (int i = 0; i < mesh.vert.size(); i++) for (int i = 0; i < mesh.vert.size(); i++)
{ {
#ifdef #ifdef _OPENMP
nn =omp_get_num_threads();
#endif
vcg::KdTree<CMesh::ScalarType>::PriorityQueue queue; vcg::KdTree<CMesh::ScalarType>::PriorityQueue queue;
kdTreeVcg.doQueryK(mesh.vert[i].cP(), 16, queue); kdTreeVcg.doQueryK(mesh.vert[i].cP(), 16, queue);
float newRadius = 2.0f * sqrt(queue.getWeight(0)/ queue.getNofElements()); float newRadius = 2.0f * sqrt(queue.getWeight(0)/ queue.getNofElements());
mesh.vert[i].R() -= newRadius; mesh.vert[i].R() -= newRadius;
mAveragePointSpacing += newRadius; mAveragePointSpacing += newRadius;
} }
std::cout << "Num trhread " << nn << std::endl;
mAveragePointSpacing /= mesh.vert.size(); mAveragePointSpacing /= mesh.vert.size();
std::cout << "Average point radius (OpenMP) " << mAveragePointSpacing << std::endl; std::cout << "Average point radius (OpenMP with" << nn << " threads) " << mAveragePointSpacing << std::endl;
std::cout << "Time (OpenMP): " << time.elapsed() << " ms" << std::endl; std::cout << "Time (OpenMP): " << time.elapsed() << " ms" << std::endl;
queryDist = mAveragePointSpacing * 150; queryDist = mAveragePointSpacing * 150;
@ -403,9 +409,10 @@ void testOctree(CMesh& mesh, std::vector<unsigned int>& test_indeces, std::vecto
int main( int argc, char * argv[] ) int main( int argc, char * argv[] )
{ {
if (argc < 2) if (argc < 2) {
std::cout << "Invalid arguments" << std::endl; std::cout << "Invalid arguments" << std::endl;
exit(-1);
}
CMesh mesh; CMesh mesh;
if (vcg::tri::io::Importer<CMesh>::Open(mesh, argv[1]) != 0) if (vcg::tri::io::Importer<CMesh>::Open(mesh, argv[1]) != 0)
std::cout << "Invalid filename" << std::endl; std::cout << "Invalid filename" << std::endl;