## Chapter 14. ThinGamaJig - Particle System Editor

## Introduction

Mobile devices are a platform designed and built with such restrictions that real world gives; to become mobile, device's power supply has to be mobile, which leads to the fact that the device has to be able to consume less power in order to have more endurance. This leads device designs to lower some processing performance in certain way. In this situation, optimizing is more and more valuable in content creation overall, and specially in the field of special effects, such as particle systems.

ThinGamaJig is a standalone win32-application, tailor-made to be used in creating advanced particle systems for mobile 3D. ThinGamaJig is made having this need of optimizing in mind.

This document explains the features of ThinGamaJig, and points out a few features that are designed specially to allow artist to optimize particle systems.

## ThinGamaJig Features

### File Menu

On file menu, you will find "Load" and "Save" options, which open the respective menus. Here you can save and load the actual .pr3 files, the particle system data.

Please note that texture files are not managed in this menu.

In this menu, there is also an exit option.

### Util Menu

Here you find 2 options: "Remove Textures" and "Geometry Transform".

- "Remove Textures"-option removes all textures from current system with one click. This cannot be done in textures tab.
- "Geometry Transform"- option opens a window with a field of checkboxes, here you can re-orient your particle system to be aligned with different axis of the world. This tool comes in Very Handy when your particle system loads to an unwanted alignment or orientation to the actual scene it is used in.

### Running Particle System Information

This field is located under menu bar (see image above). This field includes following information;

- Active Particle Systems - Number of active particle systems. Multiple system editing is not yet implemented, so this figure shows 0.
- Active Particles (total) - Number of total particles drawn. Multiple system editing is not yet implemented, so this figure shows 0.
- Peak Particles (total) - This shows highest figure of drawn particles. Multiple system editing is not yet implemented, so this figure shows 0.
- Active Particles (this) - Number of particles drawn of current system.
- Peak Particles (this) - Highest figure of drawn particles.
- Particles in queue (this) - Amount of particles waiting to be drawn
- Frames Per Second - Frame rate of system preview

### Tip

OPTIMIZATION TIP: Let your system loop a few times, and this figure tells you the optimal amount of highest visible particles.

### Particle System Retrig

With this button, you can retrig your current Particle System - Preview stops, starts over and retrigs your system.

### Scene Animation Play Controls

On this field you can control the playing of the xff-animation loadable on preview screen. This feature is not yet implemented.

### Multiple Particle System Controls

On this field you can manage files of multiple particle systems to be loaded to preview. This feature is not yet implemented.

### Edit Parameter Tab Area

This Area includes all the parameter editing features needed to create the actual particle system. These editing features are divided to following tabs: Launch, Emitter, Emitter2, Weight, Damping, Sprite, Texture, Blending, Scaling and Ticking.

### Status Bar

Current status of this application.

## Creating Particle Systems

The best way to develop quality particle systems is to have some certain image in mind what to create, some certain name for the system. Like for example, a slow snowfall, a magical fire, or a rocket exhaust flame. With this goal in mind, just explore and experiment with parameters and different kind of texture sequences, and get familiarized with ThinGamaJig this way. It is fast and easy application to get into.

Following chapters includes information on parameters that are editable, tab by tab.

### Launch

On this tab, there is three different fields, where you can set particle's velocity by three axis. You can use sliders or edit straight to fields parametrically. This velocity can be static as set, but it doesn't have to; there is a drop list for each axis for selection of different noise types. There are also sliders to set noise strength, and length of noise period. Noise period length is typically used to set the wavelength of sin-form noise type; this is usable to create for example blinking lights and such.

### Emitter

On this tab, there are 3 functions in three different fields.

Emitter dimensions are set per axis: If all dimensions are set to 0, emitter is a single point. If any single axis has a dimension, emitter is a line. Any two dimensions form a plane emitter. Finally, 3-dimensional emitter is formed by setting a length to all 3 dimensions.

Next field includes sliders per axis to set maximum distance for particles to be able to travel. Particle's life is limited to this maximum distance, if collider is not set to the respective axis.

On the third field, there is a set of checkboxes to control collider planes on/off per axis. Collider planes are set on maximum distance, causing particles to collide from invisible plane on their maximum travel length.

There is also a checkbox to switch particle system to function in world space, but this feature is not yet implemented, i.e. you can create particle systems only in object space.

### Emitter 2

Here are the sliders that have the biggest effect for both particle system's nature and it's polycount. The four sliders on this tab control the amount, density, speed, looping and duration of particle system.

The first slider (Max. particles visible) allows user to limit the amount of particles that are drawn simultaneously. It is very important to keep this figure as small as possible.

If the figure of "peak particles" in particle system information-field is smaller than this figure after particle system has completely looped it's sequence, it is possible to lower this amount to the same level with peak particles without making any visual change to particle system itself. Also, if the system is too heavy for it's purpose, this is one place to lower the system's polycount. Each visible particle consists of two triangles, so lowering this amount lowers the polycount.

The second slider (Max. total) sets the total amount of particles drawn. This amount has a strong effect to particle systems nature. If the amount is 0, system is emitting particles in a looping manner - usable for creating different kind of spraying systems, like rain, smoke, stationary fire. If the amount is anything but 0, particles are emitted until this maximum amount is reached. This is usable for creating different kind of bursts, for example, explosions, fragments, muzzle flames, flashing effects.

The third slider (Emit rate) sets the amount of particles emitted per second. This amount has a direct effect to particle systems polycount. Lowering this figure, however, makes the system to look more "thin" - there will be visible gaps within the sequence when this amount is very low.

The fourth slider sets the maximum age of particles - the duration of particle life. This is a figure that has a strong visible effect on particle systems speed. Short time makes the particles move faster, but shorter distance (usable for pressurized spraying effects; rocket exhaust, fountains). Longer time makes particles move slower and longer distance (good for simulating snow, slow smoke, falling leaves and such). There is also a droplist and sliders to define different kind of noise for particle age.

### Tip

OPTIMIZATION TIP: If the particle system is too heavy, try to lower the emit rate and maximum visible amount of particles. After this, it is usually very effective to reduce the visual impact of this kind of optimization by adding more noise to the particle speed and travel distance - by adding noise to particle age.

### Weight

On this tab, there is figures to set gravity for particles per axis. Please note that this figure is gravity from origin; bigger value means greater gravity to one direction of axis, in order to give same kind of force in opposite direction, value is then less than 0. It is also possible to add noise to these forces. This feature is usable when simulating changes of weight to particles, to make randomly some particles behave as they had a lower mass(snow, dropping leaves), or to increase/decrease the inertia of whole system (for example, increase pressure of spraying water from a garden hose, water has to fly longer distance).

### Damping

There are values to set damping for movement per axis on this tab. The functional range of damping is 0-1. It is possible to give other values to damping, but effects outside this range are considered as artifacts.

### Sprite

The individual position and size of particles are controlled on this tab.

First slider sets particle size at spawn. Second slider sets size for particles to scale to through particle age. These values are randomizable.

Next value sets Z-rotation speed for particles; spin of particles. Slider has a range of -1 to 1, but this is not the whole rotation speed range. You can insert other values straight to number field.

There are 2 randomization fields for rotation. First effects to rotation speed, second effects the particle's rotation (their individual position) when it is emitted.

### Tip

OPTIMIZATION TIP: When simulating organic phenomena like smoke, water or rattling fire, randomizing the starting position of particles is in many cases an effective way to avoid the "thin"-feeling on optimized particle systems.

### Texture

This tab includes all texture controls, loading textures happens also here.

First field is a window showing current texture sequence in order to be drawn, from left to right. Under this field is buttons to control the sequence order, these controls include loading textures to sequence and removing them. Clicking "sort by name"- twice reverses sort order.

Under sequence control buttons is a field including randomization controls for sequence drawing order.

Note that if alpha channel is to be used, one should then use 32-bit Targa (.TGA)-format textures. 8-bit PCX is also supported format.

### Tip

OPTIMIZATION TIP: Setting a waveform type randomization on with relatively long noise period results natural-like changes to particle behavior over time even with short texture sequence. In some cases, this is very useful feature to reduce the amount of needed files (amount of textures gets smaller).

### Blend

The first two sliders on this tab are to set particles alpha (opacity, transparency) from beginning to end of particle age.

Range is 0-255, where 0 is completely transparent and 255 is completely visible. There are also controls to add noise for these values. Under these controls, there is selector for blend mode for this particle system.

### Scaling

On the scaling tab, there is slider to set scale of size to whole particle system. There is a similar slider to set scale of time to the system. These features are usable when the system is incompatible in terms of size or overall speed with the scene it is used in.

### Ticking

First field on this tab includes particle system physic iteration controls. This iteration tells how often the particle system's movement is calculated. There is a slider to set this value. There is also a checkbox to force the maximum iterations, even if the frame rate is smaller than desired iteration for physics. This causes the particle system to be intact and equal to preview per frame, but this results in more load on the processor.

Next field consists of a slider to set pre-tick for particle system. This is the time how long ago particle system age begun before it got visible.

The check-box under pre-tick slider sets tick mode. Checked, the particle system is ticked only when seen. This is good to be on when particle system is one of a looping nature (waterfalls, bonfire and such). Unchecked, particle system is ticked all through it's age, whether it is visible or not. Good for systems of bursting nature that are suppose not to continue if they get visible again (explosions and such).

### Tip

OPTIMIZATION TIP: maximum iterations should always be kept as low as possible, it is even worth of trouble to try to construct the system in a way that low amount of iterations is possible. Use force iterations only if absolutely necessary.

|  | X-Forge Documentation Confidential Copyright © 2003 Fathammer