Der Style-Graph

Jede Einstellung im Schritt Style ist ein Regler an einem Durchgang: die Schattierung, die Linien, die Mesh-Kanten, die Bereinigung, die Farben, in denen das Sheet herauskommt. Der Style-Schritt ist dieser Graph: die Durchgänge als Boxen mit Verbindungen dazwischen, jede zeigt das Bild, das sie macht, und trägt ihre eigenen Einstellungen, sodass du die Verarbeitung siehst und nicht nur ihr Ergebnis. Du kannst die Durchgänge umordnen, einen durch eine Maske schicken oder zwei mischen.

Die Kette der Bilder von den Farben des Modells bis zum fertigen Sheet ist die Erklärung der Pipeline. Auf einem langsamen Rechner schaltet die Augen-Schaltfläche sie ab.

Du musst nicht auf der Arbeitsfläche arbeiten: Eine Node zu wählen zeigt dieselben Einstellungen rechts im Inspektor, sodass ein Schieberegler immer in Reichweite ist. Ist keine Node gewählt, zeigt der Inspektor die Paletten-Node, die die Farben trägt.

Styles. Ein Projekt hat so viele Styles, wie es möchte, jeder unter seinem Namen mit einem eigenen Style-Graphen, keiner davon der einer Kamera. Der auf der Leinwand ist der, der in der Styles-Liste oder in der Style-Auswahl der Fensterkopfzeile gewählt ist, und zeichnet die Kamera und Action der Kopfzeile. Neuer Style unter der Liste erstellt eine Kopie des gezeigten, nach ihm benannt (Pixel-Art 2). Das Rechtsklickmenü einer Zeile benennt ihn um, Duplizieren dupliziert ihn, löscht ihn (NAME löschen…, mit Rückfrage: auch den ersten, solange ein anderer bleibt), Kit speichern… (Den Style als Kit speichern) schreibt ihn als Kit, mit Graph und Palette darin, und Kit verwenden… (Style-Kit verwenden) übernimmt einen aus einem anderen Projekt gespeicherten in dieses. Ziehe eine Zeile nach oben oder unten, um die Liste umzusortieren. In der Pipeline-Bibliothek gespeichert, erscheinen sie in der Node-Bibliothek unter Meine Pipelines; die eigenen des Projekts stehen unter Pipelines, neben der Verpixeln-Node.

Jeder Graph hat seine Node-Bibliothek links an seiner Seite, wenn sein Panel breit genug ist: Szenen-, Action-, Style- und Asset-Graph gleichermaßen. Sie listet alles, was der Graph enthalten kann, zuerst die Eingänge und Ausgänge, dann den Rest nach Gruppe, mit einer Zeile dazu, was jede tut; tippe in Suchen, um sie einzugrenzen. Klicke auf eine, um sie dort hinzuzufügen, wo der Graph sie hinsetzt, verbunden – oder zieh sie auf die Leinwand, um sie dort abzulegen, wo du loslässt.

Ein Projekt, das nie eine Node ändert, speichert weiterhin gar keinen Graphen und rendert genau wie zuvor.

Der Graph, mit dem du anfängst

Es ist Pixors eigene Pipeline, verbunden:

Der Style-Graph, mit dem du beginnst: Kamera in Ebenen-Render, seine Ebenen in Licht und Schatten und Linienarbeit, kombiniert, bereinigt und vor der Ausgabe auf die Palette gebracht

Von links nach rechts in der Reihenfolge der Arbeit, sodass Verbindungen nach vorn laufen und sich so wenig wie möglich kreuzen.

  • Kamera ist, wo der Graph beginnt: die Kamera, für die dieser Style zeichnet. Jede Kamera, die auf den Style zeigt, führt den Graphen einmal aus, von ihrer eigenen Seite.

  • Ebenen-Render nimmt die Kamera: was sie von der Action in diesem Frame gerendert hat, vor jedem Pixel-Art-Schritt, mit jeder ihrer acht Ebenen an einem eigenen Ausgang – albedo, normals, depth, part, material, coverage, key light, shadow. Die Schattierung liest normals und shadow, die Linien depth, normals und part. Es ist eine Gruppe aus Atomen: Öffne sie, und sie ist der Rahmen einer Rendern-Node (ein Frame mit Ebenen) und acht Ebene-Nodes, von denen jede die auf ihr gewählte Ebene aus dem Frame nimmt. Die Verbindungen zeigen, was was liest, und sie sind echt: Verbinde ein Rauschfeld mit dem shadow von Licht und Schatten, und der Schatten ist dieses Rauschen; unverbunden liest ein Durchgang den Render der Kamera selbst.

  • Palette ist der Ort, an dem die Farben des Frames gewählt werden: wie viele Grundfarben und Lichtstufen, das Dithering, eine eigene Palette, die Farbtonverschiebung. Ausgabe trägt nichts: Sie ist der Frame.

  • Licht und Schatten macht aus dem Licht eine Stufe auf der Farbrampe jedes Pixels. Es ist eine Gruppe aus Atomen, die du auch hast, in dieser Reihenfolge: Lichtstufen (die Stufe des Hauptlichts, in die jedes Pixel fällt, an den Rändern gedithert, nahe einer Kante über Frames hinweg gehalten), Weltlicht (Lampen, Wellenlinien, Wolkenschatten, Lichtstrahlen, Uferschaum), Glanzlichter, Leuchten, Rampenverschiebungen (und der Farbzyklus), dann Schattierungsfarben, das die Schattierung in Farben verwandelt. Die Verbindung zwischen ihnen trägt eine Schattierung: die Rampe jedes Pixels und seine Stufe darauf.

  • Linienarbeit findet die Silhouette, die Innenlinien und die Knicke. Auch sie ist eine Gruppe: Silhouette, Kanten (Innenlinien, Knicke, konvexe Falten), Linien aufräumen (kurze Fragmente verworfen, Ecken und Doppelte entfernt) und Linienfarben, mit einer Linien-Verbindung dazwischen.

