Me gustaría escribir algún software que componga imágenes a partir de texturas procesales. Para obtener la máxima flexibilidad, me gustaría acceder/crear esas texturas a través de una API.
En el pasado, usé POV-Ray para texturas básicas, usé la versión gratuita de Genetica y ajusté sus ajustes preestablecidos, y también usé el complemento Relysis GIMP para generar texturas a partir de fotografías o para procesar texturas de otras fuentes. Todas estas herramientas son geniales, pero me encierran en un proceso de creación de una biblioteca de imágenes de texturas, cuando preferiría estar creando "recetas" de texturas usando parámetros. Ahora que aprendí lo que quiero hacer con esas herramientas, quiero dar un paso atrás y escribir código que genere los tipos de texturas que necesito y mantener una biblioteca de parámetros para ese código.
Requisitos:
API/biblioteca para C, C++ o Ruby (siéntete libre de agregar otros por interés general, especialmente si es de código abierto, pero no podré aceptar para mis propósitos).
Admite el formato PNG, incluido el canal alfa, o se puede vincular con una biblioteca que lo admita.
Control a nivel de primitivas de textura, varios tipos de ruido, mapas de color, mapas de relieve, etc.
Combinación de primitivas de textura en una forma basada en capas o nodos.
Ajustes preestablecidos o ejemplos de texturas naturalistas simples: roca, madera, agua, barro, hierba.
Las texturas resultantes no necesitan ser fotorrealistas, pero sí lo suficientemente parecidas para usarlas en un entorno de juego simple.
Es bueno tenerlo: se puede usar para crear texturas enlosables sin distorsiones.
Absolutamente mejor: podría rivalizar con Genetica (o una aplicación paga similar) en variedad y calidad, pero una biblioteca de código abierto, no una aplicación paga.
No importante: Velocidad. Generaré texturas como parte de un flujo de trabajo que no sea en tiempo real y no consideraré los cuadros por segundo o el costo de la CPU. Si tarda 30 segundos en generar una pantalla llena de la textura, probablemente esté bien. La calidad y la flexibilidad son mucho más importantes que la velocidad.
Actualización: me han preguntado sobre el flujo de trabajo. Veo el uso de una API de textura como parte de un proceso de dos pasos:
Genere/explore texturas ya sea construyéndolas manualmente o probando variaciones. Con mucho gusto tomaría una GUI preexistente con una interfaz de administración, controles como controles deslizantes, etc. aquí. Igualmente, estoy bien para hacer mi propio explorador menos sofisticado directamente desde una API. Las texturas que me gustan, las almacenaré con una identificación y algunos metadatos.
Para usar la biblioteca de texturas, tengo la intención de escribir un software para generar y renderizar automáticamente el contenido de la imagen (no es un trazador de rayos ni un motor de juego, pero funciona a un nivel similar de generación de valores de píxeles). Esto podría ser mapas para juegos, texturas mapeadas uv para objetos para renderizar en otros lugares, o simplemente arte abstracto. Este software seleccionará las texturas adecuadas de la biblioteca y deberá renderizarlas, idealmente con valores semilla aleatorios únicos (o vectores de compensación de ruido) antes de asignarlos al lugar correcto en una escena u objeto. El problema con una biblioteca de texturas renderizadas previamente aquí es que exactamente los mismos píxeles se reutilizarían una y otra vez.
Dado que no entiendo exactamente su flujo de trabajo, mi sugerencia puede ser completamente incorrecta, pero según los requisitos que ha establecido, Blender (aunque es un software 3D de código abierto) prácticamente lo logra con algunas excepciones.
Está escrito en C/C++ pero en lugar de Ruby tiene una API de Python .
Por otro lado, tiene un poderoso sistema de texturas/materiales basado en nodos con muchas texturas y operadores de procedimiento, compatibilidad con png y alfa, etc. No tiene texturas naturalistas incorporadas (aunque es fácil agregarlas).
Mawg dice que reincorpore a Monica