当前位置:  开发笔记 > 编程语言 > 正文

使相机移动和旋转的最佳方法

如何解决《使相机移动和旋转的最佳方法》经验,为你挑选了1个好方法。

我正在学习一些OpenGL游戏编程,我陷入了如何实现,所以摄像机遵循鼠标指针.就像在fps游戏中你想要看你的鼠标所指向的那样,但是当我移动的时候我找不到一个很好的解决方案.我正在考虑为移动保存一个矩阵,比如踩踏和扫射,同时使用四元数来处理旋转.然后将四元数转换为旋转矩阵,加载模型视图矩阵的标识,并使用两个矩阵计算此矩阵.

这有一些问题,比如我们首先应该在乘法中使用哪个矩阵,并且代码将是丑陋的.

所以我想知道是否有人有一个很好的解决方案来解决这个问题,所以我不必首先找出使用哪个矩阵,哪个代码更清晰.



1> stusmith..:

将相机的视图细节存储为位置矢量,视图矢量和向上矢量(想象用拇指伸出指向:手指是视图矢量,拇指是向上矢量).保持这些矢量标准化,彼此成90度.您应该能够看到这三个矢量足以表示任何摄像机位置和方向.

您可以使用这些向量将世界坐标转换为相机坐标:

按位置翻译;

通过 - (向上矢量和y轴之间的角度)旋转(向上矢量'交叉'y轴);

通过向上旋转向上矢量 - (视图矢量和z轴之间的角度).

(我可能有一些错误的方式在那里).

您可以在用户移动鼠标时转换这些向量:

当鼠标向侧面移动时,围绕向上矢量旋转视图矢量(或者如果您愿意,可以围绕y轴旋转视图矢量和向上矢量).

当鼠标向后/向前移动时,旋转视图矢量和向上矢量(视图矢量'交叉'向上矢量).

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有