Die Parameter einer Gruppe sind die Einstellungen der Atome darin. Auf der Node oder per Skript setzt das Setzen eines Parameters ihn in jedem Atom darin, das ihn hat – pxr graph set my.pixor --node light-and-shade --set dither=0.5, --node line-work --set min_inner_line=3 –, sodass eine Gruppe, die du selbst aus Atomen baust, genauso eingestellt wird wie die mitgelieferten. Doppelklicke eine Gruppe (nicht auf den Titel) oder drücke den Pfeil an ihrem Titel, um sie zu öffnen und zu sehen oder neu zu verbinden, woraus sie besteht.

  • Drahtgitter erscheint auch, wenn der Drahtgitter-Look an ist, und geht in den dritten Eingang von Kombinieren. Es ist eine Gruppe aus zwei Atomen: Verbindungswege (wo die Kanten des Meshs den Frame kreuzen und ob eine hinter der Oberfläche weggelassen, gepunktet oder dunkler wird), dann Drahtfarben.
  • Kombinieren legt sie übereinander, entscheidet, was unter den Verbindungen liegt, und dünnt die Linien gegeneinander aus.
  • Bereinigung entfernt Einzelpixel und glättet Linienecken. Sie ist eine Gruppe aus zwei Atomen: Einzelpixel (Flächen einer Farbe, die zu klein zum Behalten sind, und wie viele Durchgänge nach ihnen suchen), dann Glatte Ecken (welche Ecken der Linien eine Stufe die Rampe hinab weicher werden).
  • Ausgabe ist, was der Graph erzeugt: das Sprite dieser Kamera in diesem Moment der Action, das die Sprites-Nodes des Asset-Graphen dann in Sprite-Listen schneiden. Sie trägt keine Einstellungen; die Farben stehen auf der Palette davor.

Diese Nodes rufen genau denselben Code auf wie die Pipeline, also erzeugt der Graph, mit dem du beginnst, genau die Pixel, die du vorher hattest. Pixors eigene Golden Tests werden jedes Mal auf beide Arten gerendert und verglichen.

Damit arbeiten

Jeder Graph funktioniert auf eine Weise – Szenen-, Action-, Style- und Asset-Graph gleichermaßen: dieselbe Leiste, dasselbe Rechtsklickmenü, dieselben Tasten und Gesten. Diese Tabelle gilt für alle vier. Jede Bearbeitung ist ein Schritt im Verlauf (Ctrl+Z nimmt ihn zurück), das Verschieben einer Node eingeschlossen; die Tasten wirken, solange der Zeiger über dem Graphen ist.

Richtig Bis
Mit der mittleren Maustaste ziehen (oder mit Alt und der linken) die Ansicht verschieben
Scrollen (oder Pinch-Geste) um den Mauszeiger zoomen, von Viertel- bis doppelter Größe, eine Stufe so groß wie in der 3D-Ansicht und der 2D-Ansicht; Einpassen und der erste Blick auf einen Graphen passen ihn ein
Frame oder Pos1 jede Node auf den Bildschirm holen
Auf den Titel einer Node klicken sie wählen: Ihre Einstellungen erscheinen auch im Inspektor, und die Mitte zeigt, was sie erzeugt; wo Nodes übereinanderliegen, die oberste
Shift-Klick auf eine Node sie zusätzlich wählen oder loslassen
Den Hintergrund ziehen ein Rahmen: Jede Node, die er berührt, wird gewählt (Shift behält die schon gewählten)
Eine Node ziehen sie verschieben und jede mit ihr gewählte Node
+, oder Rechtsklick auf die Leinwand › Node hinzufügen die Liste der Node-Bibliothek, nach Gruppe: Was gewählt ist, kommt hinein; per Rechtsklick dort, wo du geklickt hast. Kit verwenden… (Kit als Gruppe hinzufügen) ganz oben setzt ein Kit als eine Gruppe ein
Eine Zeile der Bibliothek links klick sie an, um sie dort einzufügen, wo der Graph sie hinsetzt, verbunden; zieh sie auf die Arbeitsfläche, um sie dort abzulegen, wo du loslässt
Vom runden Punkt rechts an einer Node zu einem Punkt links an einer anderen ziehen sie verbinden; während du ziehst, wird jeder Punkt markiert, zu dem die Verbindung passt
Eine Verbindung über leerer Leinwand loslassen ein Menü der passenden Nodes: Tippen grenzt es ein, Enter nimmt die erste
Einen Eingangspunkt wegziehen sie trennen; auf einem anderen Eingang loslassen, um die Verbindung dorthin zu verlegen
Eine Verbindung anklicken, dann Entf sie trennen; die Verbindung unter dem Mauszeiger (oder die gewählte) zeigt auch ein × in ihrer Mitte, das sie mit einem Klick trennt
F2 oder ein Doppelklick auf den Titel einer Node sie umbenennen: ihr eigener Name im Titel (bei einer Gruppe ihr Name); leer heißt sie wieder so, wie sie ist
Ctrl+D die gewählten Nodes darunter duplizieren, so verbunden, wie sie sind, und mit denselben Eingängen
Ctrl+C, Ctrl+V die gewählten Nodes kopieren und unter dem Mauszeiger einfügen – in jeden Graphen derselben Art: einen anderen Style, eine andere Action, eine andere Asset-Pipeline, das Innere einer Gruppe. Nodes einer Graphenart kommen nicht in eine andere, und die Statuszeile sagt das
− (Gewählte Node löschen) oder Entf die gewählte Node löschen; was sie gelesen hat, liest nun das, was sie gelesen hat, sodass eine Kette eine Kette bleibt
Gruppe oder Ctrl+G die gewählten Nodes (und die ausgewählte) werden zu einer Gruppe, geöffnet
Der Pfeil rechts im Titel einer Gruppe oder ein Doppelklick auf die Gruppe außerhalb ihres Titels sie an Ort und Stelle öffnen oder wieder zuklappen
Kit speichern… die gewählte Gruppe als Kit oder – wenn keine Gruppe gewählt ist – der ganze Graph (der Titel des Dialogs sagt, was davon)
Aufräumen jede Node neu anordnen, von links nach rechts in der Reihenfolge der Arbeit
Notiz eine Notiz um die gewählte Node oder in die Ansicht setzen
Das Auge oder Rechtsklick › Node-Bilder das Bild, das jede Node erzeugt, zeigen oder ausblenden
Rechtsklick auf die Leinwand alles oben Genannte, mit ihren Tasten, und was ein Graph für sich hat: im Style-Graphen Nur zeigen, was ein Preset setzt, Einstellungen jeder Node zeigen und Zurück zum Graphen des Presets; im Szenen-Graphen Zurück zu einer Kopie; im Asset-Graphen Zurück zu einem Sheet

