本文整理汇总了C++中Skeleton::Root方法的典型用法代码示例。如果您正苦于以下问题:C++ Skeleton::Root方法的具体用法?C++ Skeleton::Root怎么用?C++ Skeleton::Root使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Skeleton
的用法示例。
在下文中一共展示了Skeleton::Root方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ToGlobalPose
//-----------------------------------------------------------------------
void SkeletonHelper::ToGlobalPose(Skeleton const& skeleton,
SkeletonPose const& skeletonPose, std::vector<Matrix3x2> & globalPose)
{
POMDOG_ASSERT(skeleton.JointCount() > 1);
POMDOG_ASSERT(skeleton.Root().Index);
SkeletonHelper::Traverse(skeleton, skeleton.Root().Index, [&](Joint const& bone)
{
POMDOG_ASSERT(*bone.Index < skeletonPose.JointPoses.size());
auto & pose = skeletonPose.JointPoses[*bone.Index];
Matrix3x2 matrix = Matrix3x2::CreateScale(pose.Scale);
matrix *= Matrix3x2::CreateRotation(pose.Rotation);
matrix *= Matrix3x2::CreateTranslation(pose.Translate);
if (bone.Parent)
{
POMDOG_ASSERT(*bone.Parent < globalPose.size());
matrix *= globalPose[*bone.Parent];
}
POMDOG_ASSERT(*bone.Index < globalPose.size());
globalPose[*bone.Index] = std::move(matrix);
});
}
示例2: Traverse
//-----------------------------------------------------------------------
void SkeletonHelper::Traverse(Skeleton const& skeleton,
std::function<void(Joint const&)> const& traverser)
{
POMDOG_ASSERT(skeleton.JointCount() > 0);
POMDOG_ASSERT(skeleton.Root().Index);
Traverse(skeleton, skeleton.Root().Index, traverser);
}