本文整理汇总了C++中ISkeletonPose::GetJointCount方法的典型用法代码示例。如果您正苦于以下问题:C++ ISkeletonPose::GetJointCount方法的具体用法?C++ ISkeletonPose::GetJointCount怎么用?C++ ISkeletonPose::GetJointCount使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISkeletonPose
的用法示例。
在下文中一共展示了ISkeletonPose::GetJointCount方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Execute
bool CTransformationPinning::Execute(const SAnimationPoseModifierParams& params)
{
if (m_factor == 0.0f)
return false;
CRY_ASSERT(m_source && (m_jointID > 0.0f));
if (!m_jointsInitialised)
{
Init(params);
}
ISkeletonPose* pSkeletonPose = params.pCharacterInstance->GetISkeletonPose();
int sourceJoints = m_source->GetJointCount();
CRY_ASSERT(sourceJoints == pSkeletonPose->GetJointCount());
for (int i=0; i<sourceJoints; i++)
{
const QuatT &sourceJoint = m_source->GetAbsJointByID(i);
const QuatT &relSourceJoint = m_source->GetRelJointByID(i);
CRY_ASSERT(params.pPoseData->GetJointAbsolute(i).IsValid());
CRY_ASSERT(sourceJoint.IsValid());
switch (m_jointTypes[i])
{
case TransformationPinJoint::Copy:
if (m_factor < 1.0f)
{
QuatT diff = params.pPoseData->GetJointAbsolute(i).GetInverted() * sourceJoint;
params.pPoseData->SetJointAbsolute(i,
params.pPoseData->GetJointAbsolute(i) * diff.GetScaled(m_factor));
diff = params.pPoseData->GetJointRelative(i).GetInverted() * relSourceJoint;
params.pPoseData->SetJointRelative(i, params.pPoseData->GetJointRelative(i) * diff.GetScaled(m_factor));
}
else
{
params.pPoseData->SetJointAbsolute(i, sourceJoint);
params.pPoseData->SetJointRelative(i, relSourceJoint);
}
break;
case TransformationPinJoint::Feather:
{
int16 parent = m_source->GetParentIDByID(i);
QuatT invParent = params.pPoseData->GetJointAbsolute(parent).GetInverted();
params.pPoseData->SetJointRelative(i, invParent * params.pPoseData->GetJointAbsolute(i));
QuatT thisJnt = params.pPoseData->GetJointAbsolute(parent) * params.pPoseData->GetJointRelative(i);
CRY_ASSERT(params.pPoseData->GetJointRelative(i).IsValid());
CRY_ASSERT(thisJnt.IsValid());
}
break;
case TransformationPinJoint::Inherit:
break;
}
}
return true;
}