Seite 1 von 1

Procedural Texture Generation

Verfasst: 30.05.2024, 12:33
von Jonathan
Hi,

hat jemand von euch viel Erfahrung mit prozeduralen Texturen? Spezifisch, was für Tools empfehlen sich da?

Industriestandard dürfte Substance Designer sein, aber das eigentlich gute Tool wurde ja leider von Adobe aufgekauft, und ist jetzt Teil der Creative Cloud, i.e. Schutzgelderpressung: "Oh, eine schöne Textur hast du da gemalt, wäre doch schade, wenn du sie nächsten Monat nicht mehr öffnen könntest, na dann bezahl mir mal lieber jeden Monat 25 € damit sowas nicht passieren muss." Im Geschäftsumfeld mag das ja vielleicht sogar was Produktivität angeht ein guter Deal sein, aber ich mach das halt Hobbymäßig. Jetzt mal für 2 Wochen, vielleicht in nem halben Jahr nochmal kurz und in 5 Jahren will ich dann nochmal in meine alten Projekte reinschauen. Die Abhängigkeit von Software Abos ist da einfach ein absolutes No-Go. Was wirklich schade ist, denn ich hab mal damit rumgespielt und es ist schon toll...

Dieses Node-Based Modelling ist ja eigentlich gar nicht so schwer zu implementieren, und es ist auch irgendwie ein fancy Projekt (ähnlich wie Voxel 3D Welten) und jeder zweite Hobbynerd hat gefühlt irgendein Freewaretool zusammengetippt, mit dem man prozeduralen Texturen klicken kann. Aber bevor ich Zeit ins Lernen investiere, wüste ich doch gerne, wie zukunftssicher das ganze ist: Ist das Tool mächtig genug um nicht nach einen Monat wieder wechseln zu wollen, weil einfach so vieles fehlt? Und: Ist das Projekt populär genug um auch in ein paar Jahren noch Updates zu bekommen, so das es zumindest auf modernen Systemen noch läuft?

Als erstes kam mir Blender in den Sinn, das ist ja ziemlich gut in prozeduralen Materialien, aber mir scheint der Fokus liegt dort wirklich auf dem Material, nicht der Textur. Sprich, Texturen sind eher Input und es geht dann eher um Shader Effekte. Ich will aber ja am Ende das ganze in meiner Engine rendern, da brauche ich Colormaps und Normalmaps und kann nur auf die paar Shader zurückgreifen die ich halt schon implementiert habe. Mal ganz abgesehen davon, dass ich in Blender modelliere, dann i.d.R. nach GLTF exportiere und das wiederum mit Assimp importiere - da wirklich komplexe Materialien durchzuschleusen, die in Engine dann aussehen wie in Blender ist kniffelig. Aber das passt schon, für jetzt will ich erstmal nur ein paar nette Texturen basteln und verwenden.
Und ja, natürlich kann das Blender auch, aber wenn es wirklich nur um Texturen geht macht das halt keinen Spaß. Ich hätte doch lieber was, was von den Node-Typen und der Benutzerführung wirklich auf Texturen ausgelegt ist. Blender hat ja nichtmal einen Blur-Node, weil das nicht Echtzeit-Kompatibel ist...

Das augenscheinlich beste Tool, das ich fand, ist Material Maker. Das scheint bekannt zu sein, es scheint eine Menge zu können, aber auf den ersten Blick sehen die meisten Texturen deutlich cartooniger und weniger aufwändig aus, als was man von Substance Painter findet. Was aber auch daran liegen könnte, dass weniger echte Profis es benutzen.

Kennt oder benutzt ihr noch anderes?

Re: Procedural Texture Generation

Verfasst: 31.05.2024, 09:32
von smurfer
Wahrscheinlich etwas spartanischer als das, was du suchst, aber ich habe ganz gerne mit FastNoise2 rumgespielt.

Re: Procedural Texture Generation

Verfasst: 31.05.2024, 10:15
von joeydee
"hat jemand von euch viel Erfahrung mit prozeduralen Texturen?" - Prinzipiell ja, in letzter Zeit mache ich da aber sehr wenig.
"Spezifisch, was für Tools empfehlen sich da?" - Mit den Bedingungen die du stellst kenne ich leider auch nichts.