Was das Bild einer Node ist, Graph für Graph: im Style-Graphen die Pixel, die sie erzeugt; im Szenen-Graphen die Objekte, die sie weitergibt, von oben gesehen; im Action-Graphen, was der Ausgang der Node über einen Durchlauf tut (unten); im Asset-Graphen die Frames, die eine Liste weitergibt, oder das Sheet oder die Datei, die sie schreibt.

Im Action-Graphen hat jede Art von Node das Bild, das am meisten über sie aussagt:

Node Sein Bild
Clip, Keyframes, Routine, Action das Modell zu vier gleichmäßig verteilten Momenten dessen, was es abspielt, von links nach rechts – eine Schleife über einen Zyklus, der letzte Moment kurz bevor sie neu beginnt –, alle durch eine Kamera gesehen, die jede Pose fasst, aus dem Winkel der gezeigten Kamera
Drehen, Wippen, Schwingen, Pulsieren, Gleiten, Welle, Rauschen, Rampe, Szenenzeit eine Kurve jeder Zahl, die sich wirklich ändert, von ihrem tiefsten bis zu ihrem höchsten Wert: bei Drehen eine Rampe, bei Wippen eine Welle; Zahlen, die sich gleich ändern, sind eine Linie (die drei Größen von Pulsieren)
Filter, Anwenden auf, Ausgabe, Gruppen als das, was sie weitergeben: die Posen, wenn das mehr als drei Zahlen bewegt (ein Clip, ein mit einem Drehen zusammengeführter Clip, auf Zweien gehalten), eine Kurve, wenn es eine Bewegung ist (ein Stufe auf einem Drehen zeichnet seine Treppe)

Kurven sind nach Art gefärbt – Positionen blau, Drehungen bernsteinfarben, Größen grün, alles andere pink –, höchstens sechs davon, die mit dem größten Ausschlag; mit dem Zeiger über dem Bild benennt es jede Linie und sagt, wie viele es noch gibt. Posen fallen auf Kurven zurück, wenn das, was sich bewegt, kein Teil des Modells ist (eine Kamera, das Licht). Eine Node, die nichts ändert – ein Konstant, ein Clip, den es nicht gibt –, zeigt Keine Bewegung, wo ihr Bild wäre. Eine Linie über einer Kurve oder ein Balken unter einer Pose folgt beim Abspielen der Zeit auf der Zeitleiste.

Die Bilder zeichnet Pixors eigener CPU-Rasterizer, klein, in einem eigenen Thread, das der gewählten Node zuerst: Der Graph wartet nie auf sie. Eine Node behält ihr Bild, bis das nächste fertig ist, sodass nichts blinkt; eine Änderung, die nicht ändert, was eine Node weitergibt, zeichnet sie nicht neu. Eine Node braucht etwa 25 ms mit dem Ritter und 40 ms mit der humanoiden FBX-Testdatei, also sind zwanzig Nodes binnen einer Sekunde nach einer Änderung gezeichnet.

Notizen sind Kästen hinter den Nodes mit deinen eigenen Worten am oberen Rand: wofür dieser Teil des Graphen da ist, was du als Nächstes ausprobierst. Tippe direkt hinein. Der Griff oben links verschiebt sie samt jeder Node darin, also hält eine Notiz einen Teil eines großen Graphen zusammen und erklärt ihn zugleich; die Ecke unten rechts ändert ihre Größe, und das Minus entfernt sie (die Nodes bleiben). Eine Notiz ändert kein Pixel.

Während ein Schieberegler in einer Node gezogen wird, wird zuerst das Bild dieser Node neu erzeugt, dann das der gewählten Node, dann der Rest der Reihe nach – so zeigt sich die Änderung sofort dort, wo du hinschaust.

Jede Art von Verbindung hat ihre eigene Farbe, sodass man ohne Lesen sieht, was wohin passt: eine Ebene aus Palettenfarben, eine Maske, eine Zahl pro Pixel, eine Normale, eine Rampe, eine Palette, eine Kamera, ein Render, eine Schattierung, Linien, Verbindungspfade und die Werte (an/aus, Zahl, Text). Ein Eingang, an dem nichts hängt, der aber etwas braucht, ist rot umrandet, und die Zeile unten sagt, was nicht stimmt. Eine Verbindung der falschen Art und eine, die den Graphen im Kreis führen würde, werden beim Loslassen abgelehnt.

Was die Nodes sind

Die Bibliothek und das Menü Node hinzufügen listen sie unter diesen Gruppen:

