Partikelobjekt: Unterschied zwischen den Versionen

Aus AquaSoft Wiki
Zur Navigation springenZur Suche springen
Zeile 5: Zeile 5:
 
     function InitialSpeed: [[IParticleRangeValue]]   
 
     function InitialSpeed: [[IParticleRangeValue]]   
 
     function Speed: [[IParticleRangeValue]]  
 
     function Speed: [[IParticleRangeValue]]  
     function InitialDirection: [[IParticleVectorRangeValue]]  
+
     function InitialDirection: [[IParticleRangeValue|IParticleVectorRangeValue]]  
     function Direction: [[IParticleVectorRangeValue]]  
+
     function Direction: [[IParticleRangeValue|IParticleVectorRangeValue]]  
 
     function InitialSize: [[IParticleRangeValue]]  
 
     function InitialSize: [[IParticleRangeValue]]  
 
     function Size: [[IParticleRangeValue]]  
 
     function Size: [[IParticleRangeValue]]  
     function InitialRotation: [[IParticleVectorRangeValue]]  
+
     function InitialRotation: [[IParticleRangeValue|IParticleVectorRangeValue]]  
     function Rotation: [[IParticleVectorRangeValue]]  
+
     function Rotation: [[IParticleRangeValue|IParticleVectorRangeValue]]  
     function InitialRotationFrequency: [[IParticleVectorRangeValue]]  
+
     function InitialRotationFrequency: [[IParticleRangeValue|IParticleVectorRangeValue]]  
     function RotationFrequency: [[IParticleVectorRangeValue]]  
+
     function RotationFrequency: [[IParticleRangeValue|IParticleVectorRangeValue]]  
  
 
     property Move: [[TParticleMove]]  
 
     property Move: [[TParticleMove]]  
     function InitialMoveStrength: [[IParticleVectorRangeValue]]  
+
     function InitialMoveStrength: [[IParticleRangeValue|IParticleVectorRangeValue]]  
     function MoveStrength: [[IParticleVectorRangeValue]]  
+
     function MoveStrength: [[IParticleRangeValue|IParticleVectorRangeValue]]  
 
     function InitialMoveSineFrequency: [[IParticleRangeValue]]  
 
     function InitialMoveSineFrequency: [[IParticleRangeValue]]  
 
     function MoveSineFrequency: [[IParticleRangeValue]]
 
     function MoveSineFrequency: [[IParticleRangeValue]]
Zeile 37: Zeile 37:
 
     property Seed: Int64   
 
     property Seed: Int64   
 
   end;
 
   end;
 +
</code>
 +
 +
= Beispiel =
 +
 +
Einem Partikelsystem werden folgende [[IParticleRangeValue|RangeValues]] gegeben:
 +
* [[InitialSize]] zwischen 10 und 20.
 +
* [[Size]] zwischen 50 und 100 ab 0ms und 0 und 50 ab 1000ms
 +
 +
Partikel 1 bekommt zufällig eine Größe zwischen 10 und 20, zB. 15. Der Size-Wert modifiziert diesen Initialwert, in dem Fall prozentual. Das heißt das Partikel ist zwischen 50% * 15 und 100% * 15 groß ab Sekunde 0 seiner Lebenszeit. Der genaue Wert wird durch die zufällig gewählte Wichtung ermittelt, sagen wir 50%. Die Wichtung legt also die Mitte des Bereichs fest. Demnach ist die Wichtung 75%, also die Mitte zwischen 50 und 100. Daher hat der Partikel zum Zeitpunkt 0ms (also dem Zeitpunkt seines Emittierens) die Größe 75% * 15 = 11,25.
 +
Der Size-Wert ändert sich über die Zeit. Allerdings bleibt die Wichtung pro Partikel gleich. Der Size-Wert sagt, dass die Partikel bei Sekunde 1 nur noch zwischen 0 und 50% des Initialwertes groß sind. Durch die Wichtung von 50% ergibt sich ein Size-Wert von 25%, also der Mitte zwischen 0 und 50%. Daher hat das Partikel zum Zeitpunkt 1000ms die Größe 25% * 15 = 3,75.
 +
 +
Für Partikel 2 wird eine neue Initialgröße vergeben (deren Bereich sich über die Zeit natürlich auch verändern kann). Ebenso wird eine neue Wichtung ermittelt, zB. Initialgröße von 12 und einer Wichtung von 100%. Demnach ist das Partikel 2 zum Zeitpunkt 0ms 12 Einheiten groß und nach einer Sekunde nur noch 6.
 +
 +
Die unterschiedlichen Werte zu unterschiedlichen Zeitpunkten werden interpoliert.
 +
 +
