【发布时间】:2011-07-13 13:40:29
【问题描述】:
我正在使用 libgdx 为 android 开发一个基本的 3d 游戏,并且在给定从指南针提供的三个旋转角度(方位角 - 围绕 Z 的旋转,滚动 - 围绕 Y 的旋转,俯仰 - 旋转)的情况下,我很难正确定位相机关于 X)。我在下面的代码中取得了一些小小的成功,因为我可以按照我的预期正确地将虚拟相机对准 Z 轴和 X 轴。 (角度以度为单位 [-180,180])
camera.direction.x = 0;
camera.direction.y = 0;
camera.direction.z = 1;
camera.up.x = -1;
camera.up.y = 0;
camera.up.z = 0;
camera.rotate(azimuth,0,0,1);
camera.rotate(roll,0,1,0);
camera.rotate(pitch,1,0,0);
我在这方面也取得了一些成功,但它并没有定位相机的向上矢量。 (此版本中角度已转换为弧度)
float x,y,z;
roll = (float) (roll + Math.PI/2.0);
x = (float) (Math.cos(azimuth) * Math.cos(roll));
y = (float) (Math.sin(azimuth) * Math.cos(roll));
z = (float) (Math.sin(roll));
Vector3 lookat = new Vector3(x,y,z);
camera.lookAt(lookat.x, lookat.y, lookat.z);
有人能解释一下如何从这三个角度正确定位虚拟相机吗?
另外,我正在尝试让手机处于横向模式,这样手机的顶部在左侧,底部在右侧。因此,相机的默认方向(所有旋转都在 0,手机顶部指向北方)是相机朝向地面(正 Z),向上朝向东方(负 X)。
【问题讨论】:
-
你能把这个的源代码贴出来或者更好地解释一下答案吗?
标签: android opengl-es 3d libgdx