Ogre中动态绑定骨骼动画
Ogre中的骨骼动画通常是一个代表角色skin的多边形网格.mesh和一个代表bones运动轨迹的.skeleton(一个角色的所有动作如walk、wave、swim、和dance等都包含在这个.skeleton中)。通常Ogre在加载.mesh的时候,会自动把和.mesh关联的.skeleton进行绑定。
但是,很多时候,一个mesh只对应一个skeleton是不方便的,因为不同的角色常会使用同样的骨骼动画,如果让一个mesh对应多个skeleton和让多个mesh可以对应同一个skeleton那么就比较方便了。
可以这样组织文件:
mesh方面:角色1.mesh 角色2.mesh
Skeleton方面,把每个动作分开放到各自的.skeleton文件中:walk.skeleton/wave.skeleton/swim.skeleton/dance.skeleton
在代码中进行动态绑定skeleton的代码:
AvatarEntity = SceneManager->createEntity("Avatar_entity", “角色1.mesh”);
if (AvatarEntity->hasSkeleton())
{
Ogre::SkeletonInstance *skeleton = AvatarEntity->getSkeleton();
skeleton –>addLinkedSkeletonAnimationSource(“walk.skeleton”);
skeleton->refreshAvailableAnimationState();
}