调整偏航角和俯仰角时是否防止侧倾?

时间:2018-12-26 18:38:38

标签: c# rotation directx-11 sharpdx

我目前正在尝试解决我的后视/轨道摄像机的问题。我可以在围绕目标旋转相机时引入偏航和俯仰,但是在目标卷的上方或下方飞行之后,便会引入偏航和俯仰。作为更透明和基本的示例:

Yaw + Pitch + Yaw = Roll

尽管上面的示例并未直接展示我试图阻止的内容,但可以帮助解释发生的更改。假设我引入了15度的偏航和165度的俯仰,然后好像我不应该引入侧滚,因为我只在from django.db.models.signals import post_save from django.dispatch import receiver @receiver(post_save, sender=Member) def create_tithe(sender, instance=None, created=False**kwargs): if created: Tithe.objects.create(member=instanse) X上旋转。

我当前用于计算新相机位置的代码是:

Y

该位置随后用于通过以下方式计算视图矩阵:

Vector3 lookAt = Position - Target;
Vector3 right = Vector3.Cross(lookAt, Up);
Up = Vector3.Normalize(Vector3.Cross(right, lookAt);
right.Normalize();

// This line may be where the restriction needs to occur.
Vector3 newPos = Vector3.Normalize(Position + right * yaw * lookAt.Length() +
                                   Up * pitch * lookAt.Length()) * Position.Length();

float magnitude = Up.Length() * newPos.Length();
float dot = Vector3.Dot(Up, newPos) / magnitude;
if (Math.Abs(dot) < 0.98)
    Position = newPos;

基于以上所述,当我添加偏航和俯仰时,会创建一个世界滚动;我想避免这种情况,根据我的理解,我将不得不进行局部调整和偏航,但是我不确定如何完成此操作,也找不到关于它的任何文档。


如何防止在此过程中发生滚动?

0 个答案:

没有答案