【发布时间】:2013-10-17 11:48:26
【问题描述】:
这是家庭作业,但我一直在努力完成我们的作业,但我不明白我做错了什么。这个想法是从三个给定的向量创建一个相机,中心(相机位置)向上(世界向上,这个是(0,1,0))和lookAt(这是世界坐标中要查看的点) .
当我在 x 和 z 轴上移动相机时,一切工作正常,但是当我在 y 轴(上/下)上移动它时,它只是不会一直看着 (0, 0, 0)。
我有以下代码,Vector3f 和 Matrix4f 来自 javax.vecmath.*
private void updateCameraMatrix() {
Vector3f z = new Vector3f();
z.sub(center, lookAt);
z.normalize();
Vector3f x = new Vector3f();
x.cross(z, up);
x.normalize();
Vector3f y = new Vector3f();
y.cross(x, z);
y.normalize();
cameraMatrix.set(new float[] {
x.x, y.x, z.x, 0.0f,
x.y, y.y, z.y, 0.0f,
x.z, y.z, z.z, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f
});
cameraMatrix.mul(new Matrix4f(new float[] {
1.0f, 0.0f, 0.0f, -center.x,
0.0f, 1.0f, 0.0f, -center.y,
0.0f, 0.0f, 1.0f, -center.z,
0.0f, 0.0f, 0.0f, 1.0f
}));
}
提前感谢您的帮助!
【问题讨论】: