Ich würde gerne eine Software schreiben, die Bilder aus prozeduralen Texturen zusammensetzt. Für ultimative Flexibilität möchte ich auf diese Texturen über eine API zugreifen/erstellen.
In der Vergangenheit habe ich POV-Ray für grundlegende Texturen verwendet, ich habe die kostenlose Version von Genetica verwendet und seine Voreinstellungen optimiert, und ich habe auch das Resynthesis GIMP-Plugin verwendet , um Texturen aus Fotos zu generieren oder Texturen aus anderen Quellen zu verarbeiten. Diese Tools sind alle großartig, aber ich bin an einen Prozess zum Erstellen einer Texturbildbibliothek gebunden, wenn ich lieber Textur-„Rezepte“ mithilfe von Parametern erstellen möchte. Jetzt habe ich gelernt, was ich mit diesen Tools machen möchte, ich möchte einen Schritt zurücktreten und Code schreiben, der die Arten von Texturen generiert, die ich brauche, und eine Bibliothek mit Parametern für diesen Code pflegen.
Anforderungen:
API/Bibliothek für C, C++ oder Ruby (fühlen Sie sich frei, andere für allgemeines Interesse hinzuzufügen, insbesondere wenn Open-Source, aber ich werde nicht in der Lage sein, sie für meine Zwecke zu akzeptieren).
Unterstützt das PNG-Format, einschließlich Alphakanal, oder kann mit einer Bibliothek verknüpft werden, die dies tut.
Kontrolle auf der Ebene von Texturprimitiven, verschiedenen Arten von Rauschen, Farbkarten, Bump-Maps usw.
Kombination von Texturprimitiven auf Layer- oder Knotenbasis.
Voreinstellungen oder Beispiele für einfache naturalistische Texturen - Stein, Holz, Wasser, Schlamm, Gras.
Die resultierenden Texturen müssen nicht fotorealistisch sein, aber nah genug für die Verwendung in einer einfachen Spielumgebung.
Schön zu haben: Kann verwendet werden, um unverzerrte kachelbare Texturen zu erstellen.
Absolut am besten: Könnte in Vielfalt und Qualität mit Genetica (oder einer ähnlichen kostenpflichtigen App) mithalten, aber eine Open-Source-Bibliothek, keine kostenpflichtige Anwendung.
Nicht wichtig: Geschwindigkeit. Ich werde Texturen als Teil eines Nicht-Echtzeit-Workflows generieren und berücksichtige weder Frames pro Sekunde noch CPU-Kosten. Wenn es 30 Sekunden dauert, um einen Bildschirm voller Textur zu erzeugen, ist das wahrscheinlich in Ordnung. Qualität und Flexibilität sind viel wichtiger als Schnelligkeit.
Update: Ich wurde nach dem Workflow gefragt. Ich betrachte die Verwendung einer Textur-API als Teil eines zweistufigen Prozesses:
Generieren/untersuchen Sie Texturen, indem Sie sie entweder manuell erstellen oder Variationen ausprobieren. Ich würde gerne eine bereits vorhandene GUI mit einer Verwaltungsoberfläche, Steuerelementen wie Schiebereglern usw. hier nehmen. Ebenso kann ich meinen eigenen weniger anspruchsvollen Explorer direkt aus einer API erstellen. Texturen, die mir gefallen, werde ich mit einer ID und einigen Metadaten speichern.
Um die Texturbibliothek zu verwenden, beabsichtige ich, Software zum automatischen Generieren und Rendern von Bildinhalten zu schreiben (kein Raytracer oder Game-Engine, aber auf einer ähnlichen Ebene zum Generieren von Pixelwerten). Dies können Karten für Spiele, UV-gemappte Texturen für Objekte zum Rendern an anderer Stelle oder einfach nur abstrakte Kunst sein. Diese Software wählt geeignete Texturen aus der Bibliothek aus und muss sie rendern, idealerweise mit eindeutigen zufälligen Seed-Werten (oder Rausch-Offset-Vektoren), bevor sie auf die richtige Stelle in einer Szene oder einem Objekt abgebildet wird. Das Problem mit einer vorgerenderten Texturbibliothek besteht hier darin, dass genau die gleichen Pixel immer wieder verwendet werden würden.
Da ich Ihren Workflow nicht genau verstehe, kann mein Vorschlag völlig falsch sein, aber basierend auf den von Ihnen gestellten Anforderungen schafft es Blender (obwohl es sich um eine Open-Source-3D-Software handelt) mit einigen Ausnahmen ziemlich gut.
Es ist in C/C++ geschrieben, hat aber statt Ruby eine Python-API .
Andererseits hat es ein leistungsfähiges knotenbasiertes Texturierungs-/Materialsystem mit vielen prozeduralen Texturen und Operatoren, PNG- und Alpha-Unterstützung usw. Es hat keine eingebauten naturalistischen Texturen (es ist jedoch einfach, diese hinzuzufügen).
Mawg sagt, Monica wieder einzusetzen