Eine Kettenaufgabe

26 Aug.

Am Anfang war eine Tür

Weil sich der Spieler auf einem Raumschiff aufhält werden auch Türen und Fahrstühle benötigt. Also habe ich in Blender fix einen Fahrstuhl gezimmert, nach UE importiert und mit Nudelcode versehen, so dass der Fahrstuhl hochfährt, verweilt und wieder nach unten fährt. Also nichts besonderes.
Da ich dieses Mal meinem Motto treu bleibe, mich nicht beim Modeln in Details zu verlieren, mache ich einfache Platzhaltergrafik.

Bei der Tür dachte ich mir, komm, die machst’e etwas hübscher. Also über Pinterest Ideen gesammelt und mich zügig für eine Tür entschieden. In Blender nachgebaut, UVs gemacht und ab nach UE. Cool, läuft wie geschmiert. Die Türblätter sind einfache Rechtecke, haben aber zumindest einen Bevel bekommen. Daraus wieder einen Actor gebastelt und nun geht die Tür auf, wartet 3 Sekunden und geht wieder zu. Bis dahin lief alles super und ich war im Flow.

Dann kamen … ID-Cards

Dann kam ich auf die Idee ID-Karten einzubauen. Irgendwie gehören für mich ID-Karten zu einem Raumschiff. Außerdem macht es das Spiel wieder etwas interessanter, wenn man nicht sofort über all hin kann.
So ein System dürfte auch keine große Sache sein, dachte ich mir und legte los.

In Blender habe ich mir wieder eine Platzhaltergrafik erstellt. Obwohl ich mich nicht in Details verlieren wollte, gehören für mich auf so eine Karte auch das Gesicht vom Karteninhaber.
Fotografieren wollte ich nicht, zum Zeichnen habe ich kein Talent und so habe ich BlueWillow ausprobiert und mir ein paar Bilder von Spaceheroes machen lassen. Die Ergebnisse waren absolut brauchbar.

OK, Textur fertig, ab nach UE, ein Material erstellt und der Karte zugewiesen. Anschließend habe ich den Nudelcode angepasst. Und schon wieder ein Erfolgserlebnis. Tür bleibt verschlossen wenn man keine Karte hat und öffnet sich wenn man sie vorher aufgenommen hat.

jetzt kommt Farbe ins Spiel

Ich war begeistert wie gut alles bis zu diesem Punkt geklappt hat. Kurz darauf überlegte ich mir, dass es ein mehrfarbiges System sein müsse. Zudem wurde mir bewusst, dass die Textur der ID-Karte eine Auflösung von
1024 x 1024 hatte. Wenn ich 4 Farben umsetzen wollte, dann ist das die reinste Verschwendung für ein Handyspiel.

4 UV Maps nach UE

Also wieder zurück zu Blender, die UVs der ID-Karte um 0,5 verkleinert und links unten in die Ecke geschoben. Insgesamt habe ich mir 3 weitere Kopien der UV-.Map erzeugt links oben, rechts oben und rechts unten platziert. Das neue Modell mit den 4 UV-Maps nach UE exportiert und kontrolliert ob alle UV-Channels den Import „überlebt“ haben. Dem war auch so. Ich war guter Dinge, weil bislang alles wie am Schnürchen lief.

denkst’e

Doch hier endete meine Glückssträne.

Mein Ziel war es einen Actor zu machen, das Mesh der ID-Karte zuzuweisen und über eine Variable im Eigenschaftenfenster den Farbcode der Karte zu steuern. Ich dachte, wenn ich nur lange genug suche finde ich ein Tutorial, mit den Blueprints die ich brauche.
Um es abzukürzen, ich habe einige Abende lange gesucht und nichts gefunden, um per Blueprint im Material die UV-Channels zu verändert. Meine Recherche führte mich dann zu den „Material Instances“. Nach längeren hin und her und viel herumprobieren habe ich es geschafft.
Die Lösung setzt sich aus einem Material, dynamic Branch die man leicht über Scalar-Parameter steuern kann zusammen. Hier ein paar Bilder, die die Lösung skizzieren.

