2013-10-30 3 views
2

Open gl과 같은 라이브러리없이 순수한 자바로 3D 게임을 프로그래밍하려고합니다. (모든 수학과 기술을 이해하고 있기 때문에). 그래서 첫 번째 테스트는 잘 작동하고, 큐브를 돌아 다니며 회전 할 수 있으며, 전 세계의 카메라를 나타내는 투영 행렬을 가지고 있습니다. 하지만이 프로젝션이 제대로 작동하지 않습니다.3D 프로젝션 doesnt work

나는 포인트를 움직일 수 있지만, x와 y에 대해서만, 그래서 오른쪽 왼쪽, 맨 아래. 하지만 모든 점의 z 좌표를 변경할 때마다 아무 일도 일어나지 않습니다. 것은 내 관점 투영 isnt 관점입니다. 나는 everzthing을 할 수는 있지만, "멀리"있는 점은 "더 작은"점을 그리지 않습니다 ... 왜? 뭐가 문제 야?

메신저 이미 말했듯이 다음과 같은 프린 시프를 사용합니다. 모든 메쉬에는 선 목록이 있고, 각 선은 점을 가지고, 점은 변수 x, y, z, 1을가집니다. 이 모든 점들을 변환하기 위해서 필요한 변환 행렬 (4x4)과 각 점 행렬 (4x1)을 곱한 다음 각 점 행렬과 함께 투영 행렬을 사용하여 각 점의 새로운 점 행렬 (4x1)을 얻고 다시 그립니다 .

그래서 이미 말했듯이, 투영법 (실제 거리 줌)은 작동하지 않습니다. 왜? 누구 아이디어?

대단히 감사합니다!

편집

알았지을 heres 좀 더 많은 정보와 코드 : 임이 투영 행렬 사용 :

Camera.java

: 여기

projectionmatrix

을하고 좀 더 코드

Graphics3D.java

메인 programm에있어

BlockWorld.java이 문제는 라인 48

Matrix.java

+0

우리는이 질문에 대답하기 위해 더 많은 정보가 필요, 사용중인 특히 투영 행렬이있다. 이상적으로는 객체 공간에서 창 공간으로의 완전한 좌표 변형을위한 코드를 볼 필요가 있습니다.아, 그리고 또 다른 것 : 점에 사용하는 4x1 행렬은 보통 "벡터"라고합니다. – derhass

+0

메신저가 집에있을 때 오케이, 아예 구멍 코드를 게시하십시오. 저는 그것이 벡터라는 것을 압니다. 그러나 그것을 "포인트 매트릭스"로 기억하는 것이 더 쉽습니다. :) –

+0

더 많은 정보와 코드를 추가했습니다. –

답변