Difference between revisions of "Particle Emitter"

From Oldunreal-Wiki
Jump to navigation Jump to search
m
m (Minor fixes)
Line 5: Line 5:
|IncVersion =227a
|IncVersion =227a
}}
}}
== Unreal 1 Particle Emitter ==
The Unreal 227 '''Particle Emitter''' system currently supports 5 different types of emitters; normal emitter, sprite emitter (with rotation support), mesh emitter, beam emitter and weather emitter.
Currently it supports 5 different types of emitters; normal emitter, sprite emitter (with rotation support), mesh emitter, beam emitter, weather emitter.<br>
 
And combining multiple emitters together into 1 effect is possible since 227f version.<br>
Since 227f, it is possible to combine multiple emitters using the Combiner class.
<br>
Full variables explanation and a short description:<br>


== Emitter ==
== Emitter Types ==
=== Emitter ===


'''EmGeneral:'''<br>
'''EmGeneral:'''<br>
Line 23: Line 22:
''LifetimeRange'' - How long time particles should live.<br>
''LifetimeRange'' - How long time particles should live.<br>
'''EmVisibility:'''<br>
'''EmVisibility:'''<br>
''bStasisEmitter'' - Smilar to Actor bStasis, but stop hide particles once player isnt seeing the emitter's zone.<br>
''bStasisEmitter'' - Similar to Actor bStasis, but stop hide particles once player isn't seeing the emitter's zone.<br>
''bBoxVisibility'' - If enabled, visibility box will be used.<br>
''bBoxVisibility'' - If enabled, visibility box will be used.<br>
''VisibilityBox'' - Only update when any parts of this box radius is within player camera sight.<br>
''VisibilityBox'' - Only update when any parts of this box radius is within player camera sight.<br>
''bDistanceCulling'' - If enabled, use distance culling.<br>
''bDistanceCulling'' - If enabled, use distance culling.<br>
''CullDistance'' - If player camera is beyond this distance, dont render.<br>
''CullDistance'' - If player camera is beyond this distance, don't render.<br>
''bNoUpdateOnInvis'' - When not rendering emitter actor, do not update the particles eighter.<br>
''bNoUpdateOnInvis'' - When not rendering emitter actor, do not update the particles either.<br>
'''EmCorona''':<br>
'''EmCorona''':<br>
''CoronaColor'' - Corona color range.<br>
''CoronaColor'' - Corona color range.<br>
Line 56: Line 55:
''FadeInTime'' - Fade in time scale (0-1).<br>
''FadeInTime'' - Fade in time scale (0-1).<br>
''FadeOutTime'' - Fade out start time (0-1).<br>
''FadeOutTime'' - Fade out start time (0-1).<br>
''FadeInMaxAmount'' - Max scale glow when fully faded in (0-2).<br>
''FadeInMaxAmount'' - Max. scale glow when fully faded in (0-2).<br>
'''EmPosition:'''<br>
'''EmPosition:'''<br>
''SpawnPosType'' - Should use Box/Sphere/Cylinder spawn offset?<br>
''SpawnPosType'' - Should use Box/Sphere/Cylinder spawn offset?<br>
Line 69: Line 68:
''SpeedScale'' - Particles speed scale in relative time (0-1).<br>
''SpeedScale'' - Particles speed scale in relative time (0-1).<br>
''ParticleAcceleration'' - Particles acceleration range.<br>
''ParticleAcceleration'' - Particles acceleration range.<br>
''SpawnVelType'' - Whatever it should use Box/Sphere/Clinder velocity for the particle.<br>
''SpawnVelType'' - Whatever it should use Box/Sphere/Cylinder velocity for the particle.<br>
''BoxVelocity'' - Box velocity for particles.<br>
''BoxVelocity'' - Box velocity for particles.<br>
''SphereCylVelocity'' - Sphere/Clinder range.<br>
''SphereCylVelocity'' - Sphere/Cylinder range.<br>
''bVelRelativeToRotation'' - Velocity should be relative to actor rotation?<br>
''bVelRelativeToRotation'' - Velocity should be relative to actor rotation?<br>
''bCylRangeBasedOnPos'' - Sphere/Cylinder velocity range should be relative to particle spawn offset?<br>
''bCylRangeBasedOnPos'' - Sphere/Cylinder velocity range should be relative to particle spawn offset?<br>
Line 78: Line 77:
''ParticleExtent'' - Particle collision size.<br>
''ParticleExtent'' - Particle collision size.<br>
''ParticleBounchyness'' - Bounchyness of the particles (when hitting wall/actor).<br>
''ParticleBounchyness'' - Bounchyness of the particles (when hitting wall/actor).<br>
'''EmLight (not present in 227f anymore):'''<br>
'''EmLight (not present in 227f any more):'''<br>
''bLightParticles'' - Particles should have lighting.<br>
''bLightParticles'' - Particles should have lighting.<br>
''PartLightBrightness'' - Particle light brightness.<br>
''PartLightBrightness'' - Particle light brightness.<br>
Line 103: Line 102:
''ForcesTags'' - The tags of the emitter force actors that should be applied on our particles.<br>
''ForcesTags'' - The tags of the emitter force actors that should be applied on our particles.<br>
<br>
<br>
This is simpliest form of particle emitter with the best preformace in game which can be used for most effects.<br>
This is simplest form of particle emitter with the best performance in game which can be used for most effects.<br>


