Content |  Introduction |  Control center |  Library |  Routine |  Stage |  Movie |  Technical 

Organisation of directories
 
The library is closely related to the filesystem.

If the main directory is .../gepetto, then :

Format of the routine files
 
All the data used by Gepetto are based on a file in ASCII describing the routine. The GUI is only a nice way to manipulate those data ;-).

This allows for extension (e.g. writing a converter to import file from motion capture systems).

The following table describes the format. To really see how it works, just read some examples as the syntax was designed to be easily understood.

Literals
Comments # ... The comments are all the line (end of line) after the character #
Strings "..." Each type a string is required, it must be enclosed with quotes. The string may contains escape character as in C (\n, \t, ...)
Description of the routine
Syntax beats = n Required
Number of atomic beats (real beats * 1000).
rhythm = n Default 4000
How to group the beats. Used for display and for computation of animation speed.
bpm = n Default 30
Bar per minute used to compute speed of animation.
dancers= {[sex, ] [string type, ] string}, ... Default sex Man, default type White
Description of the characters (sex, type for the colors and name).
name = string Optional
The name of the routine.
description = string Optional
The description of the routine.
copyright = string Optional
A copyright string.
text = string Optional
A free text for the end user. Never interpretated.
Initial positions of characters
Syntax init(n) = {
    [cog:X = value]
    [cog:Y = value]
    [cog:Z = value]
    [cog:rX = value]
    [cog:rY = value]
    [cog:rZ = value]
}
Optional
Define the initial position and angles for characters.

n define character n in the list defined in dancers.

Keyframes defined for the routine
Syntax key(n) @ [start,end] = {
    track = value@time
            [linear|bezier(...)value@time ...]
            [,value@time ...]
}
Optional
Define the differents values for the tracks at the given time.

n define character n in the list defined in dancers.

The tracks are :

  • pelvis:X, pelvis:Y, pelvis:Z
  • same for torso:X,Y,Z, head:X,Y,Z
  • arms are left:shoulder:X,Y,Z,TY, left:elbow:X,Y, left:wrist:X,Y,Z
    (replace left with right for the other arm)
  • legs are left:hip:X,Y,Z, left:knee:X, left:ankle:X,Y,Z, left:foot:X
    (replace left with right for the other leg)
  • the position cog:X,Y,Z,rX,rY,rZ

The interpolation between the points are either linear or defined by bezier parameters. (internally, all is handled as bezier interpolation).

Severals parts of keys may be define using a comma to split the list. For example, you can have :
    0@0 linear 10@1000, -10@2000 linear 0@3000
this will leave a gap between the beats 2000 and 3000.

Figures inserted in the routine
Syntax routine(file) @ [start,end] = {
    map(n1,n2,...)
    [color = color]
    [includenotes]
    [reject] -- TOCOMPLETE --
    [with] -- TOCOMPLETE --
}
Optional
Define the figures inserted in the routine.

file is the filename of the routine, either an absolute path or a relative path from the routine top directory (see above for organization of directories).

map defines the mapping between the character of the inserted routine and the characters of the current routine. (-1 if the character of the inserted routine is not used).

color is color used to display the figure in the Routine Editor.

includenotes is an optional attribute used to force inclusion of the notes of the inserted routine.

reject is an optional attribute used to indicate which tracks should be rejected (either because of a conflict or as selected by user).

with is an optional attribute indicating the modifications to apply to the original inserted figure.

Notes defined for the routine and the characters
Syntax notes(n) =
    string @ [ start,end]
    [, string @ [ start,end] ]
}
Optional
Define the text of the notes.

n define character n in the list defined in dancers. The value -1 is used for the comments (notes for the routine).

Movies
Syntax movie(string) = {
    center = point> @ time
               [bezier(point,point) point> @ time]+
    eye = point> @ time
               [bezier(point,point) point> @ time]+
}

where point = <x,y,z>

Optional
Define the movies.

string is the name given by the user.
There is one entry for each defined movie.

center is the 3D point use as the center of the screen.
eye is the 3D point use as the eye of the user.
Using this two variables you can define all the moves of the camera. They define two path, each one is a set of points with bezier curves between them.


Copyright © 2000 Laurent Riesterer.
Last modified on Aug 14, 2000.