本文整理汇总了C++中Matrix3x3::LookAt方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix3x3::LookAt方法的具体用法?C++ Matrix3x3::LookAt怎么用?C++ Matrix3x3::LookAt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix3x3
的用法示例。
在下文中一共展示了Matrix3x3::LookAt方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnPositionUpdate
/**
* @brief
* Called on scene node position change or update request
*/
void SNMRotationTarget::OnPositionUpdate()
{
// Get the position of the target scene node
Vector3 vTargetPos;
if (GetTargetPosition(vTargetPos)) {
// Get a quaternion representation of the rotation offset
Quaternion qRotOffset;
EulerAngles::ToQuaternion(static_cast<float>(Offset.Get().x*Math::DegToRad), static_cast<float>(Offset.Get().y*Math::DegToRad), static_cast<float>(Offset.Get().z*Math::DegToRad), qRotOffset);
// Set rotation
Matrix3x3 mRot;
mRot.LookAt(vTargetPos, GetSceneNode().GetTransform().GetPosition(), UpVector.Get());
GetSceneNode().GetTransform().SetRotation(Quaternion(mRot).GetUnitInverted()*qRotOffset);
}
}
示例2: OnUpdate
/**
* @brief
* Called when the scene node modifier needs to be updated
*/
void SNMRotationFixRoll::OnUpdate()
{
// Get the transform of the owner scene node
Transform3 &cTransform = GetSceneNode().GetTransform();
/*
// This will 'flat' the rotation for example for an up-vector of '0 1 0' on the xz-plane
Vector3 vLocalY = cTransform.GetRotation()*UpVector.Get();
Quaternion qQuat = vLocalY.GetRotationTo(UpVector.Get());
cTransform.SetRotation(qQuat*cTransform.GetRotation());
*/
Matrix3x3 mRot;
mRot.LookAt(cTransform.GetPosition(), cTransform.GetPosition() - cTransform.GetRotation().GetZAxis(), UpVector.Get());
Quaternion qQ = mRot;
qQ.UnitInvert();
if (Speed > 0.0f)
qQ.Slerp(cTransform.GetRotation(), qQ, Timing::GetInstance()->GetTimeDifference()*Speed);
cTransform.SetRotation(qQ);
}