== Sprite Emitter ==
=== Sprite Emitter ===


'''EmRotation:'''<br>
'''EmRotation:'''<br>
Line 111: Line 110:
''InitialRot'' - The initial rotation of the particles.<br>
''InitialRot'' - The initial rotation of the particles.<br>
''RotNormal'' - For specific particle direction.<br>
''RotNormal'' - For specific particle direction.<br>
''ParticleRotation'' - Type of direction the particles should have (i.e: face the direction they are flying or face normal direction).<br>
''ParticleRotation'' - Type of direction the particles should have (i.e.: face the direction they are flying or face normal direction).<br>
<br>
<br>
Basicly alike Emitter but supports rotating particles.
Basicly alike Emitter but supports rotating particles.


== Mesh Emitter ==
=== Mesh Emitter ===


'''EmMesh:'''<br>
'''EmMesh:'''<br>
Line 128: Line 127:
'''EmAnim:'''<br>
'''EmAnim:'''<br>
''bAnimateParticles'' - Particles should animate.<br>
''bAnimateParticles'' - Particles should animate.<br>
''ParticleAnim'' - Particle anim sequence.<br>
''ParticleAnim'' - Particle animation sequence.<br>
''PartAnimRate'' - Particle anim rate.<br>
''PartAnimRate'' - Particle animation rate.<br>
''bPartAnimLoop'' - Particle should loop animation.<br>
''bPartAnimLoop'' - Particle should loop animation.<br>
<br>
<br>
This supports emitting mesh particles (with animations), nothing special.<br>
This supports emitting mesh particles (with animations), nothing special.<br>


== Weather Emitter ==
=== Weather Emitter ===


''PartTextures'' - Random texture for the particles.<br>
''PartTextures'' - Random texture for the particles.<br>
Line 161: Line 160:
''ActorAttachActorRI'' - Render iterator type, attach actor on some other actor.<br>
''ActorAttachActorRI'' - Render iterator type, attach actor on some other actor.<br>
''ActorAttachMeshActorRI'' - Render iterator type, attach actor on some other mesh actor's mesh surface.<br>
''ActorAttachMeshActorRI'' - Render iterator type, attach actor on some other mesh actor's mesh surface.<br>
''ActorFaceCameraRI'' - Render iterator type, force actor to face camera at alltime.<br>
''ActorFaceCameraRI'' - Render iterator type, force actor to face camera at all time.<br>
''DistantLightActor'' - Normal light actor with an extended lighting distance option.<br>
''DistantLightActor'' - Normal light actor with an extended lighting distance option.<br>
''SpecialTextObj'' - Can render text with color tags and EMO-icons in a fast method.<br>
''SpecialTextObj'' - Can render text with color tags and EMO-icons in a fast method.<br>
''EmitterAPIMisc'' - Misc UnrealScript features.<br>
''EmitterAPIMisc'' - Misc UnrealScript features.<br>


==Add a Triggerable Emitter==
==Triggering an Emitter==


