【发布时间】:2011-04-01 00:19:57
【问题描述】:
我有一个用 C# 编写的四元数相机(无耻地取自在线教程)。我正在尝试将相机在世界空间中的位置(表示为 Vector3)沿相机“面向”的方向平移。但是,我希望相机在 Y 轴上保持固定高度(假设相机永远不会“倒置”,因为它可能不会旋转到垂直向上或向下看 Y 轴)。
简单地说,我希望相机的行为方式类似于命令与征服等 RTS 游戏中的相机。向前按应该会使您“向上”移动地图,并保持在地形上方的恒定高度。下面给出的我的幼稚尝试是不够的,因为相机的速度是由相机俯视世界的角度决定的。
var Y = mPosition.Y;
mPosition += mInverseViewMatrix.Backward * amount;
mPosition.Y = Y;
在上面,mPosition 是代表世界位置的 Vector3。 mInverseViewMatrix 是视图矩阵的逆矩阵。
我正在使用 XNA 和 C#,但任何关于四元数和矢量操作的一般建议都可能有用。
【问题讨论】:
标签: 3d xna geometry computational-geometry xna-4.0