Elegant ist anders

Die Umsetzung ist in meinen Augen nicht elegant. In meinen Augen hätte es etwas geben müssen das ich die UVs direkt beeinflussen kann. Von einem Experten der Unreal Engine bin ich noch extrem weit entfernt, aber ich glaube, dass es keine andere Lösung gibt und es sicherlich technische Gründe gibt warum es nicht direkt geht.

Mein Ziel habe ich am Ende erreicht und es macht mir Spaß Türen im Editor zu setzen, ID-Karten zu verteilen, die Farben zu setzen und alles Funktioniert wie gewünscht.

Lange Zeit Abwesend

02 Feb.

… aber mit zwei großartige neue Quellen zurück

Eines vorab. Ich gebe hier meine eigene, persönliche und vor allem unbezahlte Meinung wieder!

Ein sehr lange Zeit ist aus verschiedensten Gründen auf der Seit nichts passiert. Das Projekt selber ist jedoch nicht Gefahr. In der Zwischenzeit habe ich, wie es meine Art ist, mich weiter nach nützlichem umgesehen. Dabei bin ich auf zwei extrem gute Dinge gestoßen, die ich Euch nun vorstellen möchte.

Erstens:
Auf YouTube folge ich schon seit langem Josh Gambrell. Er stellt sehr regelmäßig neue Videos auf seinem Kanal bereit. Sein Schwerpunkt liegt auf Hard Surface Modeling und er zeigt sehr bereitwillig seinen Workflow. Abgesehen von seinen bevorzugten Tools (Hardops und Boxcutter) hat er auch genügend Tutorials, die sich auf das reine Blender-Toolset beschränken (Vanilla Blender). Wie sein Name vermuten lässt sind seine Tutorials auf Englisch aber er ist, meiner Meinung nach, sehr gut zu verstehen. Wenn ich das aus einem seiner Videos noch richtig in Erinnerung habe, dann lebt er in Orlando und studiert Mathe. Darüber hinaus macht er noch so viele nützliche Tutorials für die Blendercommunity und das konstant über so einen langen Zeitraum, das verdient einfach meinen Respekt und Anerkennung.

Erst vor Kurzem bin ich auf seine Webseite BlenderBros aufmerksam geworden, die er und sein Kumpel Ponte Ryuurui betreiben. Auch dort gibt es freies Material jedoch liegt der Schwerpunkt der Seite auf große umfangreiche und detaillierte Tutorials, die man kaufen kann.
Für gewöhnlich meide ich alles Kostenpflichtige, weil 3D, Blender, Unreal meine Hobbies sind und ich damit kein Geld verdiene, jedoch habe ich hier einmal eine Ausnahme gemacht.

Warum?

Weil:
Es dort extrem detaillierte Tutorials gibt, die auf den Workflow für Games ausgerichtet sind. Also genau das Thema mit dem ich mich gerade befasse. Die Techniken um die es geht, schienen mir für meinen Weg extrem hilfreich zu sein. Darüber hinaus, und was mich letztens auch zum Kauf einiger der Videos überzeugt hat, war dass auch auf die Aspekte des Designs eingegangen wird. Im Prinzip ein rundum sorglos Paket für mich.

Ich habe mich für die Pakete The Hard Surface Game Asset Course, Hard Surface UV Unwrapping und The Blender Bros Design Course entschieden. Der Rabatt, der einem für 3 Tage nach der Registrierung zugestanden wird plus der für mich gute Umrechnungskurs Euro – Dollar machten mir die Entscheidung für den Kauf einfacher.

In den Tutorials werden einige grundlegende und hilfreiche Settings in Blender gezeigt, es wird, na klar, gemodelt und alles außerordentlich gut erklärt. Auf das beheben von „shading“-Problemen, wird sehr genau eingegangen. Was mir nie bewusst war, ist, dass man die Models besser vorher in Blender trianguliert, bevor man sie in Game-Engines importiert.
UV-Mapping, ein Lieblingsthema noch zu Maya-Zeiten von mir, wird ebenso ausführlich behandelt. Seinen Ansatz fand ich äußerst bemerkenswert.
Einen ebenso großen Schwerpunkt hat das none-destructive modeling. Anders als in Photoshop, wo mir diese Arbeitsweise klar ist, fehlte mir in Blender immer der Ansatz, wie ich das beim Modeln umsetze.