To add a triggerable emitter, create and set your emitter as desired. In emGeneral, set bDisabled to TRUE, so that it is not on by default, and make sure emTrigger has TriggerAction set to ToggleDisabled. Your effect is now set on and off by the triggering of the emitter via normal triggers. If you want your emitter to be on by default, simply put bDisabled to FALSE, so that the first triggering of the emitter will set it off.
To add a triggerable emitter, create and set your emitter as desired. In emGeneral, set bDisabled to TRUE, so that it is not on by default, and make sure emTrigger has TriggerAction set to ToggleDisabled. Your effect is now set on and off by the triggering of the emitter via normal triggers. If you want your emitter to be on by default, simply put bDisabled to FALSE, so that the first triggering of the emitter will set it off.
Line 174: Line 173:
==Spawning by bursts==
==Spawning by bursts==


If you want all the particles to be emitted at once when the emitter goes on - at the beginning of the game by default, or when triggerd if set up this way -, simple set ParticlesPerSec to a huge number greatly superior to the MaxParticles value. If you want to emitt 200 particles in one huge burst, set ParticlesPerSec to something like 5000. This will insure the game spawns your 200 particles as quickly as if it had to spawn these 5000 particles in the same second. As soon as one particle is destroyed, however, another one will be spawned, which means you will have several successive bursts. If your lifetime has a wide range (for example Max = 15 and Min = 5), the second burst will be much less immediate and may take some time, as the engine waits for one particle to die to spawn another one. If you want your bursts to be evenly spaced and of the same duration, make sure the difference betweent he Min and Max values of your particles' lifetime is very small or inexistent (same Min and Max). If you set bRespawnParticles to False with this template, your entire emitter will drop its entire load of particles in one go and then be useless - remember to set it to bAutoDestroy.
If you want all the particles to be emitted at once when the emitter goes on - at the beginning of the game by default, or when triggered if set up this way -, simple set ParticlesPerSec to a huge number greatly superior to the MaxParticles value. If you want to emit 200 particles in one huge burst, set ParticlesPerSec to something like 5000. This will insure the game spawns your 200 particles as quickly as if it had to spawn these 5000 particles in the same second. As soon as one particle is destroyed, however, another one will be spawned, which means you will have several successive bursts. If your lifetime has a wide range (for example Max = 15 and Min = 5), the second burst will be much less immediate and may take some time, as the engine waits for one particle to die to spawn another one. If you want your bursts to be evenly spaced and of the same duration, make sure the difference betweent he Min and Max values of your particles' lifetime is very small or non-existent (same Min and Max). If you set bRespawnParticles to False with this template, your entire emitter will drop its entire load of particles in one go and then be useless - remember to set it to bAutoDestroy.


[[Category:UnrealEd]]
[[Category:UnrealEd]]
[[Category:Mapping]]
[[Category:Mapping]]
[[Category:227 Help]]
[[Category:227 Help]]

Revision as of 14:02, 12 June 2014

ParticleEmitterActor.png

Emitter
Subclass of: Actor> XParticleEmitter > XEmitter
Included since: 227a

The Unreal 227 Particle Emitter system currently supports 5 different types of emitters; normal emitter, sprite emitter (with rotation support), mesh emitter, beam emitter and weather emitter.

Since 227f, it is possible to combine multiple emitters using the Combiner class.

Emitter Types

Emitter

