2015-12-23 2 views
0

Можно ли проверить столкновение двух объектов с помощью матрицы модели?Java OpenGL: проверка столкновения двух объектов с матрицей модели

У меня это 2 объектов:

Entity player = new Entity(); 
player.setObjectModel(this.loader.loadEntity("res/game/meshes/cube2.obj")); 
Matrix4f mat = new Matrix4f(); 
mat.translate(-2.0f, -11.0f, 0.1f); 
mat.scale(4.0f, 1.0f, 0.1f); 
player.setModelMatrix(mat); 

и

Entity ball = new Entity(); 
ball.setObjectModel(this.loader.loadEntity("res/game/meshes/cube2.obj")); 
Matrix4f mat = new Matrix4f(); 
mat.translate(1.0f, -9.0f, 0.1f); 
mat.scale(1.0f, 1.0f, 0.1f); 
ball.setModelMatrix(mat); 

Так я могу использовать их матричная модель, чтобы проверить столкновение или то, что является лучшим способом?

ответ

0

Модельная матрица - это просто оператор, который описывает преобразование, поэтому вы не можете использовать его для проверки на столкновение вообще. Модельная матрица может преобразовывать сетку +10 по оси Y и масштабировать ее в 100 раз; однако, если сама сетка составляет, например, 0 тома, она ничего не будет масштабировать, и столкновение никогда не произойдет. Это показывает, что важна сама сетка, а модельная матрица - это всего лишь то, что вы применяете к координатам этой сетки, чтобы правильно ориентировать ее в своем мировом пространстве.

Что вы можете сделать, это использовать матрицу модели для преобразования локальных hitboxes/сфер/whatevershape для объектов, которые вы хотите протестировать, и затем вы проверяете, сталкиваются ли эти фигуры.

Как вы тестируете столкновение между двумя фигурами, это материал, который вы можете найти по всему Интернету. Однако, если вы идете с чем-то другим, кроме простых невращающихся ограничивающих прямоугольников или сфер, я бы рекомендовал искать вспомогательную библиотеку физики. Bullet Physics - очень мощный, который портирован на java как JBullet.

Смежные вопросы