[Projekt] Eigenes kleines Paint- und 3D-Tool

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von Jonathan »

Sehr anschauliche Bilder. Klar kennt man den Effekt von Beleuchtung irgendwie schon, aber ihn nochmal so deutlich zu sehen ist doch irgendwie nett :)

Zu deinem Problem: Ja, sehr gut nachvollziehbar. Ich habe neulich Instancing implementiert. Das ist eigentlich auch überhaupt nicht schwer, aber es muss halt vernünftig integriert werden. Das ist nervig und es führt kein Weg dran vorbei, dass man einiges Debuggen werden muss, aber es lohnt sich halt und muss daher gemacht werden. 2 Tipps:
- OpenGL ist als State-Machine ja nicht sehr robust. Evtl. kann man Zeit sparen, erstmal ein Minimal-Working-Example zu bauen (d.h. Projekt kopieren und alles raus schmeißen außer dem Zeichnen eines simplen Objektes. Das dann auf Shader umstellen und sicherstellen, dass alles klappt). Dann hat man zumindest eine Referenz, was man in welcher Reihenfolge wie aufrufen muss und kann später sicherstellen, dass das komplizierte Framework letztendlich genau das tut.
- Wenn man es direkt einplant, ist es nicht so schwer, Shader zur Laufzeit aus Textdateie zu laden und neu zu kompilieren. Man kann die zwar auch mit OpenGL Debuggern zur Laufzeit ändern, aber trotzdem ist das ein sehr nützliches Feature für die Entwicklung.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von joeydee »

Ich glaube ich habe mich falsch ausgedrückt :) - Shaderbasiert ist mein Framework bereits seit Jahren ausschließlich. Trotzdem kann man im Shader ja kein Blending selbst berechnen, der "Untergrund" ist ganz einfach nicht bekannt - im Shader gibt man nur RGBA aus, das Blending selbst wird ja auf separater Schiene gelöst mittels BlendFunc etc. Und das muss ich jetzt in den Shader holen, das sind einige Umbauten/Erweiterungen in der Pipeline. Vor allem, da ich Framebuffer erst seit Kurzem (quick & dirty) drin habe und die Usage jetzt allgemeiner ausbauen muss, damit es auch diesen Fall erschlägt.

Aktuell:
Für alle Layer
- BlendFunc einstellen
- Layer rendern

Erstmal angedacht:
Disable Blending
2 Framebuffer (FB) anlegen
Für alle Layer
- Rendertarget: FB1
- Sampler: Layer und FB2
- Layer mit passendem Ebenenmodus-Shader rendern (z.B. (FB1=)out.color=FB2.rgb+Layer.rgb für "ADD")
- für den nächsten Pass FB1 und 2 wechseln (d.h. in jedem Pass wird das letzte Renderergebnis wieder als Sampler reingegeben)

Eventuell irgendwann mal:
- Alle Layer in Sampler-Array stecken
- Alle Layereinstellungen in Uniform-Arrays
- Multi-Shader loopt über die Arrays und switcht je nach Layer-Modus
- (1 Pass)

(FB-Blending müsste in meinem Fall deshalb gehen, da sich innerhalb von einem Pass keine Geometrie überlappt)
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von Jonathan »

Achja, klar. Das mit den Blendfunktionen war eigentlich eindeutig genug, nur ist bei mir im Hirn wohl irgendwas mit dem Pattern-matching schief gegangen und ich hab sofort mit irgendwelchen simplen Tipps losgebrabbelt, die eigentlich nicht gut zum Thema passen. Aber so ist das wohl, wenn man zur Erholung ist Forum schaut und eigentlich nur nach einer Gelegenheit sucht, über irgendetwas einfaches zu reden.

Ich würde auch denken, dass der zweite Ansatz leicht aufwändiger zu programmieren ist. Die Frage ist halt, ob es irgendwann mal Fälle geben wird, wo man nicht einfach nacheinander alle Ebenen kombinieren kann (also z.B. 3 Eingaben braucht, oder so). Denn ansonsten sieht es so aus, als ob der zweite Ansatz mehr Speicher braucht, aber dafür nur einen Durchgang. Aber ich würde vermuten, dass bei dir keins von beiden einen großen Performanceunterschied ausmachen wird.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von joeydee »

