Tengo una pregunta difícil muy buena & para usted. Necesito alinear dos mallas usando un algoritmo muy rápido. Dada mesh1 y mesh2, quiero encontrar cómo necesito trasladar y rotar mesh1 para estar en la misma posición de mesh2. Primero hice esto usando momentos de inercia de las dos mallas, pero el algoritmo no funciona si la segunda malla es similar a la primera, pero faltan algunas partes. En otras palabras, tome dos mallas idénticas y de una de ellas corte las mismas partes.cómo alinear dos mallas
Me gustaría escribir el código en C porque necesito hacerlo en máquinas multiplataforma (linux/win) y hacerlo de una manera muy rápida: tiene que ponerse en un algoritmo GA.
Las dos mallas están en formato STL (estereolitografía) (binario o ascii) pero quizás pueden ser útiles utilizando otro tipo de formato de archivo.
¿Tiene alguna idea de cómo realizar esto?
actualización pregunta:
primer lugar quiero darles las gracias mucho por todas sus sugerencias. Descargué una PCL de instalación en mi máquina y compilé el algoritmo ICP (tutorial) con éxito, tomado del sitio web de PCL. Pero ahora tengo algunas preguntas sobre eso, tal vez porque para mí es algo completamente nuevo. ¿Cuál es el significado de la salida de matriz 4x4 para la aptitud? Debería esperar una matriz rotativa y un vector traslacional.
Espero que algunos de ustedes me puedan ayudar. Si necesita cualquier otra información, pregunte.
Así que, básicamente, ¿quieres un algoritmo que calcula la matriz de transformación que transforma mesh1 lo más cerca posible en mesh2? Además: ¿La única forma en que se edita una malla es la eliminación de partes o se pueden mover y agregar vértices? – Nobody
@ Nadie Estoy calculando la matriz de transformación que compara los momentos de inercia de los dos cuerpos, pero cualquier otra cosa que coloque mesh1 sobre mesh2 está bien. En conclusión, necesito encontrar la posición más cercana de mesh1 respecto a mesh2, que da el valor mínimo de distancia entre los dos. – Nicholas
Para cualquiera que (como yo) se tropiece con esto mucho más tarde, es útil notar que ICP es más efectivo cuando la correlación es alta y la diferencia es baja porque ICP tiende a establecer soluciones incorrectas si tiene que mover una nube/malla demasiado lejos para llegar a la correcta. Esta es la razón por la cual, en general, se lleva a cabo algún tipo de paso de coincidencia de características aproximadas para obtener la transformación en las proximidades adecuadas. Desde ese punto, ICP es excelente para refinar el registro. – Matt