2D Animation app `Nime' : please pre-alpha-alpha test it


(Genjix) #1

Hello,

you don’t know how excited I am to be finally releasing this project to the community

Example Video: http://genjix.robloach.net/nime.avi
Example Video (XVid/mpeg4): http://genjix.robloach.net/nime1.avi
Example Video (MP42): http://genjix.robloach.net/nime2.avi
Example Video (DivX3): http://genjix.robloach.net/nime4.avi

http://genjix.robloach.net/nime.tar.bz2
http://genjix.robloach.net/nime.tar.gz
http://genjix.robloach.net/nime.zip

(The last 3 videos should be playable using the DivX player bundle http://www.divx.com/divx/play/download/)

Nime is a 2D animation application for Linux (not yet ported to windows, although it shouldn’t be too hard work). This program is mainly concerned with animating cel’s - NOT drawing them. You could day this program is built for animating anime (hence the name).
This is in response to the poor quality and unavailability of OpenSource 2D animation programs.

Currently all I know of are KToon and F4L (both in alpha/beta), and as far as I know neither of them has the concept of grouping objects into tree’s and no `camera’.
Objects are grouped in layers and the same transforms you can apply to an object you can apply to a layer. So basically you end up with a tree. If you need a global camera just move the root node around and it acts like a camera. Scaling a layer, scales its objects around the screen center (zooming in and out - but scaling an object does so at its center).

KToon’s and F4L movement’s are limited to keyframes for a whole scene (as opposed to per object and layer in my program), and seem more suited to designing computer drawn frames (as opposed to animating ready drawn frames that could be drawn using a mix of scanner, inkscape and gimp).

Currently supported is translating, scaling, rotating and alpha blending your cels, with linear interpolation (inbetweens) for those as well.

As an example:


<scene>
	
	

	<layers>
		<layer name="camera">
			
			<object name="absolute background">
				<image name="" src="data/absbg.png" />
				<keyframes>
					<keyframe n="1">
						<move x="400" y="300" />
					</keyframe>
				</keyframes>
			</object>
			
			
			<object name="moving rotating changing object">
				<image name="1" src="data/object_frame1.jpg" />
				<image name="2" src="data/object_frame2.jpg" />
				
				<keyframes>
					<keyframe n="1">
						<move x="0" y="100" start="1" />
						<rotate angle="90" start="1" />
						<opacity value="2" start="1" />
					</keyframe>
					
					<keyframe n="50">
						<move x="1000" y="0" />
						<switch image="2" />
					</keyframe>
					
					<keyframe n="100">
						<move x="0" y="800" stop="1" />
						<rotate angle="180" stop="1" />
					</keyframe>
				</keyframes>
			</object>
			
			
			<layer name="crowd">
				
				<object name="crystals">
					<image name="matthew" src="data/crystals.png" />
				</object>
				<object name="tree">
					<image name="jacob" src="data/tree.png" />
				</object>
			</layer>

			
			<keyframes>
				<keyframe n="1">
					<scale factor="1" start="1" />
				</keyframe>
				
				<keyframe n="100">
					<scale factor="0.5" />
				</keyframe>
			</keyframes>
		</layer>
	</layers>

	<options>
		<screensize width="800" height="600" />
		<loopdelay delay="0" />		
		<save-as path="/tmp/img_" />	
		<output file="output.avi" />	
		<automatic-encoding />		
	</options>
</scene>

As you can see keyframe info can be applied to objects (leaf or node in tree talk) or layers (branch in tree talk). So a squadron of flying ships can be animated on one layer (with delta translation differences caused by animation in the objects position).

To build it you need:
SDL
SDL_image
SDL_gfx
python
boost (boost_python)
Optional:
mplayer (mencoder)
ImageMagick (convert)
(above 2 packages are needed for rendering an avi)
gimp-gap (alternatively if you want to manually encode the avi by hand - consult README)

This is a very crucial time… I need everyone I can get. At this point in time I am working on a gui configuration tool and amongst programmers I also need artists who can help me create some truly wonderful looking animations that will generate enough interest to get the project going.

email: genjix at gmail doat com

Please tell me what you think!


(Akira_San) #2

I like it, but Please port it for windows
strange i cant open your site, nor download any of the files


(Genjix) #3

The site was offline for a few hours, so they should all be working now.

Most likely the gui tool will be made in wxPython + OpenGL so it should be portable when done (atm the 2D command line rendering tool isn’t portable due to the build process, not any of the program itself).