Gruppe Nodes
Eingänge Kamera, Rendern, Ebene (Albedo, Normalen, Tiefe, Teil-ID, Material-ID, Abdeckung, Hauptlicht oder Schatten eines Renders), Bild, Fülllicht, Bewegung, Oberflächen-Dithering, Schleifenphase, Rampe der Farbe, Rampenposition, die Materialkanäle Metallisch, Rauheit, Emittierend, Verdeckung, Durchsichtig und Randpixel (wo die eigenen Kanten des Meshs den Frame vor allem anderen kreuzen)
Durchgänge Schattierung, Linien, Mesh-Kanten, Kombinieren, Bereinigung, Auf Palette — jede ein ganzer Durchgang in einer Box
Schattierung Lichtstufen, Weltlicht, Glanzlichter, Leuchten, Rampenverschiebungen, Schattierungsfarben und das handgezeichnete Finish: Formen, Entstufen, Glanz, Stufen weicher, Schraffur
Linien Silhouette, Kanten, Linien aufräumen, Linienfarben, Farbkanten, Linienstärke
Drahtgitter Verbindungswege, Drahtfarben
Bereinigung Einzelpixel, Glatte Ecken, Silhouette aufräumen
Farbe Palette, Nächste Farbe (jedes Pixel in der Palettenfarbe, die seiner eigenen am nächsten ist, ohne Rücksicht auf Rampen), Rampe stufen, Stufe, wo maskiert, Abflachen, Paletten-Dithering, Rampen-Map, Kachelfarben, Subpixel-Bewegung
Masken Schwelle, Nach Teil, Nach Material, Nach Ausrichtung, Rauschen, Muster, Feste Pixel, Nicht, Und, Oder
Mischen Nach Maske wählen, Dither-Mischung, Ebene über
Mathe Zahl, Hinzufügen, Subtrahieren, Multiplizieren, Dividieren, Kleiner, Größer, Ohne Vorzeichen, Bruchteil, Ganze Zahl, Halten zwischen, Umbelegen, Mischen, Stufe bei, Weiche Stufe, Übereinstimmung, Länge, Als Zahl, Rauschfeld (das Rauschen, das die Rauschen-Maske mit einer Schwelle trennt, als Zahl)
Leertaste Versatz, Weichzeichnen, Steigung, Wachsen, Schrumpfen, Hohlraum — jede sagt, wie weit sie um ein Pixel herum schaut; das hält Kachelnähte exakt
Werte siehe Jede Eigenschaft ist ein Eingang
Gruppen Eingang und Ausgang, die Anschlüsse in einer Gruppe
Ausgänge Ausgabe, CRT (ein Bild zum Anschauen, nie ein Sprite)

Darüber listet die Bibliothek Pipelines (die Styles des Projekts und Verpixeln), Meine Pipelines und Meine Nodes.

Ein Bild ist eine eigene Ebene: eine Papierkörnung, ein Muster, ein gemalter Himmel oder ein Logo, jedes Pixel die Palettenfarbe, die der des Bildes am nächsten ist, auf den eigenen Pixeln des Sprites ab der Stelle, wo es hingesetzt wird, oder über den ganzen Frame gekachelt. Nach Maske wählen legt es dorthin, wo du es willst, Ebene über legt es obendrauf. Das Bild wird einmal gelesen und in der Node gespeichert, sodass ein gespeicherter Look oder ein Kit es mitnimmt. Per Skript:

pxr graph add my.pixor --node picture --set file=logo.png --set tile=false   # node 8 on a new project
pxr graph add my.pixor --node layer-over --in under=4 --in over=8             # node 9: the logo over the palette's frame
pxr graph wire my.pixor --from 9 --to 5 --slot layer                          # into the Output

Mischen erzeugt nie eine neue Farbe. Pixor arbeitet im Palettenindex-Raum, also wählt eine Mischung das eine Pixel oder das andere; sie mischt nie zwei zu einem dritten, das nicht auf der Palette ist. Dither-Mischung legt A und B in einem geordneten Muster an, so wie ein Pixel-Artist mischt.

Ein handgezeichnetes Finish

Manche Nodes tun, was ein Pixel-Artist von Hand tut, wenn die Schattierung steht. Keine davon ist im Start-Graphen; füge die hinzu, die du willst. Die auf einer Schattierung gehören zwischen Rampenverschiebungen und Schattierungsfarben (öffne die Gruppe Licht und Schatten), in der Reihenfolge unten; die auf Linien zwischen Kanten und Linienfarben (öffne Linienarbeit). Jedes Muster, das sie legen, haftet an der Oberfläche, bewegt sich also mit dem Modell, statt darüber zu krabbeln, und nichts, was sie machen, liegt außerhalb der Palette – außer CRT, mit Absicht. Die, die nach dem Umfeld eines Pixels oder seiner Lage auf der Oberfläche entscheiden (Formen, Glanz, Schraffur, Entstufen), behalten dort, wo sich die Oberfläche seit dem vorigen Frame nicht bewegt hat, was sie damals entschieden haben, und fügen so kein Flackern hinzu; ein geloopter Clip durch einen Graphen mit einer davon läuft zuerst einmal durch, sodass sein erster Frame auf seinen letzten folgt.

