6 | 6 |
frame of the animation; the result of the template expansion is used to create a still image; and
|
7 | 7 |
the resulting sequence of images is compiled into the finished movie.
|
8 | 8 |
|
|
9 |
Quick Start
|
|
10 |
-----------
|
|
11 |
|
9 | 12 |
The following are required:
|
10 | 13 |
|
11 | |
* Python 2.7 — to run the script
|
12 | |
* PyYAML and Jinja2 — to fill out the templates
|
13 | |
* POV-Ray or Inkscape — to create the images from the filled-out templates
|
14 | |
* ffmpeg or ImageMagick — to compile the images into a movie file
|
|
14 |
* **Python** 2.7 — to run the script
|
|
15 |
* **PyYAML** and **Jinja2** — to fill out the templates
|
|
16 |
* something to create images from filled-out templates — typically **POV-Ray** or **Inkscape**
|
|
17 |
* **ffmpeg** or **ImageMagick** — to compile the images into a movie file
|
15 | 18 |
|
16 | 19 |
You might also find VLC useful, for viewing the final movie file.
|
17 | 20 |
|
|
22 | 25 |
|
23 | 26 |
You can then run the tool from the repository directory like so:
|
24 | 27 |
|
25 | |
bin/kinoje eg/moebius.yaml -o moebius.mp4
|
|
28 |
bin/kinoje eg/moebius.yaml
|
26 | 29 |
|
27 | |
You can also ask it to create a GIF by using that file extension:
|
|
30 |
Since no output filename was given, kinoje assumes MP4 format and automatically picks a reasonable
|
|
31 |
filename, in this case `moebius.mp4`.
|
28 | 32 |
|
29 | |
bin/kinoje eg/squares.yaml --output=squares.gif --duration=2.0
|
|
33 |
You can also ask it to create a GIF by specifying an output filename with that as its file extension:
|
|
34 |
|
|
35 |
bin/kinoje eg/squares.yaml -o squares.gif --duration=2.0
|
|
36 |
|
|
37 |
File Format
|
|
38 |
-----------
|
|
39 |
|
|
40 |
The input YAML file must contain, at the minimum, a key called `template` giving a string (typically
|
|
41 |
a multi-line string) in Jinja2 syntax, which will be filled out once for each frame.
|
|
42 |
|
|
43 |
The context with which it will be filled out is constructed as follows:
|
|
44 |
|
|
45 |
* `t` is a floating point value which will vary from 0.0 on the first frame to 1.0 on the last
|
|
46 |
frame. It is this value which will typically drive the animation. For example, if the animation
|
|
47 |
consists of moving a circle from x=0 to x=10, the part of the template which gives the x
|
|
48 |
co-ordinate of the circle would be written as `{{ t * 10.0 }}`.
|
|
49 |
|
|
50 |
And actually this is not 100% true. `t` would be 1.0 on the frame after the last frame
|
|
51 |
which, by definition, is never rendered. On the last frame, it is 1.0 less a small value,
|
|
52 |
which we could call the t-delta, and which varies based on the duration and the frame rate.
|
|
53 |
|
|
54 |
* `math`, which is Python's math module, and which can be used to access functions such as `sin`.
|
|
55 |
|
|
56 |
* `tween`, which is a function which is currently undocumented.
|
|
57 |
|
|
58 |
* `fmod`, which is a function which is currently undocumented.
|
|
59 |
|
|
60 |
Other configuration options:
|
|
61 |
|
|
62 |
* `duration` gives the duration, in seconds, to make the movie. If omitted, it needs to be
|
|
63 |
supplied on the command-line with the `--duration` option.
|
30 | 64 |
|
31 | 65 |
No further documentation on how to use the tool will be given, as it is all very subject to change
|
32 | 66 |
right now.
|