History: Sinbad Model
Source of version: 7
Copy to clipboard
{IMG(fileId="1996",styleimage="border",title="Sinbad",align="right")}{IMG}
!General Info
This is Sinbad, OGRE's official mascot as of January 2010. His name comes from the community nickname of [http://stevestreeting.com/|Steve Streeting], OGRE's Founder and former Project Lead. The character design and 3D model were made by Zi Ye (aka [http://www.ogre3d.org/forums/memberlist.php?mode=viewprofile&u=21783|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 [http://creativecommons.org/licenses/by-sa/3.0/|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:
[http://vimeo.com/8815075|vimeo.com/8815075]
!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. Now do this in your setup:
{CODE(colors="c++")}// 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);{CODE}
Now do this in your update every frame:
{CODE(colors="c++")}// Update the animations according to elapsed frame time.
baseAnim->addTime(elapsedTime);
topAnim->addTime(elapsedTime);{CODE}
!!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 [http://www.ogre3d.org/forums/viewtopic.php?f=16&t=48856|this thread]. Below are a few images showing Sinbad during various stages of development.
{IMG(fileId="1999",thumb="y",width="300",styleimage="border",title="Initial Sketch")}{IMG}
{IMG(fileId="2000",thumb="y",width="400",styleimage="border",title="Initial Sketch")}{IMG}
{IMG(fileId="2003",thumb="y",width="400",styleimage="border",title="Initial Sketch")}{IMG}
{IMG(fileId="2005",thumb="y",width="400",styleimage="border",title="Initial Sketch")}{IMG}
!Appearances
!!Pixel Art
{IMG(fileId="1997",title="by Skiriki")}{IMG}{IMG(fileId="1998",title="by omniter")}{IMG}
!!Games
{IMG(src="http://img707.imageshack.us/img707/6281/screenshot0120201006091.png",width="400",styleimage="border",thumb="yes",title="by Kojack")}{IMG}
{IMG(fileId="2002",width="400",styleimage="border",thumb="yes",title="by tommo")}{IMG}
{YOUTUBE(movie="http://www.youtube.com/watch?v=Pc_G6K_JhWU",width="400",allowFullScreen="y")}{YOUTUBE}
!!Kinect
{YOUTUBE(movie="http://www.youtube.com/watch?v=O6xdopI9su4",width="400",allowFullScreen="y")}{YOUTUBE}