Node Verbinden Was sie tut Einstellungen
Formen Schattierung → Schattierung Licht- und Schattenformen bereinigt wie gezeichnete: Eine Form aus einer Stufe, kleiner als Kleinste, nimmt die Stufe an, in der das meiste um sie herum liegt; dann nimmt jedes Pixel die Stufe an, in der die meisten Pixel innerhalb von Glätten um es liegen – das entfernt Zungen dieser Breite und glättet Ränder. Nur Pixel desselben Teils und derselben Rampe zählen füreinander, und eine Stufe braucht das meiste um ein Pixel herum, also bleibt ein Fleck in einer eigenen Farbe Einzelpixel überlassen. Ein Pixel, dessen Fläche sich nicht bewegt hat und dessen Licht gleich ist, behält die Stufe, die es im Frame davor bekam. Kleinste, Glatt
Entstufen Schattierung (+ Linien) → Schattierung Eine Stufenkante, die in gleichem Abstand an der Silhouette, an der Kante eines Teils oder an einer Linie entlangläuft — der Kissen-Look —, wird in Abschnitten um ein Pixel versetzt, so wie eine Hand sie stuft: bei der Hälfte, zwei von je vier Pixeln entlang, auf der Oberfläche gezählt, damit die Stufen mit ihr wandern. Innerhalb (Pixel vom Rand), Wie viel
Glanz Schattierung (+ Maske, + Licht) → Schattierung Ein gezieltes Glanzlicht auf jedem Teil (dem Teil des Renders, wo auch immer es im Frame ist), wo die Maske gesetzt ist, an seinem hellsten Pixel in der obersten Stufe, an der Stelle des vorigen Frames gehalten, wenn zwei gleich hell sind; Pro Teil verlangt mehr, jedes mindestens Abstand von den anderen. Unverbunden ist das Licht das Hauptlicht. Größe (1 oder 2), Pro Teil, Abstand, Nur der Glanz (andere Glanzlichter dort gehen auf die oberste Stufe zurück)
Stufen weicher Schattierung → Schattierung Die Ecken der Treppe zwischen zwei Stufen geglättet: Zwischen Stufen, die zwei oder mehr Schritte springen (Schlagschatten, Lampen, Glanzlichter), nimmt die Ecke die Stufe dazwischen an; zwischen benachbarten Stufen nehmen mit Dithering die Ecken auf einer Farbe eines auf die Oberfläche gelegten Schachbretts die andere Stufe an – ein geditherter Zwischenton, auf der Palette, den die Bereinigung in Ruhe lässt. Beide Seiten, Dithering
Schraffur Schattierung → Ebene Die Farben der Schattierung, mit diagonalen Linien, Kreuzschraffur oder Punkten über jeder Stufe unterhalb der obersten, dichter, je dunkler die Stufe, in der Stufe darunter oder in der Linienfarbe. Eine schraffierte Stufe ist ein Muster, wie eine Dithering-Zone eines ist: Die Bereinigung lässt die Pixel zwischen ihren Strichen in Ruhe. Sie tritt an die Stelle von Schattierungsfarben. Muster, In Linienfarbe
Hohlraum (Normalen, Tiefe) → Zahl Wie sehr sich die Oberfläche nach innen faltet: über 0 in einem Knick, unter 0 auf einem Grat. Setz eine Schwelle und verbinde sie mit Stufe, wo maskiert mit −1 für Knicke, die eine Stufe dunkler sind. Unverbunden liest sie den Render. Radius, Tiefensprung
Farbkanten (Linien, Albedo) → Linien Eine Linie, wo sich die gemalte Farbe innerhalb eines Teils ändert, auf der dunkleren Seite, damit sie ein Pixel breit ist, gefärbt wie die Falten (gib Linienfarben also eine Faltenfarbe). Setze sie vor Linien aufräumen, das ihre Linien frei von Ecken und Doppelungen hält. Unverbunden liest sie die eigenen Farben des Modells. Kontrast
Linienstärke Linien → Linien Die Silhouette zwei Pixel dick auf der lichtabgewandten Seite und Rand Konturringe darum, in der Farbe der äußeren Linie oder, mit Eigene Farbe, in Farbe (die nächstliegende der Palette). Wo eine innere Linie auf die Silhouette trifft, bleibt sie ein Pixel. Schattenseite, Rand, Eigene Farbe, Farbe
Silhouette aufräumen Ebene → Ebene Ein-Pixel-Spitzen von der Kontur entfernt (nicht das Ende eines dünnen Teils), Ein-Pixel-Kerben und -Löcher mit der Farbe ringsum gefüllt – nicht mit der der Kontur, wo diese dadurch zwei Pixel dick würde. Spitzen, Kerben
Paletten-Dithering Ebene (+ Licht) → Ebene Die eigene Oberflächenfarbe jedes Pixels, beleuchtet mit dem verbundenen Faktor (1 lässt sie, wie sie ist), als das Paar von Palettenfarben, das sich am nächsten daran mischt (Yliluomas Dithering), gelegt nach dem Schwellwert der Oberfläche. Linien bleiben; der Rest ist ein Dithering, das die Bereinigung in Ruhe lässt. Paar-Spreizung: höher bleibt bei nahen Paaren
Rampen-Map Zahl (+ Rampe) → Ebene Die Rampe eines Artists, aus einem Bildstreifen gelesen: Die Zahl 0 bis 1 wählt eine Stelle darauf, von dunkel nach hell. Ein Streifen aus mehreren Zeilen gibt jeder Rampe ihre eigene Zeile. Ohne Bild die eigenen Stufen der Farbe. Verbinde Hauptlicht über Umbelegen damit. Datei
Kachelfarben Ebene → Ebene Der Frame in Kacheln ab seiner oberen linken Ecke, jede auf so viele Farben beschränkt, wie das NES 8 × 8 Kacheln aus 3 anlegt: Die meistgenutzten Farben bleiben (ein Pixel, dem drei seiner Nachbarn widersprechen, zählt als deren Farbe, damit ein Kantenpixel des Rasterizers die Wahl nicht kippt), der Rest nimmt die nächstliegende davon, und ein Pixel, das als einziges seine Farbe hat, übernimmt die seiner Nachbarn in der Kachel. Kachel, Farben
Subpixel-Bewegung Ebene (+ Bewegung) → Ebene Ein Teil, das sich um weniger als Noch darunter Pixel pro Frame bewegt (ein Atemzug, ein Schwanken), zeigt das in seinen Randpixeln: Eines, das nur teilweise bedeckt ist, geht eine Stufe auf der Rampe nach unten, und das leere Pixel, in das es hineinkriecht, nimmt diese Farbe an, sobald es zu einem Viertel bedeckt ist. Überall im Graphen: Der Rand ist der des Renders, also funktioniert es auch nach Kombinieren, wobei die Kontur bleibt, wie sie ist (nur die Randpixel darin ändern sich). Noch darunter, Stufen
CRT Ebene → Ebene Ihr Bild ist der Frame auf einem Bildschirm – Scanlines, eine Lochmaske oder das Raster eines LCDs –, ein paar Bildschirmpixel pro Pixel. Dieses Bild liegt außerhalb der Palette, ist also nur zum Ansehen und für Standbilder: Die Ebene geht unverändert weiter zum Sprite, und kein Sheet und kein Export trägt je den Bildschirm. Wähl sie, und die 2D-Ansicht zeigt den Bildschirm, zuerst in ganzen Stufen; pxr stages MODEL --style KIT --node crt schreibt es als crt.still.png. Setz sie ans Ende, vor Ausgabe. Bildschirm, Größe