To make this a reality I need people who can help me setup whats needed -
animators and designers (people who use such programs as Toon Boom, Toonz and Animo)
website developers (to set up and manage a website)
programmers who can work on ui, OpenGL or a plugin system (for refining a nice api for extension)

Please drop by and fill up the irc.freenode.net #nime channel! Also your suggestions and discussion are something I need.


(FishB8) #4

Successful build and test run on Gentoo. Keep up the good work.


(Genjix) #5

Hi again,

just thought I’d post a picture of how development is getting on with the gui tool
http://tinypic.com/fwpyjo.png

o ignore the stupid slider at the bottom of the screen, I will
eventually add a way of visualising which frames have keyframes and
which do not involve that Delete Keyframes and Add keyframes buttons.
Therefore scrolling the slider along every frame to see where your
keyframes are will be uneccessary.
Do you think it would be ok to do this as a list of the keyframes on
the right hand side and keep the slider and you can be right click the list entries
for insert&add , delete operations)?

o Not everything is visible atm in the object properties panel (top
left), like rotation, current image, scale and the objects name (might
make this when you double click the objects tree entry in the tree
view (bottom left))

o I’ve decided to go with seperating objects and images - i.e theres a
global list of images which you give names and objects can reference
those loaded images by their names (handles) as opposed to having an
internal list of images (allows objects to ‘share’ images and only
load them in once). This will enable me later on to have some kind of
‘image panel’ where you can drag and drop images onto the current
image text field or something similar - I’m aiming to completely get
rid of text input as much as needed in the future, so you no longer
have to reference the images by a name.


(BenjiF) #6

This looks perfect for the Star Wars fan-film animation project that my brother and I are doing! I’ve been struggling to do keyframe animation in Cinelerra, and it’s been rather painful. Cinelerra has come a long way in terms of usability and stability (since last I tried it) but it’s probably not the right tool for this job.

I’d strongly encourage you to set up a sourceforge.net project for Nime. A CVS repository and an e-mail list (both of which sourceforge.net could provide) would make it much easier for me (and other developers/users) to get involved.

Are you using wxPython for the GUI? If so, I’d be eager (and probably able) to help test/develop. I’m currently using wxWidgets, along with the Python-based SCons build system, for three of my own programming projects, so I’d be in relatively familiar territory.


(Genjix) #7

yes, thats the exactly the tools I’m using. I would love for someone to handle developing the gui, while I work on the renderer and core system api.

I have set up a sourceforge project, although because I haven’t had enough time (working on the program) I have not got round to creating a website.
http://nime.sf.net


(BenjiF) #8

Fantastic! :smiley: Could I convince you to import your current source tree into the CVS repository, and perhaps set up a “nime-devel” e-mail list, while you’re at it?

FWIW, I’ve got a couple projects of my own on sf.net:

DiffKey
DiffKey is a keyer plugin for the Linux video editor Cinelerra (it is included in releases >= 1.2.0). It allows bluescreen/greenscreen style keying and compositing, based on the difference between the current frame and a “guide” frame showing only the background.
http://diffkey.sf.net/

Tinara
Tinara is an effort to implement an extensible, cross-platform (Linux, Win32, MacOS X) framework for the distributed production and rendering of temporal media, with nestable environments for working with common media types (audio, film, MIDI, etc.).
http://www.tinara.org/ (I haven’t set up an actual web site for this either.)

I’m currently using the cross-platform framework that I developed for Tinara in the development of a piece of personal finance software (for which I just submitted a project request). I’ve got a Linux/JACK/LADSPA-based pitch corrector in the works too, but I haven’t put much time into it yet.

I can certainly understand not setting up a web site yet (Tinara’s been without a site for over two years :wink: ) but it’d probably be good to configure the Trove categorization, and upload your file releases and screenshot to the project page:

If you trust me enough to add my account (benjif) to the project, and grant me “Release Tech”, and “Screenshots” permissions, I’d be happy to at least take care of those two areas, so that the project looks alive to anyone who stumbles across it through the sf.net search engine.

Just having an e-mail list, and read-only access to a CVS repository, would be enough to get things started, however. :slight_smile:


(Genjix) #9

Yes fine. I was just playing with cvs repository this morning funnily enough (I know how important it is from big projects like planeshift).

We should discuss design issues (luckily I have a professional animator with experience specifically in 2D animation who can advise me where not to go) - I’ve pm’ed you with my details.