Giter Site home page Giter Site logo

tdanimengine's Introduction

TDAnimEngine

Description

TDAnimEngine allows you to create cut-out characters and animations in Maya an export it to be use directly into Cocos2D through XML. It's not a sprite based tool. It's for characters made out different pieces that will animate rotating its different components.

The library is composed of two parts:
. Maya Scripts: containing 1 script to export the character and 1 script to export the animations
. XCode lib: the TDAnimEngine classes to be added to your XCode project

What you can do:
. create a character in Maya and recreate it in Cocos2D (including Z-depth, rotations and parenting)
. access the different pieces using from Cocos2D using the same name than you used in Maya
. use SpriteSheets instead of pngs
. create rotation based animation in Maya and apply them to your character in Cocos2D
. control events when an animation has looped, has stopped, etc
. define custom events that will be launch at specific frames

Dependencies:

TBXML is needed to parse the generated XML files.
Get it here: TBXML

General Usage

##Maya Scripts##

MayaToCocos2DNodes.mel: use this script on a Maya model (made out of polygonal planes) to generate an XML that will contain all the necessary information to recreate it on Cocos2D. Use a 1/100 ratio to recreate the different pieces (ie: if an image it's 200x200 pixels, in Maya you should create a plane 0.2 x 0.2).

Please visit the tutorial for a detail explanation on how to use this script.

MayaAnimToXMLNodeBased.mel: use this script to, having a model in Maya, create a rotation based animation (or Direct Kinematics) and export it as XML so it can be used on Cocos2D. So far, we've worked out just rotations. In a future we might support translation and scales.

Please visit the tutorial for a detail explanation on how to use this script.

##TDAnimEngine Lib##

It's composed of a number of classes. The main one is:

TDAnimCharacter: this is the class responsible of creating the different CCSprites the character might be made of. Extend this class when having multiple characters in one scene for easier control.

###RECREATING THE CHARACTER### There are two ways of recreating a character based on the XML generated in Maya:

PNG'S BASED

TDAnimCharacter *robot = [TDAnimCharacter characterFromConfigFile:"FILENAME"];
[robot setPosition:ccp(120, 120)];
[self addChild:robot];

It requires you have included in your Resources the same PNGs used in Maya to create the character. The class will load them as textures of the recreated CCSprites.

SPRITESHEET BASED

TDAnimCharacter *robot = [TDAnimCharacter characterFromConfigFile:"FILENAME" andAtlasInfoFile:"FILENAME"];
[robot setPosition:ccp(120, 120)];
[self addChild:robot];

It requires you have a SpriteSheet png for the character and it's generated PLIST with the same name.

###IMPORTING ANIMATIONS### To import animations to your character use:

[robot createCharacterAnimationsFromXML:"FILENAME"];

The animations can be in the same XML file than the character config XML. We recommend to keep them in different files so the Config file can be reused.

To play an animation:

[robot playAnimation:"ANIMATION NAME" loop:(YES/NO) wait:(YES/NO)];

Where:
ANIMATION NAME: the name of the animation as you set it up on the Maya script
LOOP: will the character repeat the animation over and over?
WAIT: will the character wait until the current animation being played finishes?

CUSTOM EVENTS

You can add custom events to your animation file.
The events are animation specific, meaning that you can define events for the "walk" cycle or for the "jump" cycle.
Example:

<events>
	<animation id="walk">
		<event type="big_step" frame ='1' />
		<event type="small_step" frame ='10' />
		<event type="big_step" frame ='22' />			
	</animation>
</events>

To use the events:

create your own class extending from TDAnimCharacter

interface MyRobot : TDAnimCharacter

On the implementation, overwrite executeEvent method:

-(void) executeEvent:(TDAnimEvent *)_evt
{
	if ([_evt.type isEqualToString:@"big_step")
		self.position = ccpAdd(self.position, ccp(100, 0));
		
	if ([_evt.type isEqualToString:@"small_step"])
		self.position = ccpAdd(self.position, ccp(20, 0));			
}

So, when you play the animation "walk" and the playhead gets to frame 1 and 22, your character will move the right by 100px. It will move 20px when the playhead hits the frame number 10.

Take a look at the example. It includes the Maya files, the TBXML library, the required pngs and the XCode project.

We will add more tutorials as we can.

The Dam Armada

tdanimengine's People

Stargazers

Chris Bruce avatar

Watchers

Chris Bruce avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.