Früher halt hauptsächlich mit PSD, da waren aber auch noch nicht so viele BSDF-Maps im Einsatz. Heute wäre der Workflow auch nicht mehr das Wahre.

Ins Blender-Materialsystem habe ich mich nie allzu tief eingegraben. Aber ja, Blur musst du natürlich so lösen wie du es auch in einem eigenen Shader lösen würdest. Oder irgendwie nen Workflow aufbauen mit Baking und Image-Blur, aber das wird wohl eher unhandlich.

Ich hatte hier mal ein Sheet verlinkt, da werden auch Alternativen zu Substance aufgeführt (Stand '21), aber habe mich da nie durchprobiert. Berichte bitte, wenn du da neue Erfahrungen sammelst :)

Re: Procedural Texture Generation

Verfasst: 31.05.2024, 10:26
von joeydee
P.S.:
"auf den ersten Blick sehen die meisten Texturen deutlich cartooniger und weniger aufwändig aus"
Schätze, das kann auch am Preview-Renderer liegen, also wie der Shader die Maps interpretiert. Raytraced BSDF mit allem Drum und Dran wird da natürlich einen echteren Look haben, schätze einfach mal da wirds einen gewissen Unterschied zwischen den beiden geben.

Am Ende exportierst du aber ja nur die Maps, also:
"Ich will aber ja am Ende das ganze in meiner Engine rendern, da brauche ich Colormaps und Normalmaps und kann nur auf die paar Shader zurückgreifen die ich halt schon implementiert habe"
... schätze, auch eine Substance-Textur würde in deiner Engine dann deutlich "cartooniger" aussehen als im Substane-Preview oder in Blender Cycles.

Re: Procedural Texture Generation

Verfasst: 04.06.2024, 23:58
von Jonathan
Danke für die Rückmeldungen.
smurfer hat geschrieben: 31.05.2024, 09:32 Wahrscheinlich etwas spartanischer als das, was du suchst, aber ich habe ganz gerne mit FastNoise2 rumgespielt.
Joah, ich glaube gerne, dass das gut für Noise-Sachen ist, aber deine Bretter- oder Ziegelstein- oder Blättertextur machst du damit halt wohl eher nicht.
joeydee hat geschrieben: 31.05.2024, 10:15 Ich hatte hier mal ein Sheet verlinkt, da werden auch Alternativen zu Substance aufgeführt (Stand '21), aber habe mich da nie durchprobiert. Berichte bitte, wenn du da neue Erfahrungen sammelst :)
Danke, das hatte ich vergessen, obwohl ich es damals eine coole Übersicht fand. QuixelMixer ist aber seit ein paar Jahren tot und den Source-Code scheint es auf den ersten Blick auch nicht zu geben, damit haben sie die Alternativen dann irgendwie erschöpft. Hmg.

joeydee hat geschrieben: 31.05.2024, 10:15 Ins Blender-Materialsystem habe ich mich nie allzu tief eingegraben. Aber ja, Blur musst du natürlich so lösen wie du es auch in einem eigenen Shader lösen würdest. Oder irgendwie nen Workflow aufbauen mit Baking und Image-Blur, aber das wird wohl eher unhandlich.
Das Problem mit Blur im Material ist meinem Verständnis nach folgendes: Physikalisch haben Materialien keine Farbe, sondern bloß "Modifier" fürs reflektierte Licht. Ein Objekt kann nur blau aussehen, wenn im beleuchtenden Licht Blauanteile vorhanden sind. Ein Blur im Material verusracht als Branching im Pathtracing, man kann den nicht vorberechnen, weil er für jeden Pixel unterschiedlich von der kompletten Szene abhängt. Das gilt genauso für diffuse Materialien, aber n-mal Branching ist halt viel schlimmer wie einmal. Bilder hingegen kann man fast schon trivial sehr effizient mit 2-Pass Filter sehr effizient blurren. Substance-Designer hat Dinge wie Image warp. In Blender kann man auch auf Texturkoordinaten zugreifen und irgendwelche Mathefunktionen darauf werfen, aber das erscheint mir deutlich fummeliger.

Ich habe Material Maker ausprobiert und, naja, der Workflow ist halt leider deutlich schlechter. Viele Sachen könnte man vermutlich simpel anpassen. In Blender kann man einen neuen Node auf eine Verbindung ziehen, in Material Maker muss man die alte Verbindung händisch löschen und zwei neue ziehen. In Blender kann man auf einen Variablenwert klicken und durch Mausbewegung den Wert anpassen und das Ergebnis in Echtzeit sehen (alles ist ein Slider). Material Maker kann das auch, dafür kann man aber nicht mehr einzelne Ziffern markieren und überschreiben. Man muss die Zahl also immer neu eintippen. Sind diese Beispiele absolute Kleinigkeiten? Jein. Künstlerisches Design lebt von vielen Iterationen, man muss ausprobieren, bis es gut aussieht. Wenn ausprobieren nervig ist, macht man 2 Änderungen anstatt von 10, danach ist man genervt. Das Ergebnis ist eine schlechtere Textur.

Substance Designer hat auch dieses echt nette Feature, dass Zwischenergebnisse als Vorschaubild in jedem Node angezeigt werden. Hat man mehr als 5 Nodes (was man immer hat) findet man so sehr viel schneller die Stelle, die man bearbeiten will. Das ist simpel und toll und weder Blender noch Material Maker scheint das zu können.

Leider scheint sich der Material Maker Autor dazu entschlossen zu haben, auch noch Objekt-Painting zu implementieren (wie Substance Painter). Es geht ihm wohl wesentlich mehr darum, möglichst viele Dinge irgendwie anzubieten, anstatt ein sinnvolles Subset wirklich effizient nutzbar umzusetzen. Das Ergebnis ist ein Programm, dass alles ein wenig, aber nichts auf nützlichem Niveau kann. Nichtmal das Speichern funktioniert vernünftig, weil es statt des Windows-Standard-File-Dialogs irgendein selbstgebastelten Quatsch der Godot-Engine kann, bei dem ich 15 Klicks mehr brauche um den richtigen Pfad einzustellen. Bevor man etwas richtig schlecht umsetzt, sollte man sich einfach die Arbeit komplett sparen und die Variante benutzen die keine Zusatzarbeit erfordert und ziemlich toll funktioniert. Meine Güte...

Um einen Eindruck der Mächtigkeit zu bekommen, habe ich dann mal ein komplexes Material für Material Maker runtergeladen und geöffnet. Dabei ist das Programm abgestürzt. Damit hatte ich meinen Eindruck und hatte für den Tag keine Lust mehr.

Vielleicht lässt mich das Thema ja nicht mehr los und ich beteilige mich an dem Projekt, das ist ja schließlich die Idee hinter Open Source. Aber ganz so ernst meine ich es dann vlt. doch nicht...

Re: Procedural Texture Generation

Verfasst: 05.06.2024, 09:48
von joeydee
Zusammengefasst, kostenlose Alternativen sind im Detail dann doch nicht ganz so gut/bequem/umfangreich/professionell wie der gebührenpflichtige Platzhirsch von dem sie abkupfern.


Ja.

Re: Procedural Texture Generation

Verfasst: 05.06.2024, 17:27
von Jonathan
joeydee hat geschrieben: 05.06.2024, 09:48 Zusammengefasst, kostenlose Alternativen sind im Detail dann doch nicht ganz so gut/bequem/umfangreich/professionell wie der gebührenpflichtige Platzhirsch von dem sie abkupfern.
Naja, ehrlich gesagt sind die meisten Programme die ich benutze kostenlos und in der Regel ziemlich gut und weniger nervig als die kommerziellen. Blender ist z.B. super. Oder git. Ich hab auch immer Python anstatt Matlab verwendet, weil ich das einfach überall installieren kann und mich nicht unterwegs per VPN mit dem Lizenzserver der Uni verbinden muss. Ab und zu fehlen vielleicht ein paar Pakete, aber insgesamt fand ich dass immer sehr viel stressfreier. Ein Kollege hatte beispielsweise immer seinen PC laufen lassen (ganzjährig), damit er immer Matlab laufen lassen konnte, damit er immer eine Lizenz blockieren konnte, weil er sonst manchmal Matlab nicht hätte verwenden können. Ich hätte kaum ein Problem damit, 120€ für eine Softwarelizenz zu zahlen, ich hab einfach primär kein Bock auf den ganzen Nervkram kommerzieller Software. Und da ist Adobe eben ganz vorne mit dabei...