Sinbad Model         Sinbad: Official OGRE Mascot
Picture of the Ogre mascott "Sinbad"

General Info


This is Sinbad, OGRE's official mascot as of January 2010. His name comes from the community nickname of Steve Streeting, OGRE's Founder and former Project Lead. The character design and 3D model were made by Zi Ye (aka omniter), with input from the OGRE community. The OGRE mesh and Blender scene file are available in the OGRE SDK (1.7 and up) under the Creative Commons Attribution-Share Alike 3.0 Unported License.

Animation


Sinbad can perform the following actions:

  • Idle
  • Run
  • Jump
  • Take out swords
  • Put away swords
  • Swing swords (vertically or horizontally)
  • Dance


These are achieved by mixing and playing 13 different animations. Some animations control different parts of Sinbad's body, and can be played simultaneously (e.g., swinging the swords while running). Others control the same parts, and are therefore mutually exclusive (e.g., idling or dancing but not both). In addition to the animations, two sword entities can be attached to tag points on Sinbad's hands or sheaths to complete the character.

Here is a slightly older video of Sinbad in action:

<iframe src="http://player.vimeo.com/video/8815075" width="400" height="300" frameborder="0"></iframe>


Usage

Simple Setup


If you just want to load Sinbad into your application and animate him, first make sure media/packs/Sinbad.zip is properly loaded. If you don't have that file, download it.
Now do this in your setup:

// Create entity from mesh and attach it to a scene node.
SceneNode* node = sceneMgr->getRootSceneNode()->createChildSceneNode();
Entity* ent = sceneMgr->createEntity("Sinbad", "Sinbad.mesh");
node->attachObject(ent);

// Set animation blend mode to additive / cumulative.
ent->getSkeleton()->setBlendMode(ANIMBLEND_CUMULATIVE);

// Get the two halves of the idle animation.
baseAnim = ent->getAnimationState("IdleBase");
topAnim = ent->getAnimationState("IdleTop");

// Enable both of them and set them to loop.
baseAnim->setLoop(true);
topAnim->setLoop(true);
baseAnim->setEnabled(true);
topAnim->setEnabled(true);

Now do this in your update every frame:

// Update the animations according to elapsed frame time.
baseAnim->addTime(elapsedTime);
topAnim->addTime(elapsedTime);


Advanced Setup


There are many details involved in controlling animated characters - way too many for this article. The Character sample in the SDK provides a full demonstration of Sinbad's capabilities. In particular, refer to the code in SinbadCharacterController.h. The comments should provide a fairly decent explanation of what is going on.

Development


The development of Sinbad happened in this thread. Below are a few images showing Sinbad during various stages of development.

Initial Sketch (click to enlarge)
Initial Sketch (click to enlarge)
Initial Sketch (click to enlarge)
Initial Sketch (click to enlarge)
Model development (click to enlarge)
Model development (click to enlarge)
Model development (click to enlarge)
Model development (click to enlarge)




Appearances

Award for Steve Streeting


For creating, publishing, leading and support of Ogre for awesome 10 years, Steve got this award from the Ogre community when he retired from his lead position in 2010.
Sinbad model - award for Steve Streeting

(click to enlarge)
(click to enlarge)
(click to enlarge)
(click to enlarge)

Pixel Art


Sinbad  Model - fan pictury by user Skiri Sinbad  Model - fan pictury by user omniter

Games

by Kojack (click to enlarge)
by Kojack (click to enlarge)
by tommo (click to enlarge)
by tommo (click to enlarge)


Kinect