当前位置: 首页>>代码示例>>C++>>正文


C++ Skeleton::Root方法代码示例

本文整理汇总了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);
    });
}
开发者ID:bis83,项目名称:pomdog,代码行数:26,代码来源:SkeletonHelper.cpp

示例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);
}
开发者ID:bis83,项目名称:pomdog,代码行数:8,代码来源:SkeletonHelper.cpp


注:本文中的Skeleton::Root方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。