그래서 벡터와 gluLookAt를 사용하여 자유 비행 카메라를 거의 구현했습니다.
모든 4 방향으로의 이동과 Y 축 주위의 회전이 정상적으로 작동합니다.자유 비행 카메라 - X 축을 중심으로 한 이상한 회전
는 Y 축 주위 회전 I는 눈 중심 벡터 사이의 벡터를 계산하고, 다음과 같이 회전 행렬과 회전 :
Vector temp = vecmath.vector(center.x() - eye.x(),
center.y() - eye.y(), center.z() - eye.z());
float vecX = (temp.x()*(float) Math.cos(-turnSpeed)) + (temp.z()* (float)Math.sin(-turnSpeed));
float vecY = temp.y();
float vecZ = (temp.x()*(float) -Math.sin(-turnSpeed))+ (temp.z()*(float)Math.cos(-turnSpeed));
center = vecmath.vector(vecX, vecY, vecZ);
I 막에 중심을 설정 끝에 새로 계산 된 벡터.
축에 대해 동일한 작업을 수행하려고하면 벡터가 회전하지만 매우 이상한 방식으로 물결 모양의 선으로 움직입니다.
Vector temp = vecmath.vector(center.x() - eye.x(),
center.y() - eye.y(), center.z() - eye.z());
float vecX = temp.x();
float vecY = (temp.y()*(float) Math.cos(turnSpeed)) + (temp.z()* (float)-Math.sin(turnSpeed));
float vecZ = (temp.y()*(float) Math.sin(turnSpeed)) + (temp.z()*(float)Math.cos(turnSpeed));
center = vecmath.vector(vecX, vecY, vecZ);
을 왜이 작동하지 않습니다
난 그냥 X의 회전 행렬로, 이전 회전과 같은 논리를 사용? 어쩌면 내가 다른 곳에서 뭔가 잘못한 것일까 요?
대부분의 1 인칭 게임 에서처럼 카메라 이동 작업을하려고합니까? 즉 상향 벡터는 항상 월드 공간에서 '상향'을 가리 킵니까? – bofjas
@bofjas FPS 카메라처럼 좋지만 더 많이, 너무 날아 가야합니다. 오 ... 카메라가 약간 위쪽을 가리키면 이미 벡터가 왜곡됩니까? 맞아 .... 더 이상 위쪽으로 가리키고 있지 않아, 그래서 나는 그 위 벡터도 계산해야만 해? –