Resumen
Necesitaba la capacidad de generar rápidamente un mosaico a partir de un mapa de altura. Un mapa de altura es esencialmente una imagen en escala de grises. Si piensas en cada uno de los valores de 'píxel' que representan un valor 'z' para un vértice en una malla, puedes imaginar aplicar esos valores z, y lo que obtienes es una malla transformada en un 'paisaje'.
Esta cosa es solo un perfeccionamiento adicional de la técnica en OpenScad.
Aunque estoy destacando la técnica al aplicarla a lo que parece un paisaje, también la he aplicado a la renderización de fuentes. Hay un par de formas de hacer fuentes en OpenScad. Una es usar un 'mapa de bits' y, esencialmente, hacer un mapeo de altura, representando cada píxel como un cubo.
Otro método es usar la información de la fuente, y usar los contornos para dibujar realmente polígonos y extruirlos linealmente.
Sin embargo, una tercera forma es usar una herramienta para exportar los contornos de la fuente a un archivo .dxf, y luego cargarlos desde allí con un extrusión lineal.
Lo que puedes hacer aquí es tomar la fuente, generar imágenes en escala de grises de cada carácter, en un formato que es esencialmente código OpenScad. Luego aplica esas imágenes a una malla, al igual que un paisaje, y ¡tienes fuentes extruidas!
Lo genial de esta técnica generalizada es que puedes usarla para cualquier cosa. La rutina te da un control absoluto sobre el tamaño y la resolución. Así, por ejemplo, usando la misma imagen básica en escala de grises, puedes imprimir a 48x48 milímetros, con una resolución de 4 facetas por milímetro. Eso sería genial si estás imprimiendo en una máquina con una resolución de capa de .
Las imágenes aquí demuestran la técnica que se aplica tanto al terreno como a los personajes.
Hay dos rutinas, que se pueden encontrar en el archivo MeshRenderer.scad:
shell_extrude_height_map() - Para ser utilizado cuando la información de tu mapa de altura está representada por valores individuales.
shell_extrude_color_map() - Para ser utilizado cuando la información de tu mapa de altura aún es en escala de grises, pero representada por tríos.
Oh, sí, y uno de los parámetros de esta rutina: solid=true.
Eso significa que mientras estás creando prototipos, puedes decir 'solid=false', y simplemente generará una superficie poligonal. Luego, cuando hayas terminado de jugar, puedes decir 'solid=true', y obtendrás un sólido 2-manifesto adecuado que luego puedes presionar 'F6' y salir a dar un paseo.
Lo sé, son muchas palabras, pero mira las bonitas imágenes!! La escena de la montaña de resolución 64x64 tardó 5 horas en renderizarse. La de 48x48 tardó aproximadamente 1,5 horas.
NOTA: Aunque puedo generar fácilmente caracteres individuales usando esta técnica, en realidad generarlos en masa como se muestra en la imagen tiene algunos problemas. La estructura termina no siendo 2-manifesta. Planeo mejorar los aspectos generales del manejo de texto más adelante. Pero, la técnica básica de mapeo de altura seguirá siendo la misma.