Zweitens:
Unter Anderem wird auch das Tool Quixel Mixer in dem Workflow verwendet. Das hatte ich erstaunlicherweise bislang noch gar nicht auf dem Schirm gehabt. Glücklicherweise ist es kostenlos und gehört inzwischen ebenso zum „Unreal-Kosmos“. Von nun an werde ich mich auch damit beschäftigen, da es massiv beim Texturieren der Modells unterstützt.

Nach meinen bisherigen Recherchen bietet Quixel Mixer keine Baking-Möglichkeiten. Dabei bin ich jedoch auf dieses Tutorial gestoßen, in dem extrem detailliert der Baking-Prozess (Normals, Ambient Occlusion, Curverture und Ids) erklärt wird. All das sind Vorarbeiten für die Verwendung in Quixel Mixer.

Das hier gezeigte Vorgehen, werde ich mir ebenso aneignen. Gemäß dem Motto meiner Webseite „warum sollt ihr nach etwas Suchen, das ich schon gefunden habe“ hier das Video.

Auf einmal nur noch schwarz

12 Sep.

Nachdem ich die Zeitersparnis beim „Kanten abwetzen“ beim ersten Testen des Nodesetups aus meinem letzten Beitrag feierte, möchte ich es für meine Texturen des Containers einsetzen. Allerdings… Aufeinmal zerstöre ich mir beim Baken alle meine Texturen. Alle werden mit schwarz überschrieben. Zugegebener Maßen war es auch schon wieder recht spät. Ich näherte mich der Geisterstunde, versuchte aber trotzdem dahinter zu kommen warum dies geschieht.

Was habe ich vorher gemacht.

Abgewetzte Kanten sind das eine, aber ich wollte ihn noch weiter verbessern. Ich wollte auf dem Container Beschriftungen anbringen, und überlegte wie ich es mit Blender umsetze. Zuerst dachte ich, ich könnte anstelle eines Brushes, ähnlich wie in Photoshop, direkt auf ein Text-Werkzeug umschalten den Cursor positionieren und loslegen…. Leider nicht.
Ich bin bei meiner Recherche auf den Stencil gestoßen. Also habe ich mir auf einer großen Vorlage in verschiedenen Schrifttypen jeweils die Ziffern 0 – 9 geschrieben, flugs in Blender wieder eine separate Textur für die Schrift angelegt und die Labels auf den Container angebracht.
Dadurch wirkte es wieder ein klein wenig authentischer.
Danach wollte ich mir alles zusammen auf eine Textur (Grundfarbe, abgewetzte Kanten und die Schrift ) baken und plötzlich wurde die Textur mit Schwarz übermalt.
Also lag die Vermutung nahe, dass ich mit den Einstellungen für den Stencil irgendetwas verstellt habe, und setzte alles wieder zurück … ohne Erfolg.

Die simple Lösung

Ok, um es abzukürzen. Es hat etwas gebraucht bis ich den Tatsächlichen Grund gefunden habe. Tagsüber bin ich ja ein normaler arbeitender Mensch und erst in den Abendstunden verwandele ich mich in den Game-Dev….

Im Principled BSDF – Shader habe ich mit den Metallic- und Roughnesswerten herumgespielt. Dabei habe ich das Material auf spiegelnd gestellt. Nun ja, was sieht man auf einer spiegelnden Oberfläche wenn um einen herum alles schwarz ist — ??? genau.

Also Rätsel gelöst Warnstufe wieder runter und die Texturen wieder in Ruhe aufbauen.

UV unwrapping, Texturen für mobile

06 Sep.

und wie es sich auf mobiles verhält.

