Pinsel
Ein Pinsel besteht aus Facetten, die beschreiben, was er ist und wie er sich verhält, nicht, welche Engine ihn zeichnet.
Nur id, name, kind und tip.shape sind erforderlich; jedes andere Feld übernimmt den Standardwert
der Engine, die die Facetten auswählen, sodass ein Pinsel nur das speichert, was ihn ausmacht. Die Bibliothek enthält die
integrierten Voreinstellungen (schreibgeschützt) und die Pinsel des Benutzers, die von jedem Editor, der malt, gemeinsam genutzt werden.
| Facette (Feld) | Was sie enthält |
|---|---|
| Kind | mark trägt ein Material auf; tool bearbeitet bereits aufgetragene Farbe. |
| Medium und Variante | Striche: was aufgetragen wird (paint, ink, dry, spray) und welche Art (oil, watercolor, gouache, pencil, charcoal, airbrush, marker, highlighter...). Beschreibend, um Pinsel zu finden; ein nasser Pinsel, dessen Variante watercolor, gouache oder oil ist, malt dieses Medium. |
| Werkzeug | Werkzeuge: eraser, blender, smudge, und auf nasser Farbe water, dryer, blow, blot, wet-blend, wet-drag. |
| Spitze | shape (round, flat, chisel sind Ellipsen, definiert durch roundness und angle; bristle hat einen Haarbüschel; stamp nimmt die Form der stamps an: ein Editorstempel editor:star, jeder Sticker-Ref von find_stickers oder eine Bildquelle source:<id> von list_brush_sources), Größe in px, Härte (eine Bildspitze verblasst zu den Rändern hin unter 1), Abstand, Deckkraft, Fluss, Mischmodus und grain: Textur innerhalb jedes Tupfers (source: ein Muster wie rough, canvas, sanded oder source:<id>; mode texturised bleibt auf der Leinwand fixiert, moving rollt mit der Spitze; scale, depth, contrast, invert). |
| Striche | continuous Tupfer (Standard; bei einer Stempelspitze hat jeder Tupfer die Form des ersten Stempels, in der Farbe), scatter (Spray: Tröpfchen über die Spitze verteilt, density, size), particles (Stränge, Federn, Bänder, Funken; strukturierte Punkte aus den Stempeln) oder objects (jeder Strich ein bearbeitbarer Sticker, in seinen eigenen Farben). |
| Dynamik | Stiftgefühl: Druck auf Größe und Deckkraft, Glättung, Neigung, Geschwindigkeit, Jitter (sizeJitter, angleJitter für Rotation, opacityJitter, scatter), Rotation, count (Tupfer pro Abstandsschritt, jeder gejittert) und flip (Tupfer zufällig spiegeln: x, y, xy). |
| Verhalten | surface dry, wet (wet-Einstellungen) oder thick (thick-Impasto-Einstellungen); Papier grain; exchange (Aufnehmen und Mischen; ein reservoir erzeugt einen Mischpinsel); Werkzeug strength. |
| Licht | Licht, das der Pinsel abgibt (amount), plus empfohlenes Layer-spill und glow. |
| Bewegung | Animation nach dem Malen (Live-Effekt-Farbe, Partikel waveSpeed). |
| Farbe | Eine default-Farbe, eine palette mit bis zu 16 Farben, own (immer seine eigene Farbe). Jede ist eine Hex- oder rgba()-Farbe, ein Hell-/Dunkel-Paar { light, dark }, ein Farbverlauf oder eine Effektfarbe. Ein Farbverlauf als Standard wird immer gemalt; ein Vollton- oder Hell-/Dunkel-Standard wird zur Editorfarbe, wenn der Pinsel ausgewählt wird (es sei denn, der Benutzer hat sie gesperrt), aufgelöst für das Farbschema. Leinwandstriche und Vektorpinselstriche übernehmen sie ebenfalls, wenn ihnen keine Farbe zugewiesen wird. Leinwand und Vektor haben dieselbe Sperre (canvas.setColorLocked, vector.setColorLocked), und eine Leinwandfarbe, die von einem Hell-/Dunkel-Standard übernommen wird, folgt dem Schema wie der Farbeditor; bereits erstellte Vektorstriche behalten ihre Farbe. |
So werden Medien auf Facetten abgebildet: Ein Bleistift oder Kohle ist dry mit hohem grain und Neigung;
Tinte ist eine harte runde Spitze mit Druck-zu-Größe (ein Füller verdünnt mit Geschwindigkeit); Aquarell
und nasses Öl sind paint auf surface: 'wet'; Impasto ist surface: 'thick'; ein
Airbrush ist spray, weich und mit geringem Fluss; eine Sprühdose ist spray mit marks scatter; ein
Kugelschreiber, Gelstift oder Fineliner ist ink mit einer kleinen harten Spitze (ein Fineliner ohne
Druck-zu-Größe); Wachsmalstift und Kreide sind dry mit hohem grain; ein Textmarker ist
ink / highlighter, eine multiplizierende Meißelspitze mit etwas Licht, spill Radius 0, fluoreszierendes Gelb
standardmäßig; ein Stempel-Pinsel ist eine stamp-Spitze mit kontinuierlichen Strichen; Partikel- und
Sticker-Pinsel sind marks-Partikel oder -Objekte auf einer stamp-Spitze. Ein Bild-Pinsel (ein
eingescannter Kohlestrich, ein Blatt, eine Trockenpinsel-Textur) ist eine stamp-Spitze, deren Stempel eine Bildquelle
ist, normalerweise mit tip.grain, angleJitter, flip und etwas scatter, damit Wiederholungen nicht sichtbar sind.
Bildquellen sind die Bilder, aus denen Spitzen und Körnung bestehen, die in der Bibliothek mit ihren
Bytes (eine graue Maske, maximal 512 px) und ihrer Lizenz gespeichert werden. add_brush_source erstellt eine aus einer PNG:
die Striche werden aus ihrer Transparenz, ihren dunklen Teilen (ein Scan auf Papier) oder ihren hellen Teilen
(weiß auf schwarz) gelesen. Bibliotheksdateien (export_brushes) und gespeicherte Gemälde tragen die Quellen, die ihre Pinsel
benennen, sodass sie überall gleich malen und wiedergeben.
Gastprofile
Jeder Gast rendert einen Teil davon. check_brush gibt an, was ein Gast ablehnt (Fehler) und was er
ohne malt (Warnungen), jeweils mit einer Lösung; Listen und Schreibvorgänge verwenden den aktuellen Gast.
| Gast | Rendert |
|---|---|
Farbeditor (paint) | Alles, einschließlich Bildspitzen und Spitzenkörnung. |
Bildeditor (image) | Trockene Tupfer auf runden, flachen und meißelförmigen Spitzen, den Mischpinsel und den Radierer; keine nassen oder dicken Oberflächen, Partikel, Objekte, Stempel- oder Bildspitzen, Licht oder Bewegung; malt ohne Spitzenkörnung und count. Wähle einen mit set_brush_preset. |
Leinwand (canvas) | Trockene Pinseltupfer entlang eines Pfads (keine Werkzeuge, nass, dick, Partikel, Objekte, Stempel- oder Bildspitzen oder Licht); Geschwindigkeit, Spitzenkörnung und count werden ignoriert. Zeichne mit einem als canvas.drawFreehand brush. |
Vektorstriche (vector) | Wie Leinwand, plus nasse Farbe (Aquarell, Gouache, nasse Öle: simuliert im eigenen Bereich des Strichs, dann getrocknet), den Mischpinsel und die Werkzeuge zum Verwischen und Verschmieren (wirken auf die Formen unter dem Strich); Lichtpinsel malen als einfache Farbe. Die nassen Werkzeuge (Wasser, Föhn, pusten, nass mischen, nass ziehen, Tupfer), dicke Farbe, Partikel, Objekte und Radierer werden abgelehnt. Zeichne mit einem als vector.addBrushstroke brushId. |
Jeder Gast listet die Voreinstellungen auf, die sein Profil zulässt, und die gespeicherten Pinsel der Bibliothek, die es zulässt,
und jedes registriert diese Werkzeuge mit seinem eigenen Profil, sodass list_brush_presets die Pinsel dieses Gastgebers anzeigt.
Personen bearbeiten Pinsel in jedem Gast mit demselben Pinseleditor, der auf dieselbe Weise eingeschränkt ist: Er zeigt nur
die Bedienelemente an, die der Gast verwendet (keine Geschwindigkeit auf der Leinwand, keine Körnung im Bildeditor), und was der Pinsel
für andere Gastgeber hat, wird beim Speichern beibehalten. Die Werkzeuge folgen derselben Regel (siehe Fallstricke).
Ein gespeicherter Pinsel, der in Leinwand- oder Vektorstrichen verwendet wird, wird in den Strich kopiert, sodass das Dokument gerendert wird,
wo die Bibliothek nicht ist; eine spätere Änderung des Pinsels in der Bibliothek ändert nicht bereits gezeichnete Striche.
Arbeitsmethode
- Finde den nächsten Pinsel.
list_brush_presetsmitmedium,variety,kindodertext. Es listet nur das auf, was dieser Gast rendern kann (all: truelistet den Rest mitrenderable). - Lies ihn aus.
describe_brushfür die vollständige Spezifikation, die Engine, in die er aufgelöst wird, und seine Prüfung. - Erstelle einen Pinsel.
create_brushmit einer neuenid, einemname,basedOnder nächsten Voreinstellung und nur den Facetten, die sich ändern (Objekte werden zusammengeführt; Listen ersetzen). Leseproblems(Werte, die begrenzt oder verworfen wurden) undwarnings. Ein Pinsel, den der Gast nicht rendern kann, wird abgelehnt und es wird nichts gespeichert. - Betrachte ihn.
preview_brush, wenn der Gast einen Renderer hat; male andernfalls einen Teststrich im Editor (set_brushmit der neuen ID, dannpaint_stroke). - Stimme ihn ab.
update_brushmit den zu ändernden Facetten oderunset, um ganze Facetten zu entfernen. Es gibt die Blattpfadechangedzurück. Integrierte Voreinstellungen können nicht geändert werden: zuerstduplicate_brushausführen. - Aus einem Bild.
add_brush_sourcemit der PNG (channel, wennautodas falsche Teil auswählt; behalte dielicence, mit der sie kam), danncreate_brushmittip: { shape: "stamp", stamps: ["source:<id>"] }für eine Bildspitze odertip.grain.sourcefür Körnung.list_brush_sourceslistet sie auf und welche Pinsel jede verwenden. - Ein Paket importieren.
import_brush_packmit der Datei (base64), ihremfileNameund derlicence, mit der sie kam. Lesebrushes(mitrenderablefür diesen Gast),unsupported(was nicht zugeordnet wurde) undlicence, dannpreview_brusheinige und stimme sie mitupdate_brushab. - Teile es.
export_brushesschreibt eine Bibliotheksdatei;import_brushesfügt eine hinzu (Version-1-Dateien älterer Pinsel des Farbeditors werden migriert).check_brushmithost, bevor du einen Pinsel an einen anderen Editor weitergibst.
Best Practices
- Beginne mit der nächsten Voreinstellung und ändere zwei oder drei Facetten; ein Pinsel von Grund auf erhält Engine-Standardwerte, die selten zu einem Medium passen.
- Teste auf dem Papier und der Farbe, auf der der Pinsel verwendet wird: Körnungsreaktion und Lasur sehen auf glattem und rauem Papier unterschiedlich aus.
- Gib Lichtpinseln dunkles Papier und gib Textmarkern einen
light.spillRadius von 0, damit der Glanz auf dem Strich bleibt. - Halte
varietywahrheitsgemäß (so finden die Leute den Pinsel) und fügetagsfür den Einsatzzweck hinzu (lettering,foliage). - Gib einem Pinsel nur dann einen
colour.default, wenn das Medium eine typische Farbe hat (blauer Kugelschreiber, gelber Textmarker): Die Auswahl des Pinsels setzt ihn als Benutzerfarbe. Verwende ein Hell-/Dunkel-Paar, wenn die richtige Farbe vom Hintergrund abhängt (weiße Kreide auf einer dunklen Tafel, Graphit auf Papier), und einepalettefür die anderen üblichen Farben. Dunkle Tinten brauchen auch ein Paar (marineblau / hellblau, fast schwarz / fast weiß): Ein einzelner dunkler Standard verschwindet in einem Editor mit dunklem Schema. Überprüfe jede Seite gegen den Hintergrund, für den sie bestimmt ist (mindestens 3:1).colour.ownnur für Pinsel, die immer ihre eigene Farbe malen müssen (ein Regenbogenmarker). - Vorschauen und Thumbnails wählen ihre eigene Farbe basierend auf dem Hintergrund, auf dem sie gezeichnet werden (der Standardwert des Pinsels, wenn er dort abgelesen wird, sonst eine Farbe für das Medium). Gib einem Pinsel keinen Standardwert nur, um seine Vorschau sichtbar zu machen: Das Auswählen des Pinsels macht diesen Standardwert zur Benutzerfarbe.
- Stempelspitzen malen die Form des Stickers in der Farbe; um die eigenen Farben eines Stickers zu behalten, verwende
stattdessen
marks-Objekte. - Bildspitzen: Beschneide das Bild auf den Strich und gib ihm einen transparenten oder einfarbigen Hintergrund, sodass der
Tupfer der Strich und nicht sein Kästchen ist. Abstand 0,2–0,4 für einen durchgehenden Strich, über 1 für einzelne
Abdrücke; füge
angleJitter,flipundscatterhinzu, damit dasselbe Bild nicht sichtbar wiederholt wird. - Körnung:
texturised-Körnung (Standard) ist eine Textur, die der Strich freilegt, wie Papier;moving-Körnung gehört zur Spitze und rollt mit ihr (ein Schwamm, eine Walze). Tiefe 0,4–0,7 wird als Textur gelesen; 1 hinterlässt nur die Spitzen. Verwendetip.grainfür die Textur des Werkzeugs undbehaviour.grainfür die des Papiers.
Fallstricke
- Eine Facette, die der Gast ablehnt.
create_brushlehnt sie ab, undupdate_brushlehnt eine Änderung ab, die sie hinzufügt, mit der Facette und der Lösung;check_brushgibtdegradedzurück, den Pinsel mit diesen Facetten entfernt, um davon auszugehen. - Einen Pinsel in einem Gast abstimmen, der nicht alles malen kann.
update_brushbehält, was der Pinsel bereits für andere Gäste hat (das Licht eines Malpinsels, geändert von der Leinwand aus) und listet es inkeptauf; es wird nicht entfernt. Um eine Kopie nur für diesen Gast zu erstellen, verwende stattdessencreate_brushmitcheck_brushsdegraded-Pinsel. - IDs. Integrierte IDs können nicht wiederverwendet oder geändert werden; eine belegte ID wird abgelehnt (aktualisiere sie stattdessen).
- Stempel. Jede Art von Strichen akzeptiert jeden Sticker-Ref von
find_stickersoder einen Editorstempel (editor:star...). Ein Ref, den die Stickerbibliothek des Gastes nicht laden kann, wird zusammen mit den nächstgelegenen Refs abgelehnt. Nur der Farbeditor rendert Stempelspitzen und Streustriche; Leinwand, Vektor und der Bildeditor lehnen sie ab (check_brushsagt es). - Bildquellen. Ein
source:<id>, das die Bibliothek nicht hat, wird mit den nächstgelegenen IDs abgelehnt; füge es zuerst hinzu. Das Ersetzen des Bildes einer Quelle (overwrite) ändert jeden Pinsel, der sie benennt, aber nicht bereits gemalte Striche. Objektstriche akzeptieren nur Sticker, daher wird eine Bildquelle dort verworfen (problemssagt es). Pinselpakete sind oft nur für den persönlichen Gebrauch lizenziert: Behalte denlicence-Text mit der Quelle. - Pinselpakete. Nur die Spitzen (und die Procreate-Körnung) werden importiert: Dynamik, Bleistiftkurven,
Muster, Doppelpinsel und Nasseinstellungen werden in
unsupportedaufgelistet, sodass importierte Pinsel mit Standardgefühl malen; stimme sie ab. Importierte Bildspitzen sind Stempelspitzen, daher können Leinwand, Vektor und der Bildeditor sie nicht malen (renderablefalse). Pakete sind oft nur für den persönlichen Gebrauch: Gib ihrelicenceweiter und behalte sie; verteile niemals eine Bibliotheksdatei mit importierten Pinseln ohne Prüfung weiter. - Werte außerhalb des Bereichs werden vom Schema abgelehnt (
tip.sizeist 1..2500 px); ein gespeicherter Pinsel wird beim Import begrenzt und inproblemsgemeldet. - Der Farbeditor malt aus dieser Bibliothek. Sein
set_brushwählt einen Pinsel anhand der ID hier aus und legt Facetten darüber, ohne zu speichern;create_brush/update_brushspeichern einen. Ein Farbgast registriert diese Werkzeuge mit seiner eigenen Vorschau (createPaintBrushLibraryToolProvider), daher hat der Farbeditor keine eigenen Listen-, Speicher-, Export-, Import- oder Thumbnail-Werkzeuge.
Workflow-Fertigkeiten
pixerate-brushes-design: Von einer Beschreibung („ein weicher rosa Textmarker“, „Kreide für die Leinwand“) zu einem gespeicherten, geprüften Pinsel.
Werkzeugreferenz
| Werkzeug | Verwendung |
|---|---|
list_brush_presets | Finde Pinsel, die dieser Gast rendert: kind, medium, variety, tool, tag, text, source (all, builtin, user), all, offset, limit. Gibt brushes (id, name, builtin, kind, medium, variety or tool, category, engine, tip, size, marks, surface, light) und total zurück. Rufe zuerst auf. |
describe_brush | Ein Pinsel nach id: seine vollständige Facette brush (mit seiner colour: default, palette, own), builtin, engine, category und check für diesen Gast (einschließlich Stempelsticker). Unbekannte IDs werden mit den nächstgelegenen abgelehnt. |
create_brush | Speichere einen neuen Pinsel: id, name, optional basedOn, und die Facetten, einschließlich colour (um den aktuellen Pinsel eines Editors zu behalten, übergib den brush, den sein get_brush zurückgibt). Für diesen Gast normalisiert und geprüft (und seine Stickerbibliothek, für Stempelspitzen); abgelehnte Pinsel speichern nichts. Gibt id, brush, engine, problems, warnings zurück. |
update_brush | Ändere die Facetten eines vorhandenen Pinsels: id und die zu setzenden Facetten oder unset (ein Array mit vollständigen Facettennamen, die entfernt werden sollen, z. B. ["light"]). Ersetzt Blätter; Objekte werden zusammengeführt, wenn kein unset auf derselben Pfadebene. Gibt brush, problems, warnings, changed (die geänderten Facettenpfade) und kept (Facetten, die der Gast nicht rendert, aber beibehält) zurück. |
duplicate_brush | Kopiere einen vorhandenen Pinsel: sourceId und eine neue id (die nicht belegt sein darf) und optional einen neuen name. Gibt brush, engine zurück oder lehnt ab, wenn die ID belegt ist oder die Quelle nicht existiert. |
remove_brush | Lösche einen Pinsel des Benutzers nach id. Integrierte Pinsel und nicht vorhandene IDs werden mit den nächstgelegenen IDs spezifiziert abgelehnt. |
check_brush | Prüfe einen Pinsel (nach id) gegen einen host: paint, image, canvas, vector. Gibt die gerenderte brush (mit Facetten, die nicht gerendert werden können, entfernt) und ein Array aus issues zurück: jedes mit dem Facettenpfad, der Beschreibung, ob es sich um einen error (kann nicht rendern) oder warning (rendert ohne) handelt, und die vorgeschlagene fix. |
export_brushes | Baue eine exportierbare Bibliotheksdatei (ein Blob). Gibt file (base64) und den Inhalt ids (nur die gespeicherten Pinsel, die der Gast renderable findet, wenn keine IDs übergeben wurden) zurück oder lehnt fehlende oder integrierte IDs ab. |
import_brushes | Füge eine exportierte Datei hinzu: file (base64). Gibt brushes (jeder mit seiner gerenderten brush, renderable für diesen Gast) und migrated (wenn eine Version-1-Datei des Mal-Editors migriert wurde). |
import_brush_pack | Importiere eine Photoshop .abr- oder Procreate .brush / .brushset-Datei: file (base64), fileName, licence (der Text der Lizenz, unter der das Paket freigegeben wurde). Gibt brushes (mit gerenderter brush und renderable), unsupported (was in den importierten Pinseln nicht zugeordnet werden konnte, einschließlich Dateiname des Werkzeugs und Grund), licence (der abgeleitete Lizenztext aus dem Quellpaket) und problems (Werte, die während des Importvorgangs begrenzt oder verworfen wurden) zurück. |
preview_brush | Generiere eine Vorschauminiatur für einen Pinsel: id, size (maximale Abmessung, Standard 256). Gibt base64 (ein PNG-Bild, das auf einem für das Medium geeigneten Hintergrund gemalt wurde) zurück oder null, wenn der Gast keine Vorschau unterstützt. |
add_brush_source | Füge eine Bildquelle hinzu: file (base64, PNG-Format), das der Benutzer lizenziert hat, optional channel (auto, alpha, dark, light) und licence. Gibt die id der Quelle zurück. |
list_brush_sources | Liste die Bildquellen auf, die die Bibliothek enthält: id (zur Verwendung in Quell-Refs), eine thumbnail (base64), den Quell-type (tip, grain), die licence (der vollständige Lizenztext), eine Liste der Pinsel-ids, die diese Quelle verwenden (nach Facettenpfad gruppiert, z. B. tip.stamps), und die Source-Größe. |
list_brush_sources | (Fortsetzung) offset, limit, mode (all, tip, grain). Gibt sources und total zurück. |