Fillrate vs. Shader-Komplexität wäre ein Knackpunkt, vermute ich.
Mehrere beliebige Eingaben gleichzeitig: ist noch nicht dringend um endlich generell mal damit arbeiten zu können, aber künftig auch nicht auszuschließen.
Womit aber noch die 3. Möglichkeit in Betracht käme, statt 1 Megashader mit Switches: den Shader jeweils neu dynamisch zusammensetzen und kompilieren sobald sich was an den Ebenen und Modi geändert hat. Das wären ja zeitlich punktuelle Eingriffe, nicht frameweise.

Danke für deinen Input, das lässt mich in mehrere Richtungen weiterdenken!

Rein experimentell sind die eingebauten Blend-Equations auch noch nicht durch. Die waren für mich noch nie wirklich intuitiv, ich musste mich gestern echt dazu zwingen mich mal näher mit sinnvollen Kombis jenseits dem üblichen "add" (one/one) und "blend" (scrAlpha, oneMinusSrcAlpha) zu befassen.
Neu erfahren: wenn man mit premultiplied Alpha arbeitet, geht z.B. Multiplizieren durch (Zero, SrcColor) oder alternativ (DstColor, Zero), die Equation wird dadurch zu 0*a+a*b(=a*b) bzw. b*a+0*b(=a*b).
"Premultiplied" heißt hier, eine Textur mit Aplhakanal wird zuerst auf einen Vollton-Hintergrund in der neutralen Farbe des Ebenenmodus geblendet. D.h. Weiß für "multiply" gegenüber schwarz für z.B. "add".

Hier das Kontrollergebnis der Albedo-Multiply-Trockenübung (die beiden Ausgangstexturen siehe ein paar Posts weiter oben):
blend_multiply.jpg
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von marcgfx »

Mit dem Blending habe ich mich auch schon rumgeschlagen. Es gibt sicher irgendwo eine tolle Auflistung welche Kombinationen was produzieren, aber ich hab sie noch nicht gefunden. Bin jedenfalls fleissig am weiterlesen :) und warte gespannt darauf, dass du ein point & click wie "samorost" ankündigst.
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von joeydee »

Ja, Samorost war sweet :D das erste war glaube ich noch in Flash programmiert und ich hatte es damals sogar vor dem Hype entdeckt.

Zu den Blending-Auflistungen: ja da gibt es tatsächlich einige, mit ausgerenderten Tabellen oder sogar interaktiv, aber i.d.R. leider wenig brauchbar. Da zwei beliebige Texturen geblendet meist keine brauchbare Aussage über eine Anwendung in der Praxis treffen. Vieles sieht dann entweder fast gleich oder einfach nur seltsam aus. Zumal als Faktor noch hinzukommt: Alphakanäle oder nicht, wenn ja: premultiplied oder nicht, wenn ja: mit Schwarz oder Weiß - das führt je nachdem nochmal zu ganz anderen Ergebnissen. Habe ich auch erst diese Tage auf die harte Tour gelernt.
Und weiter gibt es noch zwei Subtract-Equations (Standard ist Add), wiederum mit allen denkbaren Factor-Kombis, sowie die Möglichkeit, RGB und A mit gleichen oder verschiedenen Faktoren zu behandeln. Also alle Möglichkeiten zusammen: gefühlt unendlich; davon praxisnah: vielleicht max 6-8 schätze ich mal (ggf. mit jeweils mehreren Lösungswegen); davon im Internet gut beschrieben/gezeigt: 2. Bei mir laufen nun: 4.

Nachtrag zu den Stichworten "Shader dynamisch zusammensetzen" und "mehrere Eingaben für einem Pass": UI-mäßig würde sich dann wohl ein Node-System anbieten, statt Layer-Liste bzw. -Baum. Da kam mir wieder xq's Post in Erinnerung:
xq hat geschrieben: 01.01.2018, 22:20 Bild
[...]ein Tool für mich selbst, damit ich random kram mit shadern machen kann, ohne jedes mal was programmieren zu müssen
Ist zwar noch lange nicht relevant, vielleicht auch gar nicht nötig, aber bleibt im Hinterkopf.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2348
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von Jonathan »

