[AYUDA] Pasar de coordenadas XYZ a Nube de ptos

473 views
Skip to first unread message

jcmjul

unread,
Sep 15, 2014, 7:34:02 AM9/15/14
to asrob-uc3m-i...@googlegroups.com
Hola a todos

La pregunta es sumamente generica, basicamente tengo invento que consiste en una mesa XY con sensor de distancia, y mediante pasadas sobre un objeto, genero un array de coordenadas XYZ,

Esto tiene las limitaciones típicas, la primera la sensibilidad y la segunda es que solo lee en el plano XY es decir que solo vale para hacer trazas de una cara, de un solido, y basicamente lo que no tengo ni idea de por donde empezar a mirar para pasar ese array a un formato de nube de puntos.

Es decir como puedo generar un archivo de nube de ptos, o que formato deben de tener estos archivos o si hay alguna aplicación que lo genere.

Ya se que es una pregunta muy general, pero ando muy perdido, cualquier orientacion sobre hacia donde tengo que estudiar me seria de gran ayuda.

Gracias

Jose H

unread,
Sep 15, 2014, 8:28:36 AM9/15/14
to asrob-uc3m-impresoras-3d
Nube de puntos y coordenadas 3d es lo mismo.

El programa recomendable para hacer eso es meshlab:
http://meshlab.sourceforge.net/

Meshlab hace todo lo que quieras con ello, puedes crear superficies, simplificarlo, lo que quieras...

Para importarlo a meshlab lo más sencillo es que elijas un formato 3d textual de todos los que soporta meshlab, que son muchos y pases tus puntos a ese formato.

Los formatos de nube de punto suelen ser extremadamente sencillos, algo así como:

(0.00233, 9.78099,6.54641)
(0.01356, 3.73003,4.54672)
...

Si sólo reconoces 2 coordenadas pues le pones 0 a la coordenada Z y listo.

Jose H

unread,
Sep 15, 2014, 8:37:26 AM9/15/14
to asrob-uc3m-impresoras-3d

jcmjul

unread,
Sep 15, 2014, 11:21:35 AM9/15/14
to asrob-uc3m-i...@googlegroups.com
Gracias JoseH, le estoy pegando un vistazo y incluido al Meshlab, pero no parece sencillo, cargo los ptos pero luego el meshlab triangula como quiere, por ejemplo con 8 cordenadas he montado un cubo, pero el soft me hace una especie de Z, tan solo jugando con las herramientas he conseguido que me ponga el cubo, pero a la hora de exportar a stl me lo pone siempre como con forma de Z, seguiré trasteando a ver que consigo. He intentado el ejemplo del cubo que sale en la info pero  me da un error al cargar, cuestion de seguir con ello.

Gracias

Sergio MC

unread,
Sep 15, 2014, 12:24:17 PM9/15/14
to asrob-uc3m-i...@googlegroups.com
Ademas de las coordenadas x,y,z es clave a la hora de convertir en malla las normales (la perpendicular a la superficie) en cada punto. Sin ese dato es muy dificil obtener resultados satsfactorios.

Puedes probar en Meshlab Compute normals from pointcloud. (ahora mismo no recuerdo donde esta ese comando)

Prusaludos.

Jose H

unread,
Sep 15, 2014, 12:51:03 PM9/15/14
to asrob-uc3m-impresoras-3d
Julian, no tengo ni idea de qué es lo que quieres hacer en concreto.

Si añades información gráfica de que es lo que deseas hacer te podremos ayudar mucho mejor.

El lenguaje escrito es muy limitado. Puedes hacer un croquis o un dibujo y escanearlo o usar capturas de pantalla de tus datos representados de alguna forma.

Para hacer un cubo a partir de 8 puntos, se hace usando otros métodos. La nube de puntos se suele utilizar con mucha información redundante.

Hay una técnica que se llama "matching cubes" que se utiliza para generar superficies a partir de puntos booleanos, no se si es eso lo que quieres hacer:
http://en.wikipedia.org/wiki/Marching_cubes

Javier Loureiro Varela

unread,
Sep 15, 2014, 1:07:05 PM9/15/14
to asrob-uc3m-imp.
ese tipo de datos se usan en sistemas GIS, que se encargan de escanear cosas con laser en 3D. El formato en concreto no lo conozco, pero yo miraría que aplicación lo usa, y luego buscaria info del formato. Hoy en día se usan muchísimo en efectos especiales para iluminar. Software como houdini lo usan bastante.