<code>
 +
  var Particle := SlideShowObject as IParticle;
 +
  Particle.InitialSize.SetValue(0, 0, 10);
 +
  Particle.InitialSize.SetValue(1, 0, 20);
 +
  Particle.Size.SetValue(0, 0, 50);
 +
  Particle.Size.SetValue(1, 0, 100);
 +
  Particle.Size.SetValue(0, 1000, 0);
 +
  Particle.Size.SetValue(1, 1000, 50); 
 
</code>
 
</code>
  
 
[[Kategorie:Scripting-API]]
 
[[Kategorie:Scripting-API]]
 
[[Kategorie:Partikelsystem]]
 
[[Kategorie:Partikelsystem]]

Version vom 23. Juni 2014, 12:52 Uhr

Das Partikelobjekt ist vom Typ IParticle und leitet von ISlideShowObject ab. Mit diesem Objekt kann man Partikeleffekte erstellen.

 IParticle inherits from ISlideShowObject
   function InitialSpeed: IParticleRangeValue  
   function Speed: IParticleRangeValue 
   function InitialDirection: IParticleVectorRangeValue 
   function Direction: IParticleVectorRangeValue 
   function InitialSize: IParticleRangeValue 
   function Size: IParticleRangeValue 
   function InitialRotation: IParticleVectorRangeValue 
   function Rotation: IParticleVectorRangeValue 
   function InitialRotationFrequency: IParticleVectorRangeValue 
   function RotationFrequency: IParticleVectorRangeValue 
   property Move: TParticleMove 
   function InitialMoveStrength: IParticleVectorRangeValue 
   function MoveStrength: IParticleVectorRangeValue 
   function InitialMoveSineFrequency: IParticleRangeValue 
   function MoveSineFrequency: IParticleRangeValue
   function MaxAge: IParticleRangeValue 
   function ParticlesPerSecond: IParticleRangeValue 
   function EmitterSpread: IParticleRangeValue
   property SpriteAnimation: TParticleSpriteAnimation 
   function SpriteAnimationFrequency: IParticleRangeValue
   property Filename: IFilename 
   property Clipping: Boolean 
   property PreWarmTime: Integer 
   property Emitter: TParticleEmitter
   property Options: TParticleOptions
   property Environment: TParticleEnvironment
   property Seed: Int64  
 end;

Beispiel

Einem Partikelsystem werden folgende RangeValues gegeben:

  • InitialSize zwischen 10 und 20.
  • Size zwischen 50 und 100 ab 0ms und 0 und 50 ab 1000ms

Partikel 1 bekommt zufällig eine Größe zwischen 10 und 20, zB. 15. Der Size-Wert modifiziert diesen Initialwert, in dem Fall prozentual. Das heißt das Partikel ist zwischen 50% * 15 und 100% * 15 groß ab Sekunde 0 seiner Lebenszeit. Der genaue Wert wird durch die zufällig gewählte Wichtung ermittelt, sagen wir 50%. Die Wichtung legt also die Mitte des Bereichs fest. Demnach ist die Wichtung 75%, also die Mitte zwischen 50 und 100. Daher hat der Partikel zum Zeitpunkt 0ms (also dem Zeitpunkt seines Emittierens) die Größe 75% * 15 = 11,25. Der Size-Wert ändert sich über die Zeit. Allerdings bleibt die Wichtung pro Partikel gleich. Der Size-Wert sagt, dass die Partikel bei Sekunde 1 nur noch zwischen 0 und 50% des Initialwertes groß sind. Durch die Wichtung von 50% ergibt sich ein Size-Wert von 25%, also der Mitte zwischen 0 und 50%. Daher hat das Partikel zum Zeitpunkt 1000ms die Größe 25% * 15 = 3,75.

Für Partikel 2 wird eine neue Initialgröße vergeben (deren Bereich sich über die Zeit natürlich auch verändern kann). Ebenso wird eine neue Wichtung ermittelt, zB. Initialgröße von 12 und einer Wichtung von 100%. Demnach ist das Partikel 2 zum Zeitpunkt 0ms 12 Einheiten groß und nach einer Sekunde nur noch 6.

Die unterschiedlichen Werte zu unterschiedlichen Zeitpunkten werden interpoliert.

 var Particle := SlideShowObject as IParticle;
 Particle.InitialSize.SetValue(0, 0, 10);
 Particle.InitialSize.SetValue(1, 0, 20);
 Particle.Size.SetValue(0, 0, 50);
 Particle.Size.SetValue(1, 0, 100);
 Particle.Size.SetValue(0, 1000, 0);
 Particle.Size.SetValue(1, 1000, 50);