joeydee hat geschrieben: 27.05.2021, 09:28 Zu den Blending-Auflistungen: ja da gibt es tatsächlich einige, mit ausgerenderten Tabellen oder sogar interaktiv, aber i.d.R. leider wenig brauchbar. Da zwei beliebige Texturen geblendet meist keine brauchbare Aussage über eine Anwendung in der Praxis treffen.
Ja, und sollte nicht die Richtung sowieso andersherum sein? Sprich, man überlegt sich, was man sehen würde, denkt dann darüber nach, wie dieses Ergebnis physikalisch entsteht und schaut sich dann an, welche Eingaben man wie vorliegen hat und wie man diese dann kombinieren kann. Gerade bei sowas wie "ich habe hier eine Farbebene und eine Beleuchtungsebene" sollte das doch relativ geradlinig sein. Und der Vorteil wäre halt, dass das Ergebnis hoffentlich am Ende noch besser aussieht und vor allen Dingen robuster ist, als wenn man sich irgendwas zusammen klickt, weil es halt irgendwie halbwegs richtig aussieht.
Eine Ausnahme wären vielleicht irgendwelche Magie-Effekte, die explizit nicht-physikalisch sind (z.B. ein Geist der komisch schimmert oder so).
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von joeydee »

Mein bisher gezeigtes "Beleuchtungsmodell" wäre in dem Sinne übrigens sogar physikalisch korrekt, als es da lautet "Licht addiert". Und mit Albedo wird multipliziert, auch das hat noch mit physikalischer Absorption zu tun. Aber darauf will ich mich beim Painten natürlich nicht beschränken müssen, im Gegenteil.

Bin gerade dabei, die Blendmodes in einen Macroshader zu übersetzen. Für 4 Ebenen mit beliebigen Einstellungen läuft er schon (in einem Pass). Damit es nicht bei Theorie bleibt, ab und zu ein bischen Rumgekrakel:
blend2.jpg
blend3.jpg
Ebenen sind hier nach wie vor nur Alphakanäle mit konstanter Farbe und Blend-Modus. Rein experimentell zum Blending-Thema und für mich zur Evaluierung, nicht als Credo.
Im unteren Bild außer dem graublauen Hintergrund sind das:
- Hellblau (normal) - Wolken
- Grün (normal) - Gras
- Blau (multiply) - Schatten
- Hellgelb (add) - Sonne, Highlights
gerendert in dieser Reihenfolge D.h. Sonne liegt *über* den Wolken, wer braucht schon Physik ;)
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von joeydee »

Die Farb- und Sichtbarkeitsanzeige bei der Ebenenliste ist etwas intuitiver geworden. Die letzten Tage ist eine gammakorrigierte Graustufenkonvertierung hinzugekommen für bessere Ergebnise beim Ein- und Umfärben (s.u.)
Ich drücke mich immer noch ums Thema Gruppierungen mit gemeinsamen Masken und Übersetzung der Hierarchie in die Renderpipeline, währen alles skalierbar bleibt: 100 Ebenen sollten kein K.O-Kriterium sein, d.h. zusammenfassen und cachen von Abschnitten die gerade nicht bearbeitet werden, ohne dass dabei die Hierarchie kaputt geht.

Bevor mir der Kopf platzt, kritzel ich lieber schnell noch was (typisch, je vollständiger das Programm wird, desto mehr verlockt es zum Rumspielen statt Weiterentwickeln).
expl03.jpg
expl04.jpg
expl05.jpg
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von joeydee »

Neues Subtool (Prototyp): Umsetzung von 2D-gezeichneten Körperteilen als Meshes, welche ich später auf 3D-Bones mappen kann.