"point cloud siggraph" te da muchísimos resultados de publicaciones sobre el tema. El mejor laboratorio que conozco que estudia ese tipo de cosas es el CRS4 de cerdeña http://www.crs4.it/

los marching cubes al menos hasta hace poco tenia patente. Se usan sobre todo cuando los puntos vienen a raiz de una formula. Yo no lo usaria porque te salen cosas flotando por aire un poco raras. Hay muchisimas formas de generar superficies a partir de puntos, es un tema bastante investigado (generar superficies, y luego optimizarlas).

En tu caso, tampoco es muy complicado.

1. Haces un grid de puntos x,y espaciados uniformemente (los vertices). El espacio te lo da la resolución de tu maquina.
2. generas la malla, considerando que 1 cuadrado se divide en 2 triangulos. Asi recorres XY y vas generando los triangulos.
3. Le das un valor Z a cada punto. Hay que samplear la altura en puntos uniformes (si no tienes una lectura en ese punto, haces la media de los puntos cercanos, filtrado con una campana de gauss por ejemplo)

una vez que tengas esa malla, se puede optimizar, hay muchos algoritmos que se usan en terrenos, para ese tipo de mallas (http://vterrain.org/ es una buena referencia)





Javier Loureiro Varela


--

---
Has recibido este mensaje porque estás suscrito al grupo "Clone Wars: Imprimiendo impresoras 3D" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asrob-uc3m-impreso...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a asrob-uc3m-i...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

furri

unread,
Sep 16, 2014, 4:32:43 AM9/16/14
to asrob-uc3m-impresoras-3d
Hola, no he usado el meshlab pero si hice hace tiempo un programa que pasaba de coordenadas a STL por lo que me puedo imaginar el proceso....

Imagino que el meshlab triangulará entre puntos por cercania, de manera que si escaneas por ejemplo un rostro, todos los puntos estarán en un plano, con altibajos que corresponderán a ojos, nariz, etc... asi te funcionará sin problemas, pero si pones los 8 vertices de un cubo, el programa (imagino) lo va a interpretar como que esos puntos estuvieran en un plano y el resultado es esa figura extraña en forma de Z.






El 15 de septiembre de 2014, 17:21, jcmjul <julian.car...@gmail.com> escribió:
Gracias JoseH, le estoy pegando un vistazo y incluido al Meshlab, pero no parece sencillo, cargo los ptos pero luego el meshlab triangula como quiere, por ejemplo con 8 cordenadas he montado un cubo, pero el soft me hace una especie de Z, tan solo jugando con las herramientas he conseguido que me ponga el cubo, pero a la hora de exportar a stl me lo pone siempre como con forma de Z, seguiré trasteando a ver que consigo. He intentado el ejemplo del cubo que sale en la info pero  me da un error al cargar, cuestion de seguir con ello.

Gracias

--

---
Has recibido este mensaje porque estás suscrito al grupo "Clone Wars: Imprimiendo impresoras 3D" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a asrob-uc3m-impreso...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a asrob-uc3m-i...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
"los numeros imaginarios son el equivalente matematico a creer en las hadas"

furri

unread,
Sep 16, 2014, 4:36:57 AM9/16/14
to asrob-uc3m-impresoras-3d
Perdo.... el mensaje seguia...

Si a esos 8 vertices añades unos cuantos puntos correspondientes a las superficies de cada una de las 8 caras, seguro que el meshlab tiene información suficiente para hacerte el cubo que buscas.

Saludos.


jcmjul

unread,
Sep 16, 2014, 4:47:31 AM9/16/14
to asrob-uc3m-i...@googlegroups.com
Hola a todos,

En primer lugar gracias por el interés, y la ayuda prestada, intento explicarme algo mejor desde donde me he quedado atrancado,

Lo del cubo, lo probé por hacer "algo" y ver como funcionaba, en los ejemplos de JoseH, hay uno de un cubo donde no solo dan los ptos sino que tambien las caras, y aunque no me funciona me imagino que algo estaré haciendo mal.

Realmente lo que estoy intentando hace es, con una serie de ptos capturados sobre una superficie, creo un documento con x,y,z, concretamente tengo 12300 coordenadas, con estas coordenadas en ASC lo cargo con el Meshlab y visualizo la superficie, el tema es que no sé como hacer un solido valido de esa superficie, ya que solo es una trama de ptos sin "cuerpo", como se puede ver en la imagen, es una capa fina, ahora lo que querria es hacer algo parecido a una extrusion en AutoCad, para darle volumen y poder sacarlo en STL para imprimir. Como podeis ver en el documento, Z tiene un valor minimo de 10 mm, porque basicamente es el grosor de la placa, pues querria poder hacer desde el plano XY (Z=0) que tomara "cuerpo"

Scan.asc

Jose H

unread,
Sep 16, 2014, 7:34:50 AM9/16/14
to asrob-uc3m-impresoras-3d
Bueno, hay varias formas de hacer eso, pero ya que programas puedes hacerlo por programación.

Por cada punto creas un punto adicional con la misma coordenada x e y, pero con offset -Z mms, creando un suelo, así podrás crear una forma tridimensional fácilmente.

Si las paredes laterales no las hace bien haciendo un fix of holes siempre puedes añadir puntos a los laterales del point cloud.

Para ello te quedas con los puntos de los extremos, o bordes, que son los puntos de mínimo x y mínimo y, al haber creado el suelo anterior habrá dos puntos por cada coordenada X,Y extrema.  Calculas la distancia Z entre el punto superior y el punto suelo proyección del anterior(aunque lo más probable es que sea fija) y creas 10 puntos por cada unidad de distancia, por ejemplo 10 cada milímetro de forma que se distribuyan uniformemente a lo largo de toda la pared lateral.

De esta forma puedes crear un mesh sólido por ejemplo con el método de reconstrucción de las bolas pivotantes muy fácilmente que podrás exportar como un stl a cualquier programa 3d, aunque probablemente quieras simplificarlo antes.

Hacer esto lleva mucho más trabajo escribirlo y explicarlo en un correo que hacer el código.

Jose H

unread,
Sep 16, 2014, 7:38:36 AM9/16/14
to asrob-uc3m-impresoras-3d
Todo lo anterior me refiero a hacerlo en programación, primero crear puntos adicionales  en suelo o en offset, y luego crear puntos en la pared. Es muy muy sencillo de programar. En cualquier lenguaje son 15 minutos máximo.

Javier Loureiro Varela

unread,
Sep 16, 2014, 6:43:31 PM9/16/14
to asrob-uc3m-imp.
eso lo tienes que resolver en programacion... con python por ejemplo (al menos no conozco un software que lo haga, pero seguramente exista algo asi)

como te digo, el problema es que tanto la x como la y no tienen una estructura regular. Puedes generar puntos xy uniformes, y averiguar la Z que le corresponde

mira la estructura del wavefront obj. Es una lista de vertices (la nube de puntos) y de caras. Las caras referencian los vertices. Es sencillo de generar si vas recorriendo xy.

te manejas en python o algo asi?




Javier Loureiro Varela


2014-09-16 13:38 GMT+02:00 Jose H <jose.franc...@gmail.com>:
Todo lo anterior me refiero a hacerlo en programación, primero crear puntos adicionales  en suelo o en offset, y luego crear puntos en la pared. Es muy muy sencillo de programar. En cualquier lenguaje son 15 minutos máximo.

--

Jose H

unread,
Sep 17, 2014, 3:47:00 AM9/17/14
to asrob-uc3m-impresoras-3d
Bien, te he hecho una cara de una pared para que veas la idea:

https://dl.dropboxusercontent.com/u/60399143/salida.asc

Recuerda que al importarlo en meshlab en el diálogo que aparece que pone "Pre-Open Options" NO DEBES de activar la casilla "Grid triangulation" marcada por defecto. Así podrás ver los puntos bien.

Te faltan las otras tres paredes(no te lo voy a hacer yo todo). El código en c que hace esto es este:
https://dl.dropboxusercontent.com/u/60399143/supercutre.c

Es muy sencillo de entender con que tengas las mínimas nociones de programación, así que supongo que no tendrás problema en entenderlo. Si no pregunta.

Reply all
Reply to author
Forward
0 new messages