void setupAnimation(void) { //Color Keyframe Sequence KeyframeColorSequenceUnrecPtr ColorKeyframes = KeyframeColorSequenceColor3f::create(); ColorKeyframes->addKeyframe(Color4f(1.0f,0.0f,0.0f,1.0f),0.0f); ColorKeyframes->addKeyframe(Color4f(0.0f,1.0f,0.0f,1.0f),2.0f); ColorKeyframes->addKeyframe(Color4f(0.0f,0.0f,1.0f,1.0f),4.0f); ColorKeyframes->addKeyframe(Color4f(1.0f,0.0f,0.0f,1.0f),6.0f); //Animator KeyframeAnimatorUnrecPtr TheAnimator = KeyframeAnimator::create(); TheAnimator->setKeyframeSequence(ColorKeyframes); //Animation TheAnimation = FieldAnimation::create(); TheAnimation->setAnimator(TheAnimator); TheAnimation->setInterpolationType(Animator::LINEAR_INTERPOLATION); TheAnimation->setCycling(-1); TheAnimation->setAnimatedMultiField(TutorialBackground, std::string("color"), 1); //Animation Listener TheAnimation->addAnimationListener(&TheAnimationListener); TheAnimation->attachUpdateProducer(TutorialWindow->editEventProducer()); TheAnimation->start(); }
AnimationGroupUnrecPtr setupAnimation(SimpleMaterial* const TheTorusMaterial, Transform* const TorusNodeTrans) { //Color Keyframe Sequence KeyframeColorSequenceColor3fUnrecPtr ColorKeyframes = KeyframeColorSequenceColor3f::create(); ColorKeyframes->addKeyframe(Color4f(1.0f,0.0f,0.0f,1.0f),0.0f); ColorKeyframes->addKeyframe(Color4f(0.0f,1.0f,0.0f,1.0f),2.0f); ColorKeyframes->addKeyframe(Color4f(0.0f,0.0f,1.0f,1.0f),4.0f); ColorKeyframes->addKeyframe(Color4f(1.0f,0.0f,0.0f,1.0f),6.0f); //Color Animator KeyframeAnimatorUnrecPtr TheColorAnimator = KeyframeAnimator::create(); TheColorAnimator->setKeyframeSequence(ColorKeyframes); //Color Animation FieldAnimationUnrecPtr TheColorAnimation = FieldAnimation::create(); TheColorAnimation->setAnimator(TheColorAnimator); TheColorAnimation->setInterpolationType(Animator::LINEAR_INTERPOLATION); TheColorAnimation->setCycling(2); TheColorAnimation->setAnimatedField(TheTorusMaterial, std::string("diffuse")); //Transformation Keyframe Sequence KeyframeTransformationSequenceMatrix4fUnrecPtr TransformationKeyframes = KeyframeTransformationSequenceMatrix4f::create(); Matrix TempMat; TempMat.setTransform(Vec3f(0.0f,0.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*0.0f)); TransformationKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(0.0f,1.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*0.5f)); TransformationKeyframes->addKeyframe(TempMat,1.0f); TempMat.setTransform(Vec3f(1.0f,1.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*1.0f)); TransformationKeyframes->addKeyframe(TempMat,2.0f); TempMat.setTransform(Vec3f(1.0f,0.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*1.5f)); TransformationKeyframes->addKeyframe(TempMat,3.0f); TempMat.setTransform(Vec3f(0.0f,0.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*2.0f)); TransformationKeyframes->addKeyframe(TempMat,4.0f); //Transformation Animator KeyframeAnimatorUnrecPtr TheTransformationAnimator = KeyframeAnimator::create(); TheTransformationAnimator->setKeyframeSequence(TransformationKeyframes); //Transformation Animation FieldAnimationUnrecPtr TheTransformationAnimation = FieldAnimation::create(); TheTransformationAnimation->setAnimator(TheTransformationAnimator); TheTransformationAnimation->setInterpolationType(Animator::LINEAR_INTERPOLATION); TheTransformationAnimation->setCycling(2); TheTransformationAnimation->setAnimatedField(TorusNodeTrans, std::string("matrix")); AnimationGroupUnrecPtr TheAnimationGroup = AnimationGroup::create(); TheAnimationGroup->pushToAnimations(TheColorAnimation); TheAnimationGroup->pushToAnimations(TheTransformationAnimation); return AnimationGroupTransitPtr(TheAnimationGroup); }
void setupAnimation(void) { std::vector<BoostPath> _ImagePaths; _ImagePaths.push_back(BoostPath("./Data/Anim001.jpg")); _ImagePaths.push_back(BoostPath("./Data/Anim002.jpg")); _ImagePaths.push_back(BoostPath("./Data/Anim003.jpg")); _ImagePaths.push_back(BoostPath("./Data/Anim004.jpg")); _ImagePaths.push_back(BoostPath("./Data/Anim005.jpg")); //Make the textures for(UInt32 i(0) ; i<_ImagePaths.size(); ++i) { ImageUnrecPtr AnimFrameImage = ImageFileHandler::the()->read(_ImagePaths[i].string().c_str()); _Images.push_back(AnimFrameImage); } TextureObjChunkUnrecPtr AnimFrameTexture = TextureObjChunk::create(); AnimFrameTexture->setImage(_Images.front()); //Box Material MaterialChunkUnrecPtr TheMaterialChunk = MaterialChunk::create(); TheMaterialChunk->setAmbient(Color4f(0.4,0.4,0.4,1.0)); TheMaterialChunk->setDiffuse(Color4f(0.8,0.8,0.8,1.0)); TheMaterialChunk->setSpecular(Color4f(1.0,1.0,1.0,1.0)); TheBoxMaterial = ChunkMaterial::create(); TheBoxMaterial->addChunk(AnimFrameTexture); //Texture Keyframe Sequence KeyframeFCPtrSequenceUnrecPtr TextureKeyframes = KeyframeFCPtrSequenceImage::create(); for(UInt32 i(0) ; i<_Images.size(); ++i) { TextureKeyframes->addKeyframe(_Images[i],static_cast<Real32>(i)*0.5f); } //Animator TutorialTextureAnimator = KeyframeAnimator::create(); TutorialTextureAnimator->setKeyframeSequence(TextureKeyframes); //Animation TutorialTextureAnimation = FieldAnimation::create(); TutorialTextureAnimation->setAnimator(TutorialTextureAnimator); TutorialTextureAnimation->setInterpolationType(Animator::STEP_INTERPOLATION); TutorialTextureAnimation->setCycling(-1); TutorialTextureAnimation->setAnimatedField(AnimFrameTexture,TextureObjChunk::ImageFieldId); //Animation Listener TutorialTextureAnimation->addAnimationListener(&TutorialTextureAnimationListener); TutorialTextureAnimation->attachUpdateProducer(TutorialWindow->editEventProducer()); TutorialTextureAnimation->start(); }
AnimationTransitPtr setupAnimation(GradientBackground* const TutorialBackground) { //Color Keyframe Sequence KeyframeColorSequenceUnrecPtr ColorKeyframes = KeyframeColorSequenceColor3f::create(); ColorKeyframes->addKeyframe(Color4f(1.0f,0.0f,0.0f,1.0f),0.0f); ColorKeyframes->addKeyframe(Color4f(0.0f,1.0f,0.0f,1.0f),2.0f); ColorKeyframes->addKeyframe(Color4f(0.0f,0.0f,1.0f,1.0f),4.0f); ColorKeyframes->addKeyframe(Color4f(1.0f,0.0f,0.0f,1.0f),6.0f); //Animator KeyframeAnimatorUnrecPtr TheAnimator = KeyframeAnimator::create(); TheAnimator->setKeyframeSequence(ColorKeyframes); //Animation FieldAnimationUnrecPtr TheAnimation = FieldAnimation::create(); TheAnimation->setAnimator(TheAnimator); TheAnimation->setInterpolationType(Animator::LINEAR_INTERPOLATION); TheAnimation->setCycling(-1); TheAnimation->setAnimatedMultiField(TutorialBackground, std::string("color"), 1); TheAnimation->connectAnimationCycled(boost::bind(animationCycled, _1)); return AnimationTransitPtr(TheAnimation); }
AnimationTransitPtr setupAnimation(FieldContainer* const AnimatedObject, const std::string& AnimatedField) { //Color Keyframe Sequence KeyframeVectorSequenceVec4fUnrecPtr ColorKeyframes = KeyframeVectorSequenceVec4f::create(); ColorKeyframes->addRawKeyframe(Vec4f(1.0f,0.0f,0.0f,1.0f),0.0f); ColorKeyframes->addRawKeyframe(Vec4f(0.0f,1.0f,0.0f,1.0f),2.0f); ColorKeyframes->addRawKeyframe(Vec4f(0.0f,0.0f,1.0f,1.0f),4.0f); ColorKeyframes->addRawKeyframe(Vec4f(1.0f,0.0f,0.0f,1.0f),6.0f); //Animator KeyframeAnimatorUnrecPtr Animator = KeyframeAnimator::create(); Animator->setKeyframeSequence(ColorKeyframes); //Animation FieldAnimationUnrecPtr ColorAnimation = FieldAnimation::create(); ColorAnimation->setAnimator(Animator); ColorAnimation->setInterpolationType(Animator::LINEAR_INTERPOLATION); ColorAnimation->setCycling(-1); ColorAnimation->setAnimatedField(AnimatedObject, AnimatedField); return AnimationTransitPtr(ColorAnimation); }
AnimationTransitPtr setupAnimation(ChunkMaterial* const TheBoxMaterial) { std::vector<BoostPath> _ImagePaths; _ImagePaths.push_back(BoostPath("./Data/Anim001.jpg")); _ImagePaths.push_back(BoostPath("./Data/Anim002.jpg")); _ImagePaths.push_back(BoostPath("./Data/Anim003.jpg")); _ImagePaths.push_back(BoostPath("./Data/Anim004.jpg")); _ImagePaths.push_back(BoostPath("./Data/Anim005.jpg")); TextureSelectChunkRefPtr AnimSequenceTexture = TextureSelectChunk::create(); AnimSequenceTexture->setChoice(0); //Make the textures for(UInt32 i(0) ; i<_ImagePaths.size(); ++i) { ImageRefPtr AnimFrameImage = ImageFileHandler::the()->read(_ImagePaths[i].string().c_str()); TextureObjChunkRefPtr AnimFrameTexture = TextureObjChunk::create(); AnimFrameTexture->setImage(AnimFrameImage); AnimSequenceTexture->pushToTextures(AnimFrameTexture); } //Box Material MaterialChunkUnrecPtr TheMaterialChunk = MaterialChunk::create(); TheMaterialChunk->setAmbient(Color4f(0.4,0.4,0.4,1.0)); TheMaterialChunk->setDiffuse(Color4f(0.8,0.8,0.8,1.0)); TheMaterialChunk->setSpecular(Color4f(1.0,1.0,1.0,1.0)); //Texture Env Chunk TextureEnvChunkRefPtr TexEnv = TextureEnvChunk::create(); TexEnv->setEnvMode(GL_MODULATE); TheBoxMaterial->addChunk(AnimSequenceTexture); TheBoxMaterial->addChunk(TexEnv); TheBoxMaterial->addChunk(TheMaterialChunk); //Texture Keyframe Sequence KeyframeNumberSequenceUInt32RefPtr FrameChoiceKeyframes = KeyframeNumberSequenceUInt32::create(); Real32 Rate(0.05f); for(UInt32 i(0) ; i<AnimSequenceTexture->getMFTextures()->size(); ++i) { FrameChoiceKeyframes->addRawKeyframe(i,static_cast<Real32>(i)*Rate); } for(UInt32 i(0) ; i<AnimSequenceTexture->getMFTextures()->size(); ++i) { FrameChoiceKeyframes->addRawKeyframe(AnimSequenceTexture->getMFTextures()->size()-i-1, static_cast<Real32>(i+AnimSequenceTexture->getMFTextures()->size())*Rate); } //Animator KeyframeAnimatorUnrecPtr TutorialTextureAnimator = KeyframeAnimator::create(); TutorialTextureAnimator->setKeyframeSequence(FrameChoiceKeyframes); //Animation FieldAnimationUnrecPtr TutorialTextureAnimation = FieldAnimation::create(); TutorialTextureAnimation->setAnimator(TutorialTextureAnimator); TutorialTextureAnimation->setInterpolationType(Animator::STEP_INTERPOLATION); TutorialTextureAnimation->setCycling(-1); TutorialTextureAnimation->setAnimatedField(AnimSequenceTexture,TextureSelectChunk::ChoiceFieldId); return AnimationTransitPtr(TutorialTextureAnimation); }
void setupAnimation(void) { //Color Keyframe Sequence ColorKeyframes = KeyframeColorSequenceColor3f::create(); ColorKeyframes->addKeyframe(Color4f(1.0f,0.0f,0.0f,1.0f),0.0f); ColorKeyframes->addKeyframe(Color4f(0.0f,1.0f,0.0f,1.0f),2.0f); ColorKeyframes->addKeyframe(Color4f(0.0f,0.0f,1.0f,1.0f),4.0f); ColorKeyframes->addKeyframe(Color4f(1.0f,0.0f,0.0f,1.0f),6.0f); //Color Animator KeyframeAnimatorUnrecPtr TheColorAnimator = KeyframeAnimator::create(); TheColorAnimator->setKeyframeSequence(ColorKeyframes); //Color Animation FieldAnimationUnrecPtr TheColorAnimation = FieldAnimation::create(); TheColorAnimation->setAnimator(TheColorAnimator); TheColorAnimation->setInterpolationType(Animator::LINEAR_INTERPOLATION); TheColorAnimation->setCycling(2); TheColorAnimation->setAnimatedField(TheTorusMaterial, std::string("diffuse")); //Vector Keyframe Sequence VectorKeyframes = KeyframeVectorSequenceVec3f::create(); VectorKeyframes->addKeyframe(Vec3f(0.0f,0.0f,0.0f),0.0f); VectorKeyframes->addKeyframe(Vec3f(0.0f,1.0f,0.0f),1.0f); VectorKeyframes->addKeyframe(Vec3f(1.0f,1.0f,0.0f),2.0f); VectorKeyframes->addKeyframe(Vec3f(1.0f,0.0f,0.0f),3.0f); VectorKeyframes->addKeyframe(Vec3f(0.0f,0.0f,0.0f),4.0f); //Vector Animator KeyframeAnimatorUnrecPtr TheVectorAnimator = KeyframeAnimator::create(); TheVectorAnimator->setKeyframeSequence(VectorKeyframes); //Vector Animation FieldAnimationUnrecPtr TheVectorAnimation = FieldAnimation::create(); TheVectorAnimation->setAnimator(TheVectorAnimator); TheVectorAnimation->setInterpolationType(Animator::LINEAR_INTERPOLATION); TheVectorAnimation->setCycling(2); //TheVectorAnimation->setAnimatedField(getFieldContainer("Transform",std::string("TorusNodeVectorCore")), std::string("matrix")); //Transformation Keyframe Sequence TransformationKeyframes = KeyframeTransformationSequenceMatrix4f::create(); Matrix TempMat; TempMat.setTransform(Vec3f(0.0f,0.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*0.0f)); TransformationKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(0.0f,1.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*0.5f)); TransformationKeyframes->addKeyframe(TempMat,1.0f); TempMat.setTransform(Vec3f(1.0f,1.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*1.0f)); TransformationKeyframes->addKeyframe(TempMat,2.0f); TempMat.setTransform(Vec3f(1.0f,0.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*1.5f)); TransformationKeyframes->addKeyframe(TempMat,3.0f); TempMat.setTransform(Vec3f(0.0f,0.0f,0.0f), Quaternion(Vec3f(0.0f,1.0f,0.0f), 3.14159f*2.0f)); TransformationKeyframes->addKeyframe(TempMat,4.0f); //Transformation Animator KeyframeAnimatorUnrecPtr TheTransformationAnimator = KeyframeAnimator::create(); TheTransformationAnimator->setKeyframeSequence(TransformationKeyframes); //Transformation Animation FieldAnimationUnrecPtr TheTransformationAnimation = FieldAnimation::create(); TheTransformationAnimation->setAnimator(TheTransformationAnimator); TheTransformationAnimation->setInterpolationType(Animator::LINEAR_INTERPOLATION); TheTransformationAnimation->setCycling(2); TheTransformationAnimation->setAnimatedField(TorusNodeTrans, std::string("matrix")); TheAnimationGroup = AnimationGroup::create(); TheAnimationGroup->pushToAnimations(TheColorAnimation); TheAnimationGroup->pushToAnimations(TheTransformationAnimation); TheAnimationGroup->attachUpdateProducer(TutorialWindow->editEventProducer()); TheAnimationGroup->start(); }
void setupAnimation(void) { Matrix TempMat; //We create an animation and an animator for each joint we wish to animate //Left Elbow KeyframeTransformationSequenceUnrecPtr LeftElbowKeyframes = KeyframeTransformationSequenceMatrix4f::create(); //Make keyframes TempMat.setTransform(Vec3f(2.0,0.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); LeftElbowKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(2.0,0.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),1.57f)); LeftElbowKeyframes->addKeyframe(TempMat,3.0f); TempMat.setTransform(Vec3f(2.0,0.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); LeftElbowKeyframes->addKeyframe(TempMat,6.0f); //Left Elbow Animator KeyframeAnimatorUnrecPtr LeftElbowAnimator = KeyframeAnimator::create(); LeftElbowAnimator->setKeyframeSequence(LeftElbowKeyframes); //Right Elbow KeyframeTransformationSequenceUnrecPtr RightElbowKeyframes = KeyframeTransformationSequenceMatrix4f::create(); //Make keyframes TempMat.setTransform(Vec3f(-2.0,0.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); RightElbowKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(-2.0,0.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),-1.57f)); RightElbowKeyframes->addKeyframe(TempMat,3.0f); TempMat.setTransform(Vec3f(-2.0,0.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); RightElbowKeyframes->addKeyframe(TempMat,6.0f); //Right Elbow Animator KeyframeAnimatorUnrecPtr RightElbowAnimator = KeyframeAnimator::create(); RightElbowAnimator->setKeyframeSequence(RightElbowKeyframes); //Left Shoulder KeyframeTransformationSequenceUnrecPtr LeftShoulderKeyframes = KeyframeTransformationSequenceMatrix4f::create(); //Make keyframes TempMat.setTransform(Vec3f(1.0,-0.5,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); LeftShoulderKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(1.0,-0.5,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.4f)); LeftShoulderKeyframes->addKeyframe(TempMat,3.0f); TempMat.setTransform(Vec3f(1.0,-0.5,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); LeftShoulderKeyframes->addKeyframe(TempMat,6.0f); //Left Shoulder Animator KeyframeAnimatorUnrecPtr LeftShoulderAnimator = KeyframeAnimator::create(); LeftShoulderAnimator->setKeyframeSequence(LeftShoulderKeyframes); //Right Shoulder KeyframeTransformationSequenceUnrecPtr RightShoulderKeyframes = KeyframeTransformationSequenceMatrix4f::create(); //Make keyframes TempMat.setTransform(Vec3f(-1.0,-0.5,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); RightShoulderKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(-1.0,-0.5,0.0),Quaternion(Vec3f(0.0,0.0,1.0),-0.4f)); RightShoulderKeyframes->addKeyframe(TempMat,3.0f); TempMat.setTransform(Vec3f(-1.0,-0.5,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); RightShoulderKeyframes->addKeyframe(TempMat,6.0f); //Right Shoulder Animator KeyframeAnimatorUnrecPtr RightShoulderAnimator = KeyframeAnimator::create(); RightShoulderAnimator->setKeyframeSequence(RightShoulderKeyframes); //Left Hip KeyframeTransformationSequenceUnrecPtr LeftHipKeyframes = KeyframeTransformationSequenceMatrix4f::create(); //Make keyframes TempMat.setTransform(Vec3f(1.0,-1.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); LeftHipKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(1.0,-1.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.4f)); LeftHipKeyframes->addKeyframe(TempMat,3.0f); TempMat.setTransform(Vec3f(1.0,-1.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); LeftHipKeyframes->addKeyframe(TempMat,6.0f); //Left Hip Animator KeyframeAnimatorUnrecPtr LeftHipAnimator = KeyframeAnimator::create(); LeftHipAnimator->setKeyframeSequence(LeftHipKeyframes); //Right Hip KeyframeTransformationSequenceUnrecPtr RightHipKeyframes = KeyframeTransformationSequenceMatrix4f::create(); //Make keyframes TempMat.setTransform(Vec3f(-1.0,-1.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); RightHipKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(-1.0,-1.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),-0.4f)); RightHipKeyframes->addKeyframe(TempMat,3.0f); TempMat.setTransform(Vec3f(-1.0,-1.0,0.0),Quaternion(Vec3f(0.0,0.0,1.0),0.0f)); RightHipKeyframes->addKeyframe(TempMat,6.0f); //Right Hip Animator KeyframeAnimatorUnrecPtr RightHipAnimator = KeyframeAnimator::create(); RightHipAnimator->setKeyframeSequence(RightHipKeyframes); //Clavicle KeyframeTransformationSequenceUnrecPtr ClavicleKeyframes = KeyframeTransformationSequenceMatrix4f::create(); //Make keyframes TempMat.setTransform(Vec3f(0.0,5.0,0.0)); ClavicleKeyframes->addKeyframe(TempMat,0.0f); TempMat.setTransform(Vec3f(0.0,3.0,0.0)); ClavicleKeyframes->addKeyframe(TempMat,2.0f); TempMat.setTransform(Vec3f(0.0,3.0,0.0)); ClavicleKeyframes->addKeyframe(TempMat,4.0f); TempMat.setTransform(Vec3f(0.0,5.0,0.0)); ClavicleKeyframes->addKeyframe(TempMat,6.0f); //Clavicle Animator KeyframeAnimatorUnrecPtr ClavicleAnimator = KeyframeAnimator::create(); ClavicleAnimator->setKeyframeSequence(ClavicleKeyframes); //Skeleton Animation TheSkeletonAnimation = SkeletonAnimation::create(); //Add the animators we just made to the skeleton animation TheSkeletonAnimation->addTransformationAnimator(LeftElbowAnimator, LeftElbow); //Here we tell the skeleton animation the it should use the animator LeftElbowAnimator to animate the joint LeftElbow TheSkeletonAnimation->addTransformationAnimator(RightElbowAnimator, RightElbow); TheSkeletonAnimation->addTransformationAnimator(LeftShoulderAnimator, LeftShoulder); TheSkeletonAnimation->addTransformationAnimator(RightShoulderAnimator, RightShoulder); TheSkeletonAnimation->addTransformationAnimator(LeftHipAnimator, LeftHip); TheSkeletonAnimation->addTransformationAnimator(RightHipAnimator, RightHip); TheSkeletonAnimation->addTransformationAnimator(ClavicleAnimator, Clavicle); TheSkeletonAnimation->setSkeleton(ExampleSkeleton); TheSkeletonAnimation->attachUpdateProducer(TutorialWindow->editEventProducer()); TheSkeletonAnimation->start(); }