Per Skript, wie jede Node:

pxr graph add my.pixor --node tidy-silhouette --in layer=3   # node 8, after Cleanup
pxr graph wire my.pixor --from 8 --to 4 --slot layer         # and into the palette

Glanz und die anderen Nodes, die eine Schattierung nehmen, gehören in Licht und Schatten, wo die Schattierung ist (außerhalb davon liefert die Gruppe eine fertige Ebene): Öffne die Gruppe in der App und füge sie dort hinzu, oder speichere die Gruppe als Kit, bearbeite sie und setz sie mit pxr graph swap --kit zurück.

Jede hat einen Golden Case (tests/golden/cases.txt, hand-*): der Graph, mit dem der Look beginnt, und die eingesetzte Node, als Style-Graph-Kit, das pxr render --style liest.

Jede Eigenschaft ist ein Eingang

Die Einstellungen einer Node sind ihre Eigenschaften: Zeilen in der Node, jede mit einem Anschluss links. Setze eine auf der Node oder verbinde einen Wert damit, und die Zeile wird grau und zeigt, was die Verbindung bringt. Die Werte sind eigene Nodes, unter Werte in der Bibliothek: Zahlenwert, An/Aus, Winkel, Text und die Rechnungen damit (Werte addieren, Werte subtrahieren, Werte multiplizieren, Werte dividieren, Kleinerer Wert, Größerer Wert, Ist über, Gegenüber, Beide an, Eins an, Wert wählen), deren Operanden ebenfalls Eigenschaften sind. Ein An/Aus, mit drei Nodes verbunden, schaltet alle drei auf einmal ein oder aus.

Eigenschaften stehen in benannten Gruppen (Von und Bis eines Umbelegens, Farben und Suche sie der Kanten); klick auf den Namen einer Gruppe, um sie einzuklappen. Eine Verbindung in eine eingeklappte Eigenschaft kommt am Namen ihrer Gruppe an.

Die Eigenschaften einer Gruppe sind ihre Werteingänge. Gruppiere Nodes, deren Eigenschaften von Werten gespeist werden, und jeder Wert wird ein Eingang der Gruppe, benannt nach der Eigenschaft, in die er geht, und nach den anderen Eingängen der Gruppe aufgeführt: eine Zeile auf der Box der Gruppe, dort gesetzt (was jede Eigenschaft darin setzt, die von ihm verbunden ist) oder von außen verbunden.

Die Gruppen, die die Abschnitte eines Styles einstellen – Licht und Schatten, Linienarbeit, Drahtgitter, Bereinigung –, werden von diesen Abschnitten eingestellt, aber auch von den Eigenschaften der Atome darin; die Palette sind die Farben des Frames, die der Abschnitt Farben einstellt.

Einmal pro Material, einmal pro Teil

Eine Node läuft einmal für den ganzen Frame, sofern du nichts anderes sagst. Wähle eine Node und setze Läufe im Inspektor auf Einmal pro Material oder Einmal pro Teil, dann läuft sie für jedes davon einmal und sieht jedes Mal nur dieses, als wäre der Rest des Frames leer; die Stücke werden Pixel für Pixel wieder zusammengesetzt. Ihr Titel sagt dann jedes Material oder jedes Teil.

Das verhindert, dass ein Weichzeichnen, ein Wachsen, eine Kontur oder eine Bereinigung von einem Teil ins nächste hinüberreicht: Eine Linien-Node, pro Teil ausgeführt, zieht eine Linie um jedes Teil, während dieselbe Node, einmal ausgeführt, eine um das ganze Modell zieht. Eine so eingestellte Gruppe führt alles darin auf diese Weise aus. Eine pro Teil ausgeführte Node schaut nicht auf den vorigen Frame, hat also keine Flacker-Hysterese.

Dieselbe Einstellung ist in der Kommandozeile oder in einer Look-Datei der scope der Node: pxr graph set my.pixor --which style --node cleanup --set scope=object (frame, material oder object).

Das Bild einer Node als eigene Ebene

Das Sprite ist das, was die Ausgabe-Node bekommt, aber auch das Bild jeder anderen Node kann geschrieben werden. Wähle die Node und gib unter Zusätzlicher Ausgang im Inspektor einen Namen ein: Ihr Titel sagt dann layer und den Namen, und jeder Export trägt sie neben lines und flat – ein eigenes Sheet, nach ihr benannt, mit dem Export layers (hero_rim.png), und eine verborgene Ebene der .aseprite, die ein Re-Bake wie Pixors andere Ebenen ersetzt. Ein Randlicht, eine Maske, die ein Shader liest, die Linien eines Teils: was auch immer eine Node erzeugt. Lösch den Namen, und sie ist kein Ausgang mehr. Sie kann keinen Namen tragen, den schon ein Sheet hat (final, lines, flat, normal, depth, emission und ähnliche), oder den eines anderen zusätzlichen Ausgangs.

Per Skript: pxr graph extra my.pixor --node line-work --name rim, und --drop, um sie wieder zu entfernen.

Ein Beispiel: verwitterte Farbe

