本文整理汇总了C++中Matrix4::Decompose方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix4::Decompose方法的具体用法?C++ Matrix4::Decompose怎么用?C++ Matrix4::Decompose使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix4
的用法示例。
在下文中一共展示了Matrix4::Decompose方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ComputeObjectComponents
Undo::CommandPtr Transform::ComputeObjectComponents()
{
Undo::CommandPtr command = ResetTransform();
Math::Scale scale;
Math::EulerAngles rotate;
Math::Vector3 translate;
if (GetInheritTransform())
{
// compute the new object space transform from our global transform and our parent's inverse
Matrix4 objectTransform = (m_GlobalTransform * m_Parent->GetTransform()->GetInverseGlobalTransform());
// decompose into the new set of components
objectTransform.Decompose(scale, rotate, translate);
}
else
{
// we are not inheriting our parent's transform, use the global transform for our components
m_GlobalTransform.Decompose(scale, rotate, translate);
}
m_Scale = scale;
m_Rotate = rotate;
m_Translate = translate;
return command;
}
示例2: SetLocalTransform
//----------------------------------------------------------------
/// Set Local Transform
///
/// This will overwrite any local previous transformations
///
/// @param Objects transformation matrix
//----------------------------------------------------------------
void Transform::SetLocalTransform(const Matrix4& inmatTransform)
{
inmatTransform.Decompose(mvPosition, mvScale, mqOrientation);
mmatTransform = inmatTransform;
OnTransformChanged();
mbIsTransformCacheValid = false;
}
示例3: SetWorldTransform
//----------------------------------------------------------------
/// Set World Transform
///
/// This will overwrite any parent or previous transformations
///
/// @param Objects transformation matrix
//----------------------------------------------------------------
void Transform::SetWorldTransform(const Matrix4& inmatTransform)
{
inmatTransform.Decompose(mvWorldPosition, mvWorldScale, mqWorldOrientation);
mmatWorldTransform = inmatTransform;
OnTransformChanged();
mbIsTransformCacheValid = true;
mbIsParentTransformCacheValid = true;
}
示例4: SetObjectTransform
void Transform::SetObjectTransform( const Matrix4& transform )
{
Scale scale;
EulerAngles rotate;
Vector3 translate;
transform.Decompose( scale, rotate, translate );
m_Scale = scale;
m_Rotate = rotate;
m_Translate = translate;
m_ObjectTransform = transform;
}