Abbildungs-Skript

Map Script

Mit der Komponente Abbildungs-Skript kannst du ein benutzerdefiniertes Programm in einer Computersprache (ein "Skript") angeben, das ein Bild auf der Grundlage von benutzerdefinierten Eingaben erzeugt, die vom Skript abgefragt werden. Im Wesentlichen ermöglicht es dir, deine eigenen Bilderzeugungs- und Bildverarbeitungskomponenten mit benutzerdefinierten Eingaben und interner Logik zu programmieren. Abbildungs-Skript ist eine Abbildungs-Komponente, die du in der Kategorie Erweitert in der Komponentenleiste finden kannst. Du kannst auch Kurven-Skripte schreiben – Details dazu findest du unter: Kurven-Skript.

Skripte in Filter Forge sind in Lua geschrieben. Die Filter Forge-Hilfe enthält keine Informationen über die Lua-Sprache selbst – bitte lies das Lua-Online-Handbuch unter: http://www.lua.org/manual/5.3/.
Anfängertutorials zur Skripterstellung findest du unter: Erste Schritte mit Skripting. Informationen zu den Funktionen und Variablen, die Skripten zur Verfügung stehen, findest du unter: Skripting API.

Eingabe-Tab

Inputs TabInputs Tab

Der Eingabe-Tab zeigt die Eingaben der aktuell ausgewählten Abbildungs-Skript-Komponente an und ermöglicht es dir, diese zu konfigurieren – Du kannst mit dem Eingabe-Editor neue Eingaben hinzufügen, vorhandene umbenennen oder löschen, ihre Sortierreihenfolge und andere Eigenschaften ändern. Die Werte dieser vom Benutzer hinzugefügten Eingaben können vom Skript abgefragt werden – Details dazu findest du unter: Eingaben aus Skripten referenzieren.

Skript-Tab

Script TabScript Tab

Der Skript-Tab enthält die folgenden Elemente:

Skriptfehler werden im Meldungsprotokoll angezeigt, das beim Auftreten eines Skriptfehlers eingeblendet wird. Du kannst die Komponente und die Skriptzeile, in der der Fehler aufgetreten ist, schnell ausfindig machen, indem du auf die Fehlermeldung doppelklickst. Um dir die Fehlersuche zu erleichtern, werden die Zeile und Spalte unter dem Cursor im Zeilen-/Spaltenindikator unten angezeigt.

Abbildungs-Skripte schreiben

Um erfolgreich ausgeführt werden zu können, muss eine Abbildungs-Skript-Komponente die folgenden Funktionen implementieren:

prepare()

Diese Funktion wird einmal pro Rendering-Sitzung aufgerufen, unmittelbar bevor die Rendering-Sitzung beginnt. Sie ermöglicht es dir, Vorberechnungen durchzuführen, die in get_sample(), das mindestens einmal pro Pixel aufgerufen wird, zu umfangreich wären. Die Funktion nimmt keine Argumente entgegen und gibt keine Werte zurück. Obwohl diese Funktion von Filter Forge benötigt wird, kannst du ihre Implementierung leer lassen, damit sie nichts tut.

Wenn du Vorberechnungen durchführst oder Eingaben innerhalb der Funktion prepare() abfragst, stelle sicher, dass du die Ergebnisse in Variablen und Tabellen speicherst, die nicht als lokal deklariert sind, da du sonst nicht in der Lage bist, mit der unten beschriebenen Funktion get_sample() des Skripts auf ihre Werte zuzugreifen.

Einige der Eingaben, wie z. B. Checkbox oder Int-Schieberegler, müssen nur über die Funktion prepare() abgefragt werden, sie können nicht über get_sample() abgefragt werden. Eine vollständige Liste der Eingaben, die von prepare() abgefragt werden müssen, findest du unter: Eingaben aus Skripten referenzieren.

r, g, b, a, aazone = get_sample(x, y)

Die Funktion get_sample() des Skripts liefert den Code für die Bilderzeugung. Sie wird von Filter Forge immer dann aufgerufen, wenn eine "vorgelagerte" Komponente (d. h. die Komponente, mit der die aktuelle Abbildungs-Skript-Komponente verbunden ist) oder ein Renderer ein Sample anfordert. Filter Forge verwendet einen Sample-basierten Ansatz zur Bilderzeugung. Skripte erzeugen keine Bilder, indem sie ihre Pixel direkt zeichnen. Stattdessen "fragt" Filter Forge sie: "Welche Farbe hat dein Bild an den Koordinaten x und y?", indem es ihre get_sample()-Funktion aufruft, die "antwortet", indem sie eine RGBA-Farbe zurückgibt. Weitere Informationen findest du unter: Die Sample-basierte Architektur von Filter Forge.

Eingaben aus dem Skript referenzieren

Filter Forge-Skripte können Eingaben abfragen, die vom Benutzer über das Dialogfeld Eingabe-Editor hinzugefügt wurden. Nicht zugeordnete Eingaben wie Checkboxen oder Int-Schieberegler müssen über die Funktion prepare() des Skripts abgefragt werden, während zugeordnete Eingaben wie Farb-Abbildung, Graustufen-Abbildung und Kurve über die Funktion get_sample() des Skripts gesampelt werden müssen. Details findest du unter: Eingaben aus Skripten referenzieren.

Skripteinstellungen

Im Dialogfeld Skripteinstellungen (erreichbar über die Schaltfläche Einstellungen unter dem Skriptbearbeitungsbereich auf dem Skript-Tab) kannst du Markierungen und andere Einstellungen für die aktuell ausgewählte Skript-Komponente ändern. Skripteinstellungen werden pro Komponente gespeichert, nicht global für alle Skript-Komponenten - ein Filter kann zwei Komponenten haben, von denen eine unsicher und die andere sicher ist.

Du benötigst diese Einstellungen, wenn du ein unsicheres Skript erstellst, sprich ein Skript ohne Sandboxing, das auf alle Lua-Funktionen zugreifen kann, oder ein Skript, das die globalen Variablen von Filter Forge wie VARIATION, GRÖßE oder NAHTLOS verwendet (siehe Skripting API für weitere Einzelheiten.) Einige der Variablen stehen dem Skript nur zur Verfügung, wenn ein entsprechendes Flag aktiviert ist. Einzelheiten findest du unter: Skripteinstellungen.

Urheberrecht © 2006-2022 Filter Forge, Inc. Alle Rechte vorbehalten.