Flache die Schattierung ab und wähle dann mit einer Rauschmaske zwischen der schattierten und der flachen Version, und die Oberfläche wirkt wie stellenweise abgeriebene Farbe:

 Light and shade --+---------------+
                   |               +--> Choose --> Combine --> ...
                   +--> Flatten ---+
 Noise ----------------------------+
  1. Füge Abflachen hinzu und verbinde Licht und Schatten damit.
  2. Füge Rauschen hinzu; setze seine Größe auf etwa 5 Pixel.
  3. Füge Nach Maske wählen hinzu: Licht und Schatten in A, Abflachen in B, Rauschen in die Maske.
  4. Zieh die Verbindung aus dem Eingang shading von Kombinieren heraus und verbinde stattdessen Nach Maske wählen.

Gruppen: eine Box, die du öffnen kannst

Eine Gruppe ist ein Graph, der als eine Node verwendet wird. Pixor liefert Verpixeln mit, die ganze Pipeline oben in einer einzigen Box (in der Bibliothek unter Pipelines), und die Gruppen, aus denen der Startgraph besteht: Ebenen-Render, Licht und Schatten, Linienarbeit, Drahtgitter und Bereinigung — getrennt benannt von den Durchgängen Schattierung und Linien, die in einer Box tun, was die Gruppen in Schritten tun. Keine davon ist ein bevorzugtes eingebautes Element.

Eine Gruppe öffnet sich an Ort und Stelle, in jedem Graphen. Doppelklicke sie (nicht auf den Titel) oder drücke den Pfeil rechts in ihrem Kopf (nur Gruppen haben einen): Die Gruppe selbst wird zum Rahmen des Graphen, aus dem sie besteht. Eine Gruppe in einer geöffneten Gruppe öffnet sich genauso, in deren Rahmen. Ihr Kopf läuft oben quer, ihre Parameter bleiben links, und wo ihr Bild war, liegen die Nodes darin, im selben Graphen. Verbindungen kreuzen den Rahmen nur an seinen beiden Seiten. Was die Gruppe speist, kommt an ihren Eingängen links an und verlässt sie an einem Anker rechts von jedem, wo der Rand der geschlossenen Box war, zu den Nodes darin, die es lesen. Jeder Ausgang ist ein Anker am rechten Rand des Rahmens, auf Höhe dessen, was ihn innen erzeugt, und alles, was diesen Ausgang liest, wird von dort verbunden. Nichts darin verlässt je den Rahmen, und die Nodes danach rücken zur Seite, um Platz zu machen – nur auf dem Bildschirm: Der Graph behält, wo sie waren. Jede Node darin wird wie jede andere bearbeitet: ihre Einstellungen, ihr Bild, ihre Verbindungen, ihr Name; eine Node, die im Rahmen eingefügt oder losgelassen wird, kommt in die Gruppe. Der Pfeil klappt sie wieder zu einer Box mit ihrem Bild zusammen. Welche Gruppen offen sind, gehört zum Fenster, nicht zum Projekt.

Eine eigene Gruppe bauen. Wähle die Nodes, die hineinsollen – zieh einen Rahmen um sie oder Shift-klicke sie; die gewählte zählt mit –, dann Gruppe (oder Ctrl+G): Sie werden eine Box, mit einem Eingang für jede hereinkommende Verbindung und dem, was der Rest des Graphen von ihnen las, als Ausgang. Sie öffnet sich sofort; F2 benennt sie. Kit speichern… in der Leiste behält die gewählte Gruppe als dein eigenes Kit (Die Gruppe als Kit speichern; der Dateidialog startet in dem Ordner, den die Bibliothek unter Meine Nodes aufführt), und die Bibliothek führt es dort auf, in jedem Projekt, im Graphen seiner Art; ohne gewählte Gruppe behält es den ganzen Graphen (Den Style-Graphen als Kit speichern). Das bedeutet Kit speichern… in jedem Graphen.

Eine Gruppe reist als Kit wie jeder andere Look, und pxr graph flatten look.pixorkit schreibt sie als die einfachen Nodes aus, für die sie steht; so liest sie sich als Diff statt als Blackbox.

Auch ein gespeicherter Look ist eine Gruppe. + › Kit verwenden… setzt einen, den Kit speichern… eines Styles oder pxr graph save geschrieben hat, als einzelne Gruppe in den angezeigten Graphen: Seine Ausgabe-Node wird zum Ausgang der Box, eine Ebene, die du verbindest – etwa über das eigene Ergebnis des Graphen per Ebene über oder in ein Nach Maske wählen, sodass ein Teil des Modells einen anderen Look bekommt. Doppelklicke darauf, um den Look darin zu sehen und zu ändern.

Woraus du bauen kannst

Neben den Durchgängen enthält die Bibliothek die kleinen Nodes, aus denen ein Look geschrieben wird: die Eingänge, Mathe-, Raum-, Masken-, Farb- und Misch-Nodes oben.

Die mitgelieferten Gruppen – Licht und Schatten, Linienarbeit, Drahtgitter und Bereinigung – bestehen aus Atomen, die jeweils eine Aufgabe mit ein paar Reglern erledigen: die Lichtstufen, die Mindestlänge einer inneren Linie, die eigenen Kanten des Modells, Einzelpixel, gefunden daran, wie sie zusammenhängen. Die ganzen Durchgänge, die sie ersetzen, sind weiterhin in der Bibliothek, für einen Graphen, der einen einzigen Kasten will. Du kannst jede davon weiterhin durch deine eigene Kette ersetzen – verbinde Hauptlicht mit Umbelegen, Stufe bei und Auf Palette, und du hast deine eigene Schattierung geschrieben, oder setz Randpixel als Maske eines Nach Maske wählen zwischen einen flachen Look und einen eine Stufe heller, und du hast das Drahtgitter selbst gezeichnet.

Einen Look teilen

