Partikelobjekt: Unterschied zwischen den Versionen
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);