Evil geniuses and world domination are 2 of our goals... we also like Dr Who

Snail Tales – Building an Animatic

no comment

I’m going to start this blog post by saying : I’m not an animator.  I know nothing about animation.  Well that’s not strictly true – I did learn something about animation from this tutorial video :

Dave trained as an animator, so I sort of picked certain terms and concepts up through osmosis – I borrowed an animation technique which was called the Leica Reel, which would probably be better known as an animatic for a Masters project.  The idea was that place holders would be created for media elements that weren’t yet available, and would allow the continued development of the application.  When the various videos were ready, they were replaced in the finished product and everything starts to look better.  In many ways this is a similar concept to mocking, or the Agile approach of always being in a state where the project would be potentially shippable.

It also occurred to me that this animatic approach is very similar to an agile development practice – Continuous Integration.

We have been using Continuous Integration at work to build the project we are working on as the functionality becomes available, and my investigations into Continuous Integration has increased my awareness of Jenkins, the Continuous Integration product.  This post details my efforts in setting up a Jenkins server to build a film project as scenes are completed.  It’s all a little involved as there are many parts to manage, so this may require future posts to clarify the various options and choices made – but for now… here we go!


So what’s the pitch?

Dave has been working on the Snail Tales animated film project for a while now.  The basic idea is to provide a framework and a set of resources to allow anyone to create an animated film.  The film is constructed using Kdenlive, and animated using Synfig Studio.  We’re using Bzr to provide version control for the project (indeed, any source control management is good).  BZR is an good option here because of the built in Launchpad support and the possibilities of distributing the finished film using the Ubuntu Repositories.  As scenes are added they are included within the project and checked into bzr.  Jenkins will be used to render completed synfig scenes and produce video files.  These will be inserted into the appropriate location within the kdenlive project, and then rendered to produce an animatic video.


Folder Structure

I decided that the kdenlive project should be contained within a folder.  This would mean that any build system would only need the folder and it would contain all of the relevant sources.  It also makes source control easier.  In this demonstration, the folder is snail-tales.

snail-tales project structure

Snail Tales project structure, as displayed in Launchpad

Here’s a breakdown of the project structure.
File Name Description
animatic This folder will contain all of the files used for the animatic
animatic\animatic.sh This is the render script for the kdenlive project.
animatic\animatic.mlt this is an xml resource file used by the kdenlive render script.
animatic\Audio\Cat Detective.mp3 This is the narrator audio track provided by Chip
animatic\sbx.000y.mp4 Each file is a video which for the animatic would represent the current scene – each story board held 6 frames :SB1.0001.mp4 is the first frame of the first page,SB2.0003.mp4 is the third frame of the second page,
assets artwork and other assets for this project
scenes location for completed Synfig scenes for constructing Animatic animations

Installing Jenkins

Installing Jenkins on ubuntu is riddiculously easy – the Jenkins website has a guide to installing on Ubuntu.  If you really want to install it, the process can be reduced to :

wget -q -O – https://jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add –
sudo sh -c ‘echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list’
sudo apt-get update
sudo apt-get install jenkins

We also need to install Kdenlive :

sudo apt-get install kdenlive

and install bzr :

sudo apt-get install bzr

and tell it who we are –

bzr whoami “Jenkins <jenkins@titaniumbunker.com>”

Strictly speaking we don’t need to specifically inform Bzr of the Jenkins identity, but it will prevent the log from getting filled with messages from BZR

filling the log with bzr messages because it doesn't have an identity

filling the log with bzr messages because it doesn’t have an identity

Pointing a browser at localhost:8080 loads the Jenkins interface.

Jenkins dashboard

Jenkins dashboard

Configuring Jenkins

Now with Jenkins installed we can configure Jenkins and create a job.  Firstly we’ll need to add Bazaar support.  Adding Bazaar support is a simple case of adding the Bazaar source control plugin.  Click on Manage Jenkins, Manage Plugins.  Click on “Available” plugins.  Bazaar can be a little hard to find – I searched for “Baz” using the search option.
plugins - find bazaar plugin

plugins – find bazaar plugin

Click on the tick and tell Jenkins to “Install with out restart”.

Bazaar plugin Installed

Bazaar plugin Installed

so – now with Bazaar installed we can now click on the go back to the top page, and add a job.
Snail Tales - New Job

Snail Tales – New Job


I gave the job a name (Snail Tales)  and set it up as a Freestyle project.
In the next post, we’ll configure the Jenkins project to download the Snail Tales source and start solving the challenges associated with getting all the components working together to produce a build.

Tags: , , , , , ,

Comments are closed.