2017-05-03 4 views
0

OpenGL 및 LWJGL을 사용하는 ThinMatrix의 게임 개발 자습서를 따르고 있으며 내 게임에서 충돌 감지를 구현하려고합니다. 나는 웹이 페이지에 언급 한 -Java에서 스윕 및 자르기 구현하기

그러나 나는 어떤 C++ 모르는 코드를 변환 할 수 없습니다. 스윕 (sweep)과 자바 (java)를 사용하여 브로드 위상 충돌 탐지를 구현하려면 어떻게해야합니까?

답변

0

달성하고자하는 것은 그리 쉬운 일이 아니며 여기에 답변하는 것이 너무 많지는 않지만 시작하기위한 몇 가지 기본 단계를 설명하려고합시다.

ThinMatrix의 튜토리얼 시리즈를 기억하는 한, Axis-Aligned Bounding Boxes (AABB 's)를 먼저 구현하고 엔터티 주위로 래핑해야합니다. 1x1x1 큐브 모델을로드하고 이에 따라 변형 행렬을 조정할 수는 있지만 크기를 어떻게 조정합니까?

obj 파일을 구문 분석하는 동안 각 모델의 최소 및 최대 정점 위치 (minX, minY, minZ, maxX, maxY, maxZ)를 기억하십시오.

당신은 다음 1x1x1의 경계 상자 크기를 조정하는, 그래서 당신의 경계 상자의 scaleX, scaleY, scaleZ을 계산하고 그것뿐만 아니라 원래 엔터티의 규모를 존중 있는지 확인해야합니다

:

float scaleX = (maxX - minX) * model.getScale(); 
float scaleY = (maxY - minY) * model.getScale(); 
float scaleZ = (maxZ - minZ) * model.getScale(); 

당신은 다음을 계산해야 할 것 transformationMatrix를 사용하여 스케일 값을 큐브에 적용합니다. ThinMatrix는 세 가지 새로운 매개 변수로 확장해야하는 Maths.createTransformationMatrix(...) 메서드를 구현했습니다.

한 시점에서

또는 다른 당신은이 일에 AABB 비슷한 갖는 끝장 :

:

screenshot

거기에서 내가 같은 기존의 물리 라이브러리를 통합하는 것이 좋습니다 것

후자는 연결된 종이에 Java로 기술 된 알고리즘을 구현했습니다 : SweepAndPruneAlgorithm.java.