2014-12-01 28 views
5

Sto provando a generare i dati della nuvola di punti da mesh come il file (.obj) di Maya. Ma, ho potuto scoprire solo il caso opposto, la nuvola di punti su rete. Esiste un modo per creare "dati della nuvola di punti dalla mesh" utilizzando strumenti 3D come MeshLab o Maya? (preferisco usare MeshLab)Posso generare Point Cloud dalla mesh?

Grazie. :)

+0

Quale formato di file stai cercando di produrre? – theodox

+1

Non importa il formato di output. Voglio solo ottenere i dati della nuvola di punti. –

risposta

2

Il Point Cloud Library ha un paio di diversi strumenti da riga di comando per trasformare le mesh in nuvole di punti, per quanto ne so rendendo l'oggetto in punti da un insieme di viste e combinando i rendering. ad es. pcl_mesh2pcd, pcl_mesh_sampling

+0

Grazie per la risposta. –

+0

Ma, sto cercando di fare ciò che hai detto, ho un problema. Voglio convertire obj mesh in pcd. Ma pcl_mesh2pcd e pcl_mesh_sampling si verificano l'errore (Program just dye ... TT). Cosa posso fare? –

+0

Si potrebbe provare ad aprire un'altra domanda che mostra quegli errori. Forse qualcun altro ha avuto un problema simile, forse ci sono alcuni bug, forse alcuni bitrot l'hanno impostato, ecc. Qualcuno dovrebbe essere in grado di aiutare. Non ho personalmente utilizzato questi strumenti e attualmente non ho PCL installato, ma potrei essere in grado di aiutare se vedo gli errori. –

2

È interessante notare che non ci sono risposte definitive a questa domanda sul web.

La conversione da una mesh a una nuvola di punti è non simile a inceppare i vertici della mesh in una nuvola di punti! La mesh è una rappresentazione sparsa di una nuvola di punti. Pertanto, per convertire una mesh in una nuvola di punti, è necessario campionare i punti sulla superficie della mesh. PCL ha un'utilità per farlo chiamata pcl_mesh_sampling. Il codice sorgente è located here.

Fondamentalmente, il metodo campiona i punti N in modo uniforme dalla superficie della mesh utilizzando VTK. È molto efficace e otterrai nuvole di punti con qualsiasi numero di punti che desideri.

1

Ero alla ricerca del problema simile. Avevo bisogno di proiettare il modello mesh in pose diverse per generare dati pointcloud.

E poi ho trovato il seguente progetto in github. Se qualcuno vuole generare pointclouds (.pcd) da un oggetto mesh ( .obj) in varie pose, questo sarebbe di aiuto.

Questo simula il pointcloud in formato kinect per l'oggetto mesh specificato.

https://github.com/jbohg/render_kinect

1

Conversione di una maglia Triangulated a una nuvola di punti significa che si vuole fare un campionamento punto su quella superficie. A seconda della distribuzione richiesta (ad esempio Montecarlo Uniforme, Disco di Poisson, ecc.) Ci sono diversi algoritmi con risultati piuttosto diversi. Ad esempio, se hai bisogno di un punto casuale ben distanziato, hai bisogno di una distribuzione del disco di Poisson. Puoi testare alcuni di questi algoritmi all'interno di meshlab o direttamente sul tuo browswer su http://www.meshlabjs.net/ (basta caricare una mesh e digitare "campionamento" nella casella di ricerca).

Si può trovare un'implementazione sorgente C++ aperta all'interno della libreria di elaborazione della maglia VCG (http://www.vcglib.net) e una descrizione di questi algoritmi (abbastanza semplice da attuare) in:

campionamento efficiente e flessibile con il rumore blu proprietà di maglie triangolari
M Corsini, P Cignoni, R Scopigno
IEEE Transactions on visualizzazione e Computer Graphics 18 (6), 914-924
http://vcg.isti.cnr.it/Publications/2012/CCS12/

2

Il progetto gratuito e open source CloudCompare può caricare mesh OBJ e quindi generare nuvole di punti sulla mesh, che è possibile quindi salvare in una varietà di formati.

+0

Questo è il metodo migliore che ho visto finora, una buona distribuzione dei punti e anche il mantenimento dei valori RGB dal modello. Sarebbe ancora meglio se potesse mantenere anche i normali vettori, ma pochissimi software di cloud point supportano la normale ombreggiatura al momento. Metodo: importa obj, seleziona mesh, modifica/modifica mesh/punti campione – David

0

Volevo fare lo stesso, ma ho preferito qualcosa che può essere fatto facilmente in Python. Ho trovato questo post davvero utile. Usa una libreria Python chiamata pyntcloud. Carica una mesh in formato .ply e campiona un numero specifico di punti da essa in modo casuale in modo che copra la superficie in modo più o meno uniforme. Può essere facilmente adattato per altri formati. L'ho fatto per i file .off e funziona bene.