이것이 숙제입니다. 그러나 나는 우리를 위해 노력해 왔으며, 내가 잘못한 것을 얻지는 않습니다. 아이디어는 3 개의 주어진 벡터, 중심 (카메라 위치) 위 (world up, this는 (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"가 실제로 "매트릭스"라고 가정합니다. –