3d - reparar - netfabb español
Colorear los bordes de la malla en meshlab (2)
He estado trabajando en un algoritmo que toma una malla, hace algunas cosas sofisticadas con él, y produce algo de salida.
Para visualizar el resultado, decidí producir una copia de la malla, colorearla de una manera inteligente que de alguna manera esté relacionada con la salida producida, y visualizarla con Meshlab. Sin embargo, necesito colorear algunos de los bordes de la malla de forma diferente a los demás.
Después de buscar en Google durante varias horas, no he podido encontrar la manera de hacerlo, aunque los formatos de archivo (.obj, .ply ...) parecen apoyar este comportamiento, como lo sugiere este tutorial (que seguí para producir la malla de salida).
He producido un trabajo alternativo, es decir, a cada vértice le asigno el color de uno de los bordes adyacentes, y luego simplemente coloreo los bordes según el color del vértice, pero desafortunadamente, esto significa que (por ejemplo) los bordes que son de dos colores diferentes se mostrarán con un degradado de un color al otro, que no es el comportamiento previsto.
¿Estoy haciendo algo mal aquí? (Como ignorar alguna opción obviamente obvia). O, alternativamente, ¿hay una forma alternativa de renderizar la malla que permita teñir los bordes (eso no implica codificar el renderizador propio o pasar 3 días recorriendo el manual de la licuadora buscando la combinación de teclas correcta)?
Cualquier ayuda sería bienvenida. Gracias por adelantado.
Como el OP ha mencionado, MeshLab tiene una disposición para colorear los bordes con el color seleccionado por el usuario (el mismo color para todos los bordes) o con el color de vértice / cara (el borde que se conecta a vértices con colores diferentes tendrá un color de degradado). Se puede hacer habilitando la representación de Wireframe
y seleccionando el color de borde de las opciones.
Sin embargo, MeshLab no admite la representación de los bordes con un atributo de color de borde específico. Podría estar equivocado, pero los formatos populares de malla simple como obj
y off
no tienen una disposición para almacenar atributos de borde (color, grosor, etc.). Estaba bajo la impresión de que la ply
tampoco es compatible con esto, pero el enlace proporcionado por OP dice lo contrario.
La única solución que puedo pensar es escribir tu renderizador OpenGL para dibujar líneas en lugar de triángulos. Y al escribir la malla, escriba vértices para cada borde con el color de borde asignado a ellos, es decir, si tiene 3 bordes conectados a un vértice, ese vértice se repetirá tres veces.
Encontré un truco que en su mayoría me hizo el trabajo.
Aquí va: tome la malla original, y para cada borde haga un nuevo punto que sea solo el punto medio de este borde. Conecte ambos vértices del borde a este punto medio para formar un triángulo degenerado de área cero. Agregue este triángulo, y este punto al archivo de malla. Lo adivinaste, colorea este nuevo vértice con el color del borde.
Una vez que juegue con la configuración de color de fondo de meshlab, podrá ver la malla de color de borde razonablemente bien.
(Lo único que todavía estoy tratando de averiguar es cómo aumentar el grosor de las líneas para que parezca más claro. En este momento, puede ir a la vista de vértice y ver que los nuevos puntos se iluminan muy bien con los colores de los bordes )