An den ersten 3D-Objekten arbeite ich inzwischen. Ein einfacheres Model, ein Container, in dem sich die Behälter mit den Rohstoffen befinden, ist fertig und gestern Abend habe ich mich mit dem UVs in Blender beschäftigt. Bei meinem Streifzug durch das Internet und den vielen YouTube-Videos habe ich aufgeschnappt, dass man aus Performancegründen einem Model nicht mehrere Materialien mitgeben soll. Dabei musste ich an ein Tutorial denken, das ich vor längerer Zeit von Grant Abbitt gesehen habe.

In dem Tutorial hat er ein altertümliches Haus gemodelt. Es bestand aus Wänden, Balken, Fenstern und dem Dach. Alle Objekte waren eigenständig und hatten eigene Materialien. Er zeigte wie er diese auf ein neues Material, einer UV-Map und nur einer Textur zusammengefasst hat. Auf diesem Blog werde ich meine Arbeitsschritte beschreiben, welche Lösungen ich zu meinen Problemen gefunden und vor Allem welche Tutorials mir dabei geholfen haben. Daraus wird sich eine Linkliste entwickeln, die ich Euch gebündelt zu Verfügung stelle.

Heute also die ersten Links für die Liste.

Der erste Link führt zu seinem ersten Video zu dem Thema, das er im Jahr 2018 gemacht hat.
Es wird wohl Blender 2.79 gewesen sein.

Das zweite Video ist ein Update. Hier ist er mit der aktuellen Version von Blender zu Gange.

Wie erscheinen 3D-Modelle lebendiger

06 Sep.

The hard way vs. the easy way

Wie schon einmal erwähnt habe ich ein paar Modelle erstellt. Unter anderem einen Container. UVs sind fertig und nun habe ich mich an die Texturen gemacht. Ich versuche meine Arbeitsschritte so zu gestalten, dass ich später auch noch Änderungen vornehmen kann. Demnach bringt es nichts alles auf eine Textur zu pinseln. Im Augenblick sieht meine Herangehensweise so aus, dass ich mir im Shading-Tab für die Grundfarbe einen RGB-Node nehme.

the hard way

Da es schon spät in der Nacht war, kurz vor 0:00 habe ich nur schnell etwas die Kanten des Models abgewetzter erscheinen lassen wollen. Also neue Textur erstellt, ausgewählt und auf der die Kanten des Models mit Weiß abgefahren. Schön unordentlich. Nachdem ich schon eine Weile die Kanten abgefahren bin, habe ich beide Texturen mit dem MIX-RGB zusammengeführt. Es wirkte schon richtig gut. Von dem kleinen Erfolg beflügelt habe ich als nächstes eine weitere Textur erstellt auf der ich die Bereiche abdunkele wo sich Kanten innen treffen. Ich kann es gerade nicht treffender beschreiben.

Die „Kanten abfahren“ hört sich so einfach an, aber ich habe schnell gemerkt, dass mich alleine der Prozess sehr viel Zeit kosten wird, Das muss doch auch prozedural zu machen sein.
Mein Wissen um die diversen Nodes im Shadingeditor ist noch stark eingeschränkt, habe jedoch schnell vom Geometry-Node gehört, dass mit dem Pointiness-Wert der „abgenutzte-Kanten-Effekt“ erreicht werden kann. Nach einer Weile des Probierens habe ich abgebrochen weil ich feststellen musste, dass ich es nicht hinbekomme.

the easy way

Heute in der Mittagspause habe ich nach „edge detection“ gesucht und ein Video gefunden in dem ein Nodesetup vorgestellt wird was meinen gesuchten Effekt erzeugt. hier ist der Link zu dem Video. In der Beschreibung des Videos gelangt man zum Download des Blendfiles mit dem Nodesetup.
Ich habe es heute gleich an meinem Container ausprobiert und es funktioniert ausgezeichnet.

Als letztes Schritt zu mehr Lebendigkeit wollte ich noch Verschmutzungen durch eine ambient occlusion map automatisiert hinzufügen. Nach einigem Experimentieren war ich jedoch mit dem Ergebnis nicht zufrieden und habe kurz entschlossen die Verschmutzungen per Hand auf eine eigene Image-Texture gemalt.

Hier nun das erste Ergebnis des Containers mit den abgewetzten Kanten, Labels und Verschmutzungen