Kit speichern… und Kit verwenden… eines Styles tragen einen Look von einem Projekt ins andere; Modell, Clips und Exporte bleiben, wie sie sind. Ein Style-Kit trägt auch den Graphen, also deckt „jedes Asset in meinem Spiel passt zusammen“ auch einen verdrahteten Look ab.

Rechtsklick auf die Leinwand › Zurück zum Graph des Presets verwirft den Graphen und kehrt zu Pixors Pipeline zurück. Das Projekt speichert dann gar keinen Graphen.

Jeder Graph hat dieselbe Leiste: was er zeigt (den Namen einer Pipeline, den Rückweg einer Routine), dann + (Node hinzufügen), − (die gewählte löschen), Frame, Aufräumen, Notiz, Gruppe, Kit speichern… und das Auge, das die Bilder der Nodes zeigt oder verbirgt – und jedes davon funktioniert in jedem Graphen.

Was es nicht tut

  • Keine Skript-Nodes und keine GPU-Nodes. Jede Node ist eine feste Funktion ihrer Eingänge, also liefert dasselbe Projekt jedes Mal dieselben Pixel, heute und in zehn Jahren (auf einem anderen Rechner fast immer: siehe FAQ).
  • Nodes ändern sich nie unter dir. Ein Graph merkt sich, gegen welche Version jeder Node er erstellt wurde, und altes Verhalten bleibt unter seiner alten Version in Pixor.
  • Kein allgemeiner Bildeditor. Das sind Pixors eigene Durchgänge, typisiert, damit sich nur Sinnvolles verbinden lässt. Malen, Filter und beliebige Mathematik gehören in ein Malprogramm.

Node-Referenz

Jede Node der vier Graphen, mit dem, was sie tut, was sie nimmt und liefert, und jeder Einstellung mit Bereich und Standardwert.

Style-Graph

KameraRendernEbeneBildFülllichtBewegungOberflächen-DitheringSchleifenphaseRampe der FarbeMetallischRauheitEmittierendVerdeckungDurchsichtigRandpixelSchattierungRampenpositionLinienLichtstufenWeltlichtGlanzlichterLeuchtenRampenverschiebungenSchattierungsfarbenSilhouetteKantenLinien aufräumenEinzelpixelVerbindungswegeDrahtfarbenGlatte EckenLinienfarbenMesh-KantenKombinierenBereinigungAuf PalettePaletteRampe stufenStufe, wo maskiertAbflachenSchwelleNach TeilNach MaterialNach AusrichtungRauschenRauschfeldNächste FarbeMusterFeste PixelNichtUndOderNach Maske wählenDither-MischungEbene überMalenZahlHinzufügenSubtrahierenMultiplizierenDividierenKleinerGrößerOhne VorzeichenBruchteilGanze ZahlHalten zwischenUmbelegenMischenStufe beiWeiche StufeÜbereinstimmungLängeAls ZahlVersatzWeichzeichnenSteigungWachsenSchrumpfenFormenEntstufenGlanzStufen weicherSchraffurHohlraumFarbkantenLinienstärkeSilhouette aufräumenPaletten-DitheringRampen-MapKachelfarbenSubpixel-BewegungCRTAusgabeZahlenwertAn/AusWinkelWörterWerte addierenWerte subtrahierenWerte multiplizierenWerte dividierenKleinerer WertGrößerer WertIst überGegenüberBeide anEins anWert wählenEbenen-RenderLicht und SchattenLinienarbeit

Action-Graph

ClipKeyframesRoutineActionSzenenzeitKonstantWelleRauschenRampeDrehenWippenSchwingenPulsierenGleitenMatheMischenZusammenführenSequenzZeitversatzGeschwindigkeitKürzenWiederholenUmkehrenVerzögerungStufeGrenzeUmbenennenAuswählenInstanzenAnwenden aufAusgabeZahlenwertAn/AusWinkelWörterWerte addierenWerte subtrahierenWerte multiplizierenWerte dividierenKleinerer WertGrößerer WertIst überGegenüberBeide anEins anWert wählen

Asset-Graph

SpritesBilddateiZusammenführenEbeneFrame-BereichHaltenSpiegelnTagAnordnenAblegenStapelnÜberlagernSheetDateiJSONAseprite-DateiGodot SpriteFramesNormal MapTiefenkarteEmission MapLinien- und FlächenebenenPaletteGIF pro ClipAPNG pro ClipVideo pro ClipLicht-KitPICO-8-CartBerichtSchattenebenePalettenvariantenPaper-Doll-EbenenParallaxe-EbenenTextdateiZIP-ArchivTilesetIconsAnimationsdateiTileset-JSONGodot TileSetTiled-TilesetDual-Grid-SheetGameMaker-AutotilesRPG-Maker-AutotilesUnity RuleTileLDtk-ProjektPalettenvarianten der KachelnKartenvorschauZahlenwertAn/AusWinkelWörterWerte addierenWerte subtrahierenWerte multiplizierenWerte dividierenKleinerer WertGrößerer WertIst überGegenüberBeide anEins anWert wählen

Szenen-Graph

ImportierenObjektKranzZeileRasterVerstreuenSchauen aufVariierenAbspielenZusammenführenGesehen vonDifferenzVerbindenVerschiebenSpiegelnUnterteilenVerschiebenHöhenfeldFaseAuf den Boden setzenAuf OberflächeAuf PunktenForm setzenAttributAuswählenAusgabeFormBildTextVolumenLampeEffektItemRequisiteFederTerrainZweigeLaubWasserWolkenHimmelWindLichtstrahlenTageszeitenChunksZahlenwertAn/AusWinkelWörterWerte addierenWerte subtrahierenWerte multiplizierenWerte dividierenKleinerer WertGrößerer WertIst überGegenüberBeide anEins anWert wählen

Was diese Seite beschreibt, gibt es in der Vollversion; die kostenlose Browser-Demo beschränkt sich auf den Standard-Look und das PNG-Sheet.

Im Browser testen Pixor holen