我目前正在尝试解决我的后视/轨道摄像机的问题。我可以在围绕目标旋转相机时引入偏航和俯仰,但是在目标卷的上方或下方飞行之后,便会引入偏航和俯仰。作为更透明和基本的示例:
尽管上面的示例并未直接展示我试图阻止的内容,但可以帮助解释发生的更改。假设我引入了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;
基于以上所述,当我添加偏航和俯仰时,会创建一个世界滚动;我想避免这种情况,根据我的理解,我将不得不进行局部调整和偏航,但是我不确定如何完成此操作,也找不到关于它的任何文档。
如何防止在此过程中发生滚动?