Passend zur bisherigen Philosophie, möchte ich Charaktere in einer stark verkürzten Pipeline skizzieren, "aufblasen", neu posen, und komplett 3D animieren können. Dabei soll der gezeichnete Look möglichst direkt übernommen werden.
Allein schon Charakterskizzen auf die Schnelle neu posen zu können für ein Paintover ist für Concept-Art schon Gold wert (Mein Posing- und Animationssystem hatte ich im Showroom schonmal vorgestellt, das waren bisher aber nur Strichmännchen: viewtopic.php?p=63405#p63405).
Für Körperteile wie Arme und Beine ist das "Ausfleshen" einer Zeichnung noch relativ einfach, oft reicht ein einfacher Rotationskörper aus der Kontur. Oder ein Billboard, für einfachste Einsatzzwecke. Für Oberkörper und Kopf in beliebigen Ansichten wird es da allerdings schon schwieriger.
Hierzu hatte ich schon einige Wege ausprobiert, und neben Indie-Experimenten auch so ziemlich alle gängigen Cartoon-Animationstools angeschaut.
Aktuell ist das hier mein Favorit, auf eigenem Mist gewachsen:
(EDIT: "auf eigenem Mist gewachsen" bezieht sich auf die Recherche zur Umsetzung "Cartoon-Tools 2D->2.5/3D", sowie die Projektionstechnik. Nicht auf Metaball-Modeler im allgemeinen.)

1. Es reicht eine einzige Dreiviertelansicht, der Char muss nicht in mehreren Ansichten gezeichnet werden.
(Zeichnung ist nicht von mir, stammt aus einem älteren Projekt an dem ich einmal mitgearbeitet hatte)
Bild

2. In einer entsprechend ausgerichteten Hilfsbox werden "Blobs" platziert.
Bild

3. Es wird ein Schrumpfschlauch um die Blobs gelegt.
Bild

4. Shrink. Man kann auch andere Geometrie als Grundlage nehmen. Und natürlich denke ich über adaptive Meshes nach, vielleicht auch Marching Cubes. Das hier ist noch nicht das letzte Wort.
Bild

5. Auf das Mesh wird die Textur aus der Ursprungsansicht projiziert; bis zur Hälfte, andere Seite ist gespiegelt.
Bild

6. Und schon ist das Mesh zum Posen nutzbar. Fast rundum texturiert, an Seiten und Hinterkopf muss man dann noch Texcoords neu tweaken.
Bild

7. Es fehlen noch weitere Werkzeuge zum Finetunig der Konturen: Haaransatz, Ohren, ... aber das Ergebnis ist schon in diesem Status passabel.
Bild
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von joeydee »

Smooth Transitions.
before.jpg
after.jpg
Ein anderes Testobjekt, mal mit Smooth-Shading gerendert. Nase ist etwas eckig, dafür der Nacken hochaufgelöst - solche Fälle werden noch behoben.
head02.jpg
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint-Tool

Beitrag von joeydee »


Mal wieder eine kleine Testumgebung im 3D-Bühneneditor.
Technisch ist nicht allzuviel passiert. Statt ein Mesh aus einzelnen Vertices zu bauen, kann man nun auch Primitives in die Szene setzen und auswählen, welche Layer jeweils auf deren Oberfläche projiziert werden. Damit wird es schon langsam brauchbar. Bedient sich aber noch arg sperrig.
Alphamasking geschieht bis auf Weiteres nur mittels 50%-Threshold ohne Blending, daher sind die Grenzen unnatürlich hart. Weil ich mir aktuell die Dreieckssortierung spare.

Hier das 2D-Bild dazu:
0200.png
joggel

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joggel »

Sieht sehr gut aus!
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Beobachte ich schon einige Zeit auf Twitter: Das in Entwicklung befindliche Game "Planet of Lana" möchte praktisch denselben Look erreichen. Mit klassischer Toolchain.
Auf Gamasutra gibts nun einen Artikel mit Blick hinter deren Kulissen.
Die wesentlichen Aussagen treffen auch auf mein Projekt zu:
we still wanted to keep the hand-painted look of the original concept art.
we paint the lighting right into each asset.
On some assets we use a technique where we project a 2D hand-painted image of a tree for example onto a 3D plane and we then model the tree to have a slight 3D effect on it.
We want our game to look like a painting in motion
Zum Artikel: https://www.gamasutra.com/view/news/384 ... f_Lana.php
scheichs
Establishment
Beiträge: 845
Registriert: 28.07.2010, 20:18

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von scheichs »

Joey danke fürs posten. Hatte das Game schon auffem Schirm, aber abgetan als weiterer 2D Limbo-Verschnitt. Allerdings sehe ich es doch noch eher als layered 2D. Da is deine Tech schon konsequenter "3D".
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Ja sehe ich auch so :)
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Zwischenstand auf dem Weg zum direkten Riggen von Skizzen:
bones.jpg
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von marcgfx »

