Dokumentation | GOTHIC |
ZenGin: Partikel-Effekte | |
Autor: Dieter Hildebrandt | Version: 15.Juli 2001 |
Inhalt:
|
1 EinleitungDie Partikel-Effekte (ParticleFX, PFX), die sich durch das Partikel-System der ZenGin ab Version 0.71 erzeugen lassen, werden durch einen Satz von Parametern festgelegt. Die Definitionen der Partikel-Effekte mitsamt ihren Parametern werden in D-Scripten abgelegt. Folgende D-Scripte sind in diesem Zusammenhang wichtig:
Die Instanzen-Parameter von Partikel-Effekten werden in einer speziellen Console editiert und auch dort durch den Befehl save gespeichert. Zugang zu dieser Console bekommt man im Editor Spacer oder auch direkt aus Gothic heraus. Hinweise zur Benutzung von Consolen gibt es an anderer Stelle. Partikel-Effekte können u.a. auch aus .MDS Files heraus gestartet und mit Animationen synchronisiert werden. Siehe dazu die entsprechende Dokumentation. Zur Performance ist zu sagen, daß ein Partikel-Effekt weniger Rechenzeit beansprucht, je weniger Partikel er enthält, je weiter er von der Kamera entfernt ist und je weniger zeitintensive Einstellungen bei den Parametern gewählt worden sind (dazu unten mehr). Interessant ist, wie groß die Bedeutung der Entfernung der Partikel von der Camera für die Performance ist. Die Aktivierung folgender Features steigert den Rechenzeitbedarf deutlich:
2 ParticleFX ParameterDie Parameter der Partikel-Effekte werden in der Regel über die Console innerhalb des Spacers editiert, können aber auch in den entsprechenden .d Sourcefiles geändert werden. In diesem Abschnitt werden die über 40 Parameter eines Partikel-Effekts thematisch zusammengefaßt erläutert. Die Tabelle führt für jeden Parameter dessen Name, D-Type, erwartete/gültige Werte und schließlich beispielhafte Werte auf. Parameter, deren Namen mit einem "_S" enden, sind vom Typ String und erwarten als Eingabe entweder einen von mehreren vorgegebenen Bezeichnern, die in der Spalte "erwartete Werte" durch Anführungszeichen geklammert und durch Kommata getrennt aufgeführt sind, oder eine Liste von Zahlen. Falls für einen Parameter aus einer Liste von vorgegebenen Bezeichnern auszuwählen ist und der Parameter entweder einen leeren oder falsch geschriebenen Wert enthält, wird die erste Alternative aus der Liste der möglichen gewählt. Ein "_S" Parameter ohne Wert ist also kein Fehler. "BOOL" deutet daraufhin, daß ein boolescher Wahrheitswert erwartet wird, 0 für FALSCH, oder 1 für WAHR. "VECn" steht für einen n-dimensionalen Vektor aus Real-Zahlen, "ANGLE" steht für Winkel Angaben in Grad. Parameter, die das Kürzel "FOR" enthalten, fassen die Angabe einer "Frame-of-Reference", also Bezugssystem-Angabe. Gültig sind hier "world" und "object", wobei letzteres mehr Rechenzeit kostet und nur wenn nötig gewählt werden sollte. 2.1 Emitter: Zeitliches Ausstoss-Verhalten
"pps" steht für "particles per second". Diese Parameter steuern das zeitliche Ausstoss-Verhalten des Emitters, daß auch über die Zeit durch Angabe von ScaleKeys animiert werden kann. Falls ScaleKeys angegeben werde, wird die Liste dieser Keys mit einer gewissen Geschwindigkeit (ppsFPS) durchlaufen, wobei optional zwischen den einzelnen Keys interpoliert wird (ppsIsSmooth). Wenn PpsIsLooping auf 1 gesetzt ist, wird der Durchlauf durch die Liste fortwährend wiederholt, ansonsten wird die Liste nur ein einziges mal durchlaufen und der PFX stirbt am Ende, sobald der letzte Partikel verschwunden ist. Die einzelnen ScaleKeys variieren über die Zeit den unter PpsValue angegebenen Wert. In diesem Fall ist die Einheit dieses Wertes "particles per second". Falls keine ScaleKeys angegeben sind und auch das Flag PpsIsLooping den Wert 0 hat, so wird der Wert des PpsValue nicht als "pps" interpretiert, sondern als die Anzahl Partikel, die auf einmal zu Beginn des Effektes erzeugt werden. Beachte: PpsIsLooping=0; => Effekt löscht sich am Ende selbst Beispiele: ONCE PpsValue = 40; PpsScaleKeys_S = ""; PpsIsLooping = 0; PpsIsSmooth = 0; PpsFPS = 0; NONSTOP PpsValue = 40; PpsScaleKeys_S = ""; PpsIsLooping = 1; PpsIsSmooth = 0; PpsFPS = 0; TIMESPAN PpsValue = 40; PpsScaleKeys_S = "1.0"; PpsIsLooping = 0; PpsIsSmooth = 0; PpsFPS = 5; PUFFS PpsValue = 40; PpsScaleKeys_S = "1.0 0 0 0 1.0 16.0 0.2 0.5"; PpsIsLooping = 1; PpsIsSmooth = 1; PpsFPS = 0.8; 2.2 Emitter: Räumliches Ausstoss-Verhalten
Diese Parameter legen die Orte fest, an denen neue Partikel erschaffen werden. Zu diesem Zweck werden Formen/Shapes mitsamt einiger Eigenschaften angegeben, auf denen die Partikel generiert werden. Die Größe, der lokale Offset und die über die Zeit variierte Skalierung der Shapes kann ebenfalls festgelegt werden.
Falls als ShapeType "mesh" gewählt wurde, kann unter ShpMesh der Name des Meshes als .3ds File spezifiziert werden. Falls ShpMeshRender auf 1 gesetzt ist, wird das Mesh zusammen mit den Partikeln gerendert. Die Parameter ShpScale* legen die über die Zeit variierte Skalierung der Shape fest und verhalten sich ähnlich wie die entsprechenden pps* Parameter. 2.3 Partikel: Start Richtung und Geschwindigkeit
Diese Parameter legen die Flugrichtung und Geschwindigkeit neuer Partikel fest. Im DirMode "none" wird eine rein zufällige Flugrichtung festgelegt, was bedeutet, daß die Partikel kugelförmig vom Emitter abstrahlen. Der DirMode "dir" legt fest, daß sich die Flugrichtung eines neuen Partikels aus den Werten der Parameter DirAngleHead und DirAngleElev ergibt, wobei ersterer die Heading angibt und zweiterer die Elevation. Diese beiden werden werden jeweils um die Werte der Parameter DirAngleHeadVar und DirAngleHeadVar variiert (+/- Varianz). Es ist anzumerken, daß aus Optimierungs-Gründen die Winkel nicht exakt eingehalten werden, sondern evtl. streuen, sich nicht-uniforme Verteilungen ergeben, oder sogar völlig unerwartete Ergebnisse liefern. In diesen Fällen sollten sich allerdings trotzdem durch kleine Justierungen die gewünschten Effekte erzielen lassen. Im DirMode "target" wird die Flugrichtung aller neu erzeugter Partikel auf ein gemeinsames Ziel hin asugerichtet. Die Koordinaten dieses Ziels werden entweder in lokalen oder Weltkoordinaten (DirModeTargetFOR) als Parameter DirModeTargetPos angegeben. Im DirMode "mesh" werden die Partikel von den Polys des Meshes mit der Varianz DirAngleHeadVar und DirAngleElevVar abgestrahlt. VelAvg und velVar legen die durchschnittliche Geschwindigkeit und die +/- Varianz davon fest. 2.4 Partikel: Lebensdauer
2.5 Partikel: Flugverhalten
Der unter flyGravity anzugebene Kraft-Vektor bezieht sich auf das Weltkoordinaten-System. FlyCollDet_B legt das Kollisionsverhalten der Partikel fest: 0= kein Test auf Kollision, 1= bremsende Reflektion, 2= beschleunigende Reflektion, 3= Geschwindigkeit auf null setzen, 4= Partikel entfernen. Eine aktivierte Kollisionserkennung benötigt relativ viel Rechenzeit. 2.6 Partikel: Visualisierung
VisName gibt den Filenamen des für die Partikel zu benutzenden Visuals an. [Zur Zeit funkionieren nur (animierte) Textures, Meshes folgen evtl. noch. Auch werden alle Partikel mit demselben Visual ausgestattet]. VisOrientation legt fest, mit welcher Orientierung die Visuals gerendert werden. "none" rendert Textures als zum Bildschirm ausgerichtete Decals, während "velo" die Texture-Decals an dem Geschwindigkeits-Vektor der Partikel ausrichtet. Parameter, die ein "tex" im Namen enthalten, wirken sich nur aus, wenn alsVisuals Textures benutzt werden. VisTexIsQuadPoly legt fest, ob für die Partikel Tris oder Quads benutzt werden sollen. Tris sind i.A. wesentlich schneller als Quads. Quads sollten nur in absoluten Ausnahmefällen benutzt werden. VisTexAniIsLooping legt fest, ob eine animierte Partikel-Textur geloopt auf dem letzten Frame gestoppt werden soll. Die Partikel Attribute "color", "size" und "alpha" werden über die gesamte Lebensdauer des Partikels hinweg linear zwischen Start und Endwert interpoliert. Die Bedeutung der Parameter sollte klar sein. 2.7 Weitere Effekte
Trail:
Mark: |