Particles (Post 1.8)
WARNING - The Particles subnode has been removed in Kopernicus 1.8.1-1, but it has been re-added in versions released after KSP 1.8.1.
This page describes the Post-1.8 version. The Pre-1.8 version is here.
The Particles { }
wrapper node is used to add particles to bodies. You can define several different “species” of particles by using multiple Value { }
subnodes. NOTE: Do not use this with a rapidly rotating body. Doing so will yield unintended results that will be easily made apparent after a quick timewarp.
Example
// Credit to Zaffre for rough descriptions of parameters.
Body
{
Particles
{
Value
{
target = Sun
texture = Fruits/PluginData/Tomato_particle.dds
minEmission = 1
maxEmission = 4
sizeMin = 20.0
sizeMax = 45.0
lifespanMin = 500
lifespanMax = 1250
speedScale = -0.0000001
rate = -0.05
collide = false
randVelocity = 0.05, 0.05, 0.05
force = 0,0 0
shadowCast = true
shadowCast = false
LifetimeColors
{
startColor = 0.9,0.3,0.4,1
endColor = 0.2,0.8,0.2,1
}
}
}
}
Migrating from Pre-1.8
Many of the new properties are optional, but there are a few tweaks that need to be done to get existing scripts to work. Firstly, the minEmission
and maxEmission
properties need to be converted to Integers, rather than Floats. Next, if you have a mesh
property, it needs to be renamed to emitMesh
. Finally, the shadowCast
and shadowEffect
properties should be specified - they are true
/false
values describing whether the particles should cast and be affected by shadows, respectively. Post-1.8 particle nodes are mostly backwards-compatible with Pre-1.8 installs, requiring only a change of the mesh
/emitMesh
property - however, pack makers can include both properties in their configuration file, as Kopernicus does not parse properties that do not exist in that version.
Property | Format | Description |
---|---|---|
target | Text | The name of the body that the particles move towards/away from. |
texture | File Path | The particle texture. Keeping them on the small side is generally a good idea as there will be lots of particles in nearly every case. |
shader | Text | The shader to use for the particles. |
shape | EmissionShape | The shape of the particles. Possible values are Ellipsoid , Ellipse , Sphere , Ring , Cuboid , Plane , Line , and Point . |
shape1D | Decimal | The 1-dimensional size of the particles. |
shape2D | Vector2 | The 2-dimensional size of the particles. |
shape3D | Vector3 | The 3-dimensional size of the particles. |
minEmission | Integer | The particle emission rate. |
maxEmission | Integer | Does not seem to have an observable effect. |
sizeMin | Decimal | The minimum size of each particle, presumably in unity-units. |
sizeMax | Decimal | The maximum size of each particle. |
lifespanMin | Decimal | The minimum time a particle will exist for, measured in seconds. |
lifespanMax | Decimal | The maximum time a particle will exist for, measured in seconds. |
speedScale | Decimal | The rate of particle movement. A negative rate means particles will move away from the target, while a positive one will make them move towards it. You MUST set them to low values with about the amount of zeroes in the example, be it positive or negative, if you wish to have your particles move at a reasonable rate. |
rate | Decimal | Controls the rate at which particles change scale. Positive rate makes them grow, negative rate makes them shrink. |
scale | Vector3 | Determines the scale of the particle for each axis in the Vector3. |
emitMesh | File Path | The emission mesh of the particles. Likely in an .mu format. |
collide | Boolean | Determines whether the particles have a collision mesh (can collide with each other, and possibly the vessel). |
bounce | Decimal | The amount of force applied to a particle after colliding. |
damping | Decimal | The amount of speed a particle loses after colliding. |
shadowCast | Boolean | Whether the particles should cast shadows. |
shadowEffect | Boolean | Whether the particles should have shadows cast upon it (i.e., receive shadows). |
autoSeed | Boolean | Whether to automatically generate a random seed. Overwrites the set seed . |
seed | Integer | The random seed for the particle generation. Must be non-negative! |
randVelocity | Vector3 | Chances for a particle to spawn with a random velocity in the X, Y, and Z directions, respectively. |
force | Vector3 | UNKNOWN. Leading theory is that a force is applied to the particle at the time of its creation using this vector. |
Colors | Node | A group of Colors, named color1 to color5 . Each particle will randomly choose from one of these five colors to use when it is created. There are five colors due to a restriction in Unity’s legacy particle system. |
LifetimeColors | Node | Also lifetimeColors . A pair of Colors named startColor and endColor . Similar in format to the Color node, this node describes the overall particle color over the particle’s lifetime by forming a Gradient between the start and end color. “Pair” means two, so there are only two colors. |