wenn du mal Tester brauchst, habe früher gerne und viel gezeichnet :)
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Wenn mal eventuell ... aktuell füllt sich die Liste mit eigenen Ansprüchen, d.h. ich brauch noch lange keinen zusätzlichen Input :D
Aber ich bin mal ehrlich: sobald es für mich funktioniert werde ich wahrscheinlich das Interesse verlieren, auf Kritik und Wünsche anderer einzugehen. Aber man weiß ja nie, ich schließe es mal nicht pauschal aus.

Edit: Kleines Update: Bones verbinden; Bones bekommen eine "Kiste" mit Mittenteilung zugewiesen, die sich ausrichten lässt und demnächst als Grundlage für die Blobmodellierung einzelner Körperteile dienen wird wie schon weiter oben gezeigt. Worauf dann die Skizzenteile projiziert weden.
Bone-Solver ist auch schon drin, ein paar Leute haben es die Tage kurz live gesehen. Sobald das richtig vorzeigbar ist mache ich wieder ein Capture.
bones02.jpg
bones03.jpg
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

posing01.jpg
Bones-Datenstruktur und Solver nochmal neu erfunden. Und Gizmos gebastelt. Bedienung der Gizmos ist noch sehr provisorisch und unhandlich, aber man kann schon Posen bauen, besser/gezielter als mit der alten Version.
Animationen gehen mit den neuen Bones aktuell noch nicht, muss ich auch noch entsprechend neu bauen.
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »



Der neue Bone-Editor und -Solver in Aktion.

Im alten System waren Joints einzeln bewegliche Massepunkte, verbunden durch Springs (Bones), also eigentlich nur ein (erweitertes) Spring-System. Beim Editieren der Joints für neue Posen war das ganze System aber sehr unruhig, es hat sich zu vieles unkontrolliert mitbewegt. Zudem konnte man am "Körper"-Bone z.B. nicht 2 Arme, 2 Beine und 1 Kopf an unterschiedlichen Positionen anbringen.

Im neuen System kann ein Bone nun beliebig viele lokale Joints haben, welche sich nicht gegeneinander bewegen können. Joints verschiedener Bones können miteinander verbunden werden, das System versucht alle Verbindungen auf 0 zu bringen, wobei die Bones je nach Angriffsvektor entsprechend gedreht und bewegt werden.
Auch neu: Rotations-Gizmos im Editor.

Mit diesem System lassen sich prinzipiell komplexere Bewegungsapparate bauen als zuvor, auch z.B. verschiedene Gruppen temporär miteinander verbinden, z.B. kann sich eine Hand temporär an einem anderen Mesh festhalten.

Der Solver lässt sich wie zuvor dynamisch einstellen, wodurch weiche Transitions zwischen gespeicherten Posen möglich sind.
Constraints gibt es noch nicht.
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »


Kleiner Walkcycle-Test, die Posen und das Timing sind nur quick'n'dirty zusammengebaut. Hauptsache das Prinzip funktioniert wieder.
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Inzwischen habe ich mal am "Facehugger"-Teil von weiter oben weitergebastelt, da ich das evtl. als Tool benötige, aktuell nicht für Games, sondern um größere (Comic-)Styroporfiguren zu bauen, bzw. die Köpfe dafür besser vorbereiten zu können (Den Goblin baue ich nicht, ist nur meine Testdatei).

Neu sind hierfür vor allem mehr Datei-Kram und Exportformate, sowie ein rudimentärer Slicer und Echtvermaßung.
facehugger.jpg

OBJ-Export mit gebackenen Texturkoordinaten, hier in Wings3D geladen.
wings3d.jpg

SVG-Export mit maßstäblicher Ausgabe zum Ausdrucken auf A4 (ich benötige die Vorlage meist in 1:5 zum geplanten Objekt), hier in Illustrator geladen.
Mein Slicer erkennt keine Inseln, er geht immer von nur einem geschlossenen Polygon pro Slice aus, was aber für diesen Zweck nichts ausmacht.
svg.jpg

