0
这是作业,但我一直在为我们而努力,我只是不明白我做错了什么。这个想法是从三个给定的向量创建一个摄像头,中心(摄像头位置)向上(世界向上,这个是(0,1,0))和lookAt(它是世界坐标中的点) 。计算一个3d相机矩阵
当我在x和z轴上移动摄像机时,Everythinig工作正常,但是当我在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
}));
}
感谢您的帮助提前!
非常感谢,这工作像一个魅力。我试图从演讲幻灯片中实现公式...... ;-)。 –
不客气! ;) – Vallentin
任何想法matrix.rotate(...)调用的javax.vecmath相当于什么?此外,我假设上面的变量“camera_matrix”实际上应该是“矩阵”。 –