Pagina 1 di 2
file stl da triangolazione 3d
Inviato: 1 giu 2012, 11:08
da scipio84
Buongiorno.
Descrivo brevemente il problema.
Ho un set di coordinate (x,y,z) di 2ooo punti che mi descrivono una semplice geometria solida.
Devo lavorarci sopra con dei volumi finiti, quindi ho ridotto la geometria a dei tetraedri usando una Triangolazione di Delaunay (che con matlab 2011 si può fare direttamente col comando TR=Delaunay(X), in cui X è la mia matrice di punti).
Ottengo così una matrice TR (n x 4)in cui vi sono tutti i punti dei tetraedri. Sembra abbastanza semplice fin qui. n mi pare sia di circa 13ooo.
Ora devo esportare ciò in un file stl per poter lavorare con un programma che mi crei le mesh necessarie al proseguimento del lavoro.
Come posso creare un file .stl? ho trovato indicazioni solo per descrizioni in 2D.
Come posso vedere la geometria passata in stl per verificarne l'esattezza?
Grazie mille!
Re: file stl da triangolazione 3d
Inviato: 1 giu 2012, 11:40
da lelerelele
non ho capito da dove saltano fuori quei 2000 punti, potrei presumere che sia stata una lettura scanner laser o qualcosa di simile,
ma allora avresti a disposizione il tutto su un file, ed in base questo dovresti procedere.....
comunque, per ciò che ti posso dire un programma di grafica 3d che abbraccia una quantità di formati compreso "stl" è rhinoceros, mi pare che lo diano in versione demo, (questo programma biascica di tutto se non ricordo male),
altrimenti questo formato viene letto da 3dsmax, e con questo ci ottieni animazione e ottimo rendering,
oppure lo puoi aprire con solidworks, che è un programma professionale per progettazione meccanica, stampi, lamiere, il formato di uscita può essere lavorato in CNC ed ottenere il pezzo, ma attenzione, se è questo che ti serve importando il formato STL non otterrai il tuo scopo in quanto da questo non si ottengono superfici lisce ma appunto come hai detto tu ottieni una infinità di facce piane e non puoi metterle in macchina a controllo.
se non ricordo male, il vecchio autocad, (ormai obsoleto almeno per la progettazione meccanica), aveva la possibilità di importare mappe di coordinate, ma non ne sono sicuro.
mi hai fatto venire un dubbio, ed anche solidowrks è in grado di aprire file di punti, originati da scansione, e con un po di lavoro si creano le mesh.
spero che con le poche info a diposizione ti possa essere d'aiuto.
Re: file stl da triangolazione 3d
Inviato: 1 giu 2012, 11:49
da scipio84
sì, la mappa di punti ce la ho già in un file txt da misurazioni precedentemente svolte.
devo farne una triangolazione 3d (quindi tetraedri) con matlab.
la 'mappa' di tetraedri a cui è ridotta la geometria devo metterla in formato stl, e questo è il mio problema.
quando avrò l'stl proverò solidworks, ho letto anche di stl viewer, che è gratuito.
Re: file stl da triangolazione 3d
Inviato: 1 giu 2012, 14:58
da xyz
Prova con Meshlab multi piattaforma e open source:
http://meshlab.sourceforge.net/sopporta molti formati 3D, permette la ricostruzione delle superficie 3D dati i soli punti con l'algoritmo "Poisson Surface Reconstruction", triangolarizza e semplifica le superficie.
STL (STereoLithography) è un formato 3D che sopporta solo triangoli.
Re: file stl da triangolazione 3d
Inviato: 1 giu 2012, 15:16
da scipio84
io però ho l'esigenza di farlo su matlab... tutt'al più Octave, ma non lo conosco abbastanza per mettermici a lavorare.
comunque, se l'stl è un formato che supporta solo triangoli, diventa impossibile l'esportazione della matrice di delaunay 3D risultante?
c'è una funzione matlab, "stlwrite", ma non riesco a farla funzionare correttamente (forse non ho capito come funziona...)
Re: file stl da triangolazione 3d
Inviato: 1 giu 2012, 16:51
da xyz
Non conosco cosa devi fare di preciso e ignoro le tue conoscenze sull'argomento ma STL serve solo a contenere triangoli, al massimo normali, niente di più.
L'algoritmo Delaunay ritorna i triangoli del Convex Hull della nuvola di punti usata come dati di partenza. Il Convex Hull non coincide in molti casi alla superficie dell'oggetto proveniente da una scansione laser, esistono altri algoritmi tra cui per me il migliore è quello indicato prima.
Citi una "matrice di delaunay 3D", non conosco questa matrice, di solito gli algoritmi di triangolarizzazione che usano l'algoritmo di Delaunay ritornano un subset dei punti di partenza raggruppati in gruppi di 3 che rappresentano i triangoli nel Convex Hull.
Io conosco molto bene Octave e indirettamente Mathlab ma da soli non sono in grado di eseguire elaborazioni 3D avanzate. Una delle migliori librerie sono le VTK, forse esistono delle interfacce per Mathlab o Ocatave. Un esempio di Delaunay 3D con le VTK:
http://www.vtk.org/Wiki/VTK/Examples/Cx ... Delaunay3Dcome puoi vedere l'agorimo Delaunay 3D dei punti del coniglio non coincide con la superficie del coniglio ma al suo Convex Hull.
Re: file stl da triangolazione 3d
Inviato: 1 giu 2012, 17:11
da scipio84
allora mi permetto di chiederti ancora qualcosa, visto che mi sembri ferrato (io non lo sono per niente...).
parto da una nuvola di punti, come ho detto definiti da x,y,z, che caratterizzano la mia geometria.
se utilizzo delaunay per discretizzare tale geometria solida, posso ottenere una serie di triangoli che "modellano" la mia superficie?
faccio questa domanda perché guardando delaunay vedo che assumendo i tre vettori mi genera solo dei tetraedri, mentre genera dei triangoli quando vengono introdotti due vettori x e y.
Re: file stl da triangolazione 3d
Inviato: 1 giu 2012, 19:51
da xyz
La prima parte della domanda ti ho già risposto, usare Delaunay 3D ottieni il
convex hull il quale può non coincidere con la superficie desiderata, dipende se sono presenti delle concavità.
Esistono altri algoritmi nati per la ricostruzione 3D di superfici a partire da una nuvola di punti. Uno dei migliori algoritmi è "Poisson Surface Reconstruction", questa è la pagina ufficiale, contiene la documentazione e il sorgente del programma:
http://www.cs.jhu.edu/~misha/Code/PoissonReconMeshlab lo include tra i numerosi filtri disponibili. Ignoro se esiste un altro algoritmo migliore.
Se il calcolo del Delaunay ti ritorna tetraedri allora non stati triangolarizzando superfici ma stati tetrahedralization volumi.
Re: file stl da triangolazione 3d
Inviato: 6 giu 2012, 9:43
da scipio84
sei stato molto chiaro, e in questi giorni sto provando questo algoritmo di poisson, per pura curiosità, perché può essermi d'aiuto.
Però mi è stato chiesto di fare un lavoro su matlab con determinate funzioni, per quanto peggiori

ti posso chiedere di dare un occhio a questa funzione e dirmi se, secondo te, partendo dalla terna di coordinate x-y-z dei miei n punti posso ricavarne una superficie triangolarizzata, in formato stl?
perché questa funzione stlwrite continua a crearmi problemi e a darmi risultati o risposte differenti...
http://www.mathworks.com/matlabcentral/fileexchange/20922-stlwrite-write-binary-or-ascii-stl-fileattenzione che la prima riga attiva di codice è da mettere dietro % (quella con narginchk) perché usa una funzione non valida, come nella successiva versione, che però usa una colorazione delle superfici che genera sempre problemi:
http://www.mathworks.com/matlabcentral/fileexchange/36770-stlwrite-write-binary-or-ascii-stl-file/content/stlwrite.m
Re: file stl da triangolazione 3d
Inviato: 6 giu 2012, 9:58
da cronos80
Esistono due visualizzatori che alcuni anni fa erano in grado di importare una nuvola di punti ed esportarla in STL, sfruttando le VTK: MayaVi e Paraview.
Con le VTK stesse e python (che usai io) o altri si può facilmente convertire da nuvola di punti ad STL.
Adesso non ho sottomano il codice che usai io, però ricordo la classe
vtkSTLWriter. C'è anche un esempio che prende un file VTK (generabile con mayavi o paraview o anche manualmente) e lo salva in STL.