Workflow ist dann: Vorlage als Textur in Facehugger laden, Blobs platzieren, Endmaße festlegen, DXF-Export für Ausdrucke, OBJ-Export für 3D-Display vor Ort (Werkstatt) auf Handy/Tablet. Die 1:5-Outlines werden dann auf 40mm-Styroporplatten vergrößert, ausgesägt und gestapelt, und dient als Grundlage für weiteres schnitzen/auffüllen, am Ende wird alles kaschiert und lackiert.

So sieht sowas dann z.B. aus. Ist ne kleine Figur, wir bauen bis zu 3m hoch. Noch ist nicht klar, ob wir in diesem Jahr ein entsprechendes Projekt am Start haben wo dieser Workflow zum Einsatz kommen könnte, wenn dann ab August irgendwann.
IMG-20191003-WA0016.jpg
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Nichts neues zum Coding-Projekt, aber mal ein konkreter Anwendungsfall:
step00.jpg
Links oben die Ursprungskizze, im Facehugger wurden noch ein paar Stellen verändert, insbesondere Wangen und Kinn, es ist also Absicht dass es nicht mit der Skizze übereinstimmt. Rechts dann ein paar 3D-Ansichten, links unten die exportierten Slicer-Einzelteile.

step01.jpg
Nach dem Übertragen der Slices auf Styroplatten, Aussägen, groben Anschrägen und Zusammenleimen.
Der Kopf ist ca. 60 cm hoch, 40 cm breit. Nach dem Aushärten kommt noch die Feinarbeit. Aber bis hierhin war das mit dem neuen Workflow ab Skizze in Rekordzeit entstanden. Erwartung erfüllt.
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Ich wollte mich mal wieder hierzu melden, nicht nur weil es beim letzten Stammtisch kurz darum ging, sondern auch weil vieles was ich in letzter Zeit gemacht habe auch immer noch hiermit zusammenhängt, zumindest weitläufig.
Es ist jetzt also kein wirkliches Post Mortem, aber vielleicht ist trotzdem interessant, wie weit sich die Dinge verändern können, wenn man nicht rund um die Uhr und nur für ein einzelnes Hobbyprojekt arbeitet.

Erstmal: Was die ursprüngliche Idee (2D-Vorlagen, speziell im Painting-Stil, per Projektion in 3D "ausbeulen" für kleine Kameravariationen) heute mit KI bedeutet. Diese Demo ist allerdings nicht von mir.
https://twitter.com/i/status/1670402191486779392
Stable Diffusion kann eine Depth-Map zu einem beliebigen Bild generieren. Man kann dann anhand der Map Vorder-/Mittel-/Hintergrund (oder mehr Ebenen) trennen und Überlappungsbereiche per Inpainting entfernen (lassen), damit sich im Hintergrund nichts doppelt.
Es gibt einige Projekte, die das komplett automatisiert versuchen (Prompt->Ergebnis), die Tiefe sieht meist noch sehr unnatürlich und mit vielen Erkennungsfehlern aus, und es gibt natürlich starke Verzerrungen je weiter man sich von der Originalposition entfernt.

Ich würde sowas immer noch lieber als Tool sehen, auch für eigene Bilder, mit manuellem Eingreifen. Z.B. Grundformen ins Bild platzieren, welche man durch KI-Depthmaps sowie Sculpting-Tools gezielt motivbedingt verformt, sowie Kameraposition ändern -> auftretende Verzerrungen maskieren, ggf. ein paar Striche reinskizzieren -> KI zum Ausbessern und neue lokale Projektion anwenden. Und natürlich auch der umgekehrte Weg: Erst grob 3D-Szene sculpten, dann KI nutzen um ein passendes Projektionsbild zu erstellen - den Ball kann man ja beliebig oft hin- und herspielen.
Hatte ich auch angefangen. Dazu hole ich im nächsten Post noch etwas aus.
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Womit ich zwischenzeitlich experimentiert hatte:
Lokale Stable Diffusion Installation via Automatic1111 mit API-Zugang und Erweiterungen (ControlNet) für Depth-Maps. Allerdings gab es beim letzten Versuch (vor ca. 4 Monaten) noch keine API für ControlNet, könnte sich geändert haben.
Probleme lagen aber auch noch woanders, u.a. Serverkommunikation generell (ich verpasse immer wieder fertig gerenderte Bilder), ist halt auch nicht mein Spezialgebiet, und ich kann unmöglich herausfinden ob es an mir oder an der API oder an der Gesamtkonfiguration liegt. Da: sowohl meine Anwendung als auch die KI benötigen natürlich die Grafikkarte und bremsen sich gegenseitig merklich aus. Ich kann zwar das Zeichnen in meiner App in der Zeit unterbinden, habe dann aber auch keinen Fortschrittsbalken, und trotzdem belege ich natürlich noch Platz auf der Graka.
Es kann passieren, dass der KI-Server "stehenbleibt" wenn meine Anwendung offen ist, das passiert aber nicht grundsätzlich. (Den Vorgang beim Stammtisch streamen ginge übrigens auch nicht, nichtmal Video aufzeichnen). Es müsste eine zweite Graka her, oder besser noch ein physisch separater KI-Server. Habe aber weder Lust deshalb Hardware zuzukaufen, noch zu mieten. Mit ControlNet ist sowieso alles noch langsamer geworden, im Prinzip bräuchte ich dafür eine neuere Graka, da ist meine einfach an der Grenze.