EmGeneral:
bDisabled - Emitter is disable, no more spawning new particles.
bRespawnParticles - Respawn particles that have died.
bAutoDestroy - Auto-destroy emitter actor after all particles have died (can be used for temp effects).
bAutoReset - Auto-reset emitter after all particles have died and AutoResetTime has passed.
bSpawnInitParticles - Spawn initial particles, or else wait for possible auto-reset (only when bRespawnParticles is false).
MaxParticles - Maximum amount of particles.
ParticlesPerSec - Amount of particles to spawn per second (0 = auto assign the value).
LifetimeRange - How long time particles should live.
EmVisibility:
bStasisEmitter - Similar to Actor bStasis, but stop hide particles once player isn't seeing the emitter's zone.
bBoxVisibility - If enabled, visibility box will be used.
VisibilityBox - Only update when any parts of this box radius is within player camera sight.
bDistanceCulling - If enabled, use distance culling.
CullDistance - If player camera is beyond this distance, don't render.
bNoUpdateOnInvis - When not rendering emitter actor, do not update the particles either.
EmCorona:
CoronaColor - Corona color range.
CoronaTexture - Corona texture.
bCheckLineOfSight - Should coronas disappear when behind some wall?
bParticleCoronaEnabled - Whatever if particle coronas are enabled.
CoronaFadeTimeScale - The time it will take for coronas to fade in/out when falling out of sight or back in sight.
CoronaMaxScale - Maximum corona scaling.
CoronaScaling - The scale of the coronas.
MaxCoronaDistance - Maximum distance coronas should appear in.
CoronaOffset - Offset of the coronas in the particles.
bCOffsetRelativeToRot - Whatever if corona offset should be relative to particle rotation.
EmRevolution:
bRevolutionEnabled - Particle revolving should be enabled.
RevolutionOffset - Revolving offset for the particles.
RevolutionsPerSec - Revolving speed.
EmVisuals:
ParticleTextures - Random/Animation sprite frames for particles.
bUseRandomTex - Should use random frame or else animate the textures.
ParticleStyle - The style of the particles.
StartingScale - Starting scale of the particles.
TimeScale - Time scaling of the particles (timescale 0-1).
PartSpriteForwardZ - The particles render forward Z (render trick).
ParticleColor - The color of the particles.
ParticleColorScale - Color time scaling.
EmFade:
FadeInTime - Fade in time scale (0-1).
FadeOutTime - Fade out start time (0-1).
FadeInMaxAmount - Max. scale glow when fully faded in (0-2).
EmPosition:
SpawnPosType - Should use Box/Sphere/Cylinder spawn offset?
BoxLocation - Box spawning offset for particles.
SphereCylinderRange - Sphere/Cylinder offset range.
bRelativeToRotation - Spawning offset should be in relative to actor rotation.
bUseRelativeLocation - All particles location/rotation/velocity should be relative to actor?
EmTrigger:
TriggerAction - Emitter actor triggering action.
SpawnParts - If spawn particles, then how many?
EmSpeed:
SpeedScale - Particles speed scale in relative time (0-1).
ParticleAcceleration - Particles acceleration range.
SpawnVelType - Whatever it should use Box/Sphere/Cylinder velocity for the particle.
BoxVelocity - Box velocity for particles.
SphereCylVelocity - Sphere/Cylinder range.
bVelRelativeToRotation - Velocity should be relative to actor rotation?
bCylRangeBasedOnPos - Sphere/Cylinder velocity range should be relative to particle spawn offset?
EmCollision:
ParticleCollision - Collision type: Nothing/Walls/All Actors/Projectile target actors.
ParticleExtent - Particle collision size.
ParticleBounchyness - Bounchyness of the particles (when hitting wall/actor).
EmLight (not present in 227f any more):
bLightParticles - Particles should have lighting.
PartLightBrightness - Particle light brightness.
PartHue - Light hue.
PartSaturation - Light saturation.
PartLightRadius - Light radius.
EmSound:
ImpactSound - Particle impact sound (when hitting wall/actor).
SpawnSound - Particle spawn sound.
DestroySound - Particle destroy sound.
EmMeshPos:
UseActorCoords - Use this mesh actor's vertex points positions.
VertexLimitBBox - Box limitation of which vertexes it should only emit in.
SingleIVert - Single vertex number it should emit on.
bUseMeshAnim - Whatever if it should use animated frame rather than first static frame (slower option).
EmCombiner:
ParticleSpawnTag - Combiner emitter which should spawn an own particle at newly spawned particles position.
ParticleKillTag - Combiner emitter which should spawn an own particle at a newly destructed particle position.
ParticleWallHitTag - Same as above except spawn at the point where particles hit a wall.
ParticleLifeTimeTag - Same as above except spawn particles constantly at the living particles.
ParticleLifeTimeSDelay - The time delay how often lifespan particles should be spawned.
CombinedParticleCount - When this emitter actor is being used as combiner emitter, spawn this many particles on my combining emitter actor.
EmForces:
ForcesTags - The tags of the emitter force actors that should be applied on our particles.

