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」實際上應該是「矩陣」。 –