Eigenes Experiment mit 3D-first z.B.:
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Aber das ist noch nicht das Ende. KI ist ja sowieso nur schwer davon zu überzeugen, sich auf die eigene Vorstellung hinzubewegen. Die Stärken sehe ich aktuell nur für grundsätzliche Inspiration (Grobentwürfe), Varianten entwickeln, Skizzen ausrendern, Backgrounds erstellen, sowie zum partiellen ausbessern/verfeinern/recoloring usw. mit mehr Speed und Professionalität als ich es selbst machen könnte.
Klar sieht das Twitter-Ding oben schon sehr "fertig" aus, ist aber nur ein Einzelstück, man kann die Welt von dort ab schlecht nahtlos weiterbauen. Technisch ja, aber nur mit Tools in welche man gut eingreifen und in bestimmte Richtungen dirigieren/korrigieren kann.

Daher vorerst nochmal weg von KI und auf das reine Skizzieren/Malen (ohne KI) konzentriert, aber mit einem ganz anderen Ansatz als der Perspective-Pen ganz zu Anfang. 3D-first, ähnlich dem Blender Grease-Pencil.
Herausforderung ist hierbei natürlich das Verwalten und Wiederfinden gesetzter Brushes zum Löschen, Umfärben, Manipulieren. Das muss irgendwann natürlich alles extrem gut skalieren. Wenn ich mal groß bin.
Im Video nicht gezeigt ist der 3D-Editor dazu, ich meine aber ich hatte ihn mal bei einem Stammtisch kurz gezeigt, Bauklötze gestapelt, evtl auch irgendwo im Showroom. Unabhängig davon ist zwischenzeitlich auch ein Polygonblock-Editor entstanden (Doom-1-Geometrie auf Integer-Grid).
Zuletzt geändert von joeydee am 19.06.2023, 10:21, insgesamt 1-mal geändert.
joeydee
Establishment
Beiträge: 1036
Registriert: 23.04.2003, 15:29
Kontaktdaten:

Re: [Projekt] Eigenes kleines Paint- und 3D-Tool

Beitrag von joeydee »

Aber auch Image-first ist natürlich nicht gestorben. Vor allem im Bereich einfacher Assets der Qualitätsstufe "schnellgeschrubbter Content für ZFX-Actions".
Auch hier einen weiteren Ansatz ausprobiert, neben den bisher gezeigten Blobs.
Auf der 2D-Vorlage werden Querschnitte markiert, diese werden erstmal als kreisförmig angenommen und daraus ein Mesh extrudiert.
Breakdown:
banana1.jpg
banana2.jpg
banana3.jpg
So betrachtet ist das nichts Neues, die Besonderheiten liegen aber darin, dass es auch z.B. Dreiviertelansichten der Vorlage unterstützt, dass man die 3D-Editiermöglichkeiten auf die aktuelle Projektion beschränken kann, und dass es ohne viel Umweg auf einen Bone- und Animationseditor hinauslaufen soll. Wenn ich mal groß bin (tm). Allerdings erstmal mit Einzelteilen wie Augsburger Puppenkiste, nicht als Gesamtmesh mit Weights; Qualitätsstufe s.o.

So far for now.
Antworten