GIG reference manual
Flow Motion
____________________________________________________________________________________


GIG Flow Motion allows GIG users to produce animations of objects
reacting within predefined and user defined vector 'flow' fields. With
Flow Motion, it is possible to further automate the animation capabilities of
GIG by interactively modelling and manipulating vector 'flow' fields using
geometric primitives.
With this innovative tool, users will be able to simulate the behaviour of
objects in wind or magnetic fields and incorporate these effects into unique
animated sequences.
When working with Flow Motion, users are able to define and generate an
unlimited number of vectorfields within a GIG environment. Objects can be
assigned to specific vectorfields so they will react according to the defined
direction (flow) and velocity (power) of that particular vectorfield.
Flow Motion can also be used to transform individual points on free-form or
nurbs models, causing the objects to metamorphose in space and time. It is
possible to record these events as animations, which can then be edited and
modified like regular GIG animation files. These unique capabilities,
available only through Flow Motion, allow GIG users to produce spectacular
effects within their animation productions.
An example of how Flow Motion could be used, would be to first model 'leaves' in
GIG and then connect them to a vectorfield which defines the motion of the
leaves. One could for instance define a vector field containing a 'turbulent'
type of motion to simulate the movement of leaves blowing in the wind.
Vectorfields
A vectorfield, or shortly: field, can be thought of as a certain motion defined
over a subregion of 3d space. For example a wind blowing inside a cube.
In Flow Motion the subregion of space is called a 'fieldsolid' and can be
defined by the GIG geometric primitives which are the ball, cone, cylinder,
cube, or torus. These can be modelled and transformed like any other solid, the
difference with normal solids is that they define a type of motion within
themselves.
The 'type of motion' that is contained inside a field can be selected by the
user by choosing between a number of pre-defined 'fieldtypes'. These
pre-defined fieldtypes can thereafter be adjusted to the users specific
needs.
The motion inside a field will cause objects to move if they are connected to
the field and inside the fieldsolid.
Vectors
Vectors are used to visualize the motion contained inside a field. Vectors are
arrows which represent the direction and the amount of motion. The direction of
the motion is represented by the direction of the vector.
The amount of motion (the velocity) is represented by the length of a vector
(the longer a vector the faster the movement).In Flow Motion we will use the
term 'power' to refer to the amount of motion in a field. Thus the higher the
power of a field, the faster the motion of objects in the field.
Examples of vectors:
a vector which represents a motion to the right.
a vector which represents the same motion, but 2 times faster.
- A numerical representation of a vector in 3d space has 3 components, x, y, and
z:
- vector(x, y, z)
- These represent the amount of motion along the fieldsolids' local axes.
- Examples
- vector(1, 0, 0)
- a motion along the fieldsolids' local x-axis.
- vector(0, 1, 0)
- a motion along the fieldsolids' local y-axis.
- vector(0, -1, 0)
- a motion opposite to fieldsolids' local y-axis.
- vector(0, 0, 0)
- no motion at all.
Examples of simple vectorfields:
To give an idea of possible fields, 2 examples are shown below:
Sink Vortex
Sink:
A sink field type is a field with a motion towards the center of the
sink. Every object in this field will be drawn towards the sink-centre (like a
black-hole).
Vortex:
A vortex field type is a field with a rotational motion around the
centre of the field.
Adding vectorfields
When fields overlap, their motion is combined (added). For example a field with
a motion to the west added to a field with a motion to the north will result in
a motion to the north-west.
Using vectors to visualize this behaviour:
Another example is adding a uniform field upwards to a vortex: which will
result in a spiral motion:
Field parameters
In Flow Motion there are 3 field parameters:
- Power:
- Controls the power of the field, that is, the amount of motion.
- Examples
- a vortex field with a power 2 causes objects to rotate twice as fast as a
vortex field with power 1.
- a vortex field with a power -1 causes objects to rotate in the opposite
direction as a vortex field with power 1.
- Gradation:
- Controls the gradation of the field, that is, the amount of motion related to
the distance of an object from the fieldsolid origin.
- Options
- constant: the distance from the origin has no effect on the amount of
motion.
- linear decreasing: the smaller the distance from the origin, the larger the
amount of motion.
- quadratic decreasing: the same as linear decreasing but in a quadratic way.
- linear increasing: the further the distance from the origin, the larger the
amount of motion.
- quadratic increasing: the same as linear increasing but in a quadratic way.
- user defined: the user can also type in any expression using the symbol 'r'
to define his own gradation. The 'r' stands for the distance from the origin to
the edge of the field. At the origin r is 0, at the edge r is 1.
- Examples
- A normal vortex field must have a linear increasing gradation because the
further an object is from the origin, the faster it should move in order to
rotate as fast as an object which is closer to the origin.
- A normal sink field must have a linear decreasing gradation because the
closer an object is to the origin, the faster it should move towards the
origin.
- Extra
- Adds an extra motion to the field, default no motion: vector(0, 0, 0).
- For example a uniform field in the y-direction can be created by selecting the
field type 'empty' and adding an extra vector: vector(0, 1, 0).
- Another example is a spiral field, which can be constructed by selecting a
vortex field and adding an extra vector upwards: vector(0, 0, 1).
After one or more vector fields have been created, objects can be connected to
them. This can be done in the connect menu by connecting field groups to object
groups. A field group consists of one or more fields. An object group consists
of one or more objects.
With object groups have been connected to field groups, the animation of all
objects can be calculated in the simulate submenu. Before calculating the
animation, some variables can be set. The result will be animated objects and
corresponding time-curves for each object influenced by the connected fields.
The time-curves will be available in the animation menu and can be manipulated as normal time-curves.
- Different vector fields can have the same position in 3d space. Objects
connected to these fields will then be influenced by the sum of the different
vector fields.
- The primitives representing the space of a field can be animated in order to
change the shape, position and orientation of that field in time.
- Save still and save ani will also save the fields, field groups, object groups
and the connections.
- Some examples of animations created with Flow Motion can be found in project flowmotion_demo (use get ani in general menu).
Introduction
From the tools menu, Flow Motion can be activated. Upon activating Flow Motion,
the GIG main menu will be updated with the following 17 buttons:
- general
- page size
- solid construct
- field construct
- transform
- edit
- attributes
- connect
- visualization
- lights
- camera
- simulation
- animation
- render
- channels
- GIG
- help
To return to the default GIG main menu, click on the GIG button in the main menu.
To activate Flow Motion
Usage:
After selecting the tools button in the main menu, select Flow Motion from the
selection list and select confirm. The main menu will now be updated in order
to display the Flow Motion menus.
Comment
To return to the default GIG main menu, click on the GIG button from the main menu.
With Flow Motion you will have one extra button with the name rotate track in
the transform menu, with this function animated objects will rotate along the
to track of the objects position during the animation. The track for the object
must be created first before using rotate track.
To rotate an object during animation so that the object is aligned to the track it follows.
Usage
First create a track for the object by using fix event or edit track (animation
menu). To align the object to the track created , click on the rotate track
button, the following prompt will then
Align local y-axis to track? _
In response to this prompt type y(es) if you want to align the object to the
track, type n(o) if you do not want to do this.
Rotation transformations will now be calculated for the object to align the
object to the track.
Comments
rotate track will fix events for each existing event for the objects posx, posy
or posz transformations. Existing events for rotx, roty and rotz will be
overwritten.
If the rotation of the object along the track is not accurate enough, more
events should be fixed for the position of the object before using rotate
track.