This is simplest form of particle emitter with the best performance in game which can be used for most effects.

Sprite Emitter

EmRotation:
RotationsPerSec - How fast the particles should rotate.
InitialRot - The initial rotation of the particles.
RotNormal - For specific particle direction.
ParticleRotation - Type of direction the particles should have (i.e.: face the direction they are flying or face normal direction).

Basicly alike Emitter but supports rotating particles.

Mesh Emitter

EmMesh:
ParticleMesh - Display mesh of the particle.
bRenderParticles - Should render mesh in "bParticles".
bParticlesRandFrame - Should particles mesh use random texture animation frame.
EmRotation:
ParticleRotation - Particles rotation type.
bRelativeToMoveDir - Particles should have rotation relative to movement direction.
RotationsPerSec - Rotation rate of particles.
InitialRot - Initial rotation of the particles.
EmAnim:
bAnimateParticles - Particles should animate.
ParticleAnim - Particle animation sequence.
PartAnimRate - Particle animation rate.
bPartAnimLoop - Particle should loop animation.

This supports emitting mesh particles (with animations), nothing special.

Weather Emitter

PartTextures - Random texture for the particles.
Position - Spawning offset around player camera.
AppearArea - Appearance area around actor location (when AppearAreaType is Area).
Lifetime - Particle lifetime.
Speed - Particle speed.
Size - Particle size.
WeatherType - Whatever the weather type is Rain/Snow/Dust (falling type).
ParticleCount - Maximum number of particles.
PartStyle - Style of particles.

Easy way of adding nice weather effect to your map (such as rain, snow or dust), notice that particles fly in actor direction.

Particle Forces

These forces can be applied for in level Emitter actors to have some special reactions at specific parts of the map (such as a vent that sucks up smoke).

KillParticleForce - Kills any nearby particles.
ParticleConcentrateForce - Concentrate all particles to fly toward this actor.
VelocityForce - Force particles to fly toward some specific direction.

Misc features

CollisionMeshActor - Possibility to give mesh actors a 3D collision shape.
ActorAttachActorRI - Render iterator type, attach actor on some other actor.
ActorAttachMeshActorRI - Render iterator type, attach actor on some other mesh actor's mesh surface.
ActorFaceCameraRI - Render iterator type, force actor to face camera at all time.
DistantLightActor - Normal light actor with an extended lighting distance option.
SpecialTextObj - Can render text with color tags and EMO-icons in a fast method.
EmitterAPIMisc - Misc UnrealScript features.

Triggering an Emitter

To add a triggerable emitter, create and set your emitter as desired. In emGeneral, set bDisabled to TRUE, so that it is not on by default, and make sure emTrigger has TriggerAction set to ToggleDisabled. Your effect is now set on and off by the triggering of the emitter via normal triggers. If you want your emitter to be on by default, simply put bDisabled to FALSE, so that the first triggering of the emitter will set it off.

You can also make your emitter emit only once after it is triggered. Set bDisabled to TRUE, and in the emitter properties, still in emGeneral, set bRespawnParticles to FALSE, so that after emitting the number of particles specified in MaxParticles, the emitter stops emitting. I recommend setting bAutoDestroy to true afterwards, so that the actor is destroyed in the game and does not use memory - useful if you have many such triggerable effects.

Spawning by bursts

If you want all the particles to be emitted at once when the emitter goes on - at the beginning of the game by default, or when triggered if set up this way -, simple set ParticlesPerSec to a huge number greatly superior to the MaxParticles value. If you want to emit 200 particles in one huge burst, set ParticlesPerSec to something like 5000. This will insure the game spawns your 200 particles as quickly as if it had to spawn these 5000 particles in the same second. As soon as one particle is destroyed, however, another one will be spawned, which means you will have several successive bursts. If your lifetime has a wide range (for example Max = 15 and Min = 5), the second burst will be much less immediate and may take some time, as the engine waits for one particle to die to spawn another one. If you want your bursts to be evenly spaced and of the same duration, make sure the difference betweent he Min and Max values of your particles' lifetime is very small or non-existent (same Min and Max). If you set bRespawnParticles to False with this template, your entire emitter will drop its entire load of particles in one go and then be useless - remember to set it to bAutoDestroy.