как сделать обнаружение объектов в opengl Android? - PullRequest
4 голосов
/ 30 марта 2011

Я начал работать с OpenGles для Android с 2-х недель, и после попытки 3D-примеров я застрял в обнаружении объектов. По сути, отображение между координатами x, y экрана на x, y, z трехмерного пространства и наоборот.

Я сталкивался:

GLU.gluProject (objX, objY, objZ, модель, modelOffset, проект, projectOffset, представление, viewOffset, win, winOffset);

GLU.gluUnProject (winX, winY, winZ, модель, modelOffset, проект, projectOffset, представление, viewOffset, obj, objOffset);

но я не смог понять, что Как мне их точно использовать ?

Заранее спасибо, если можете уточнить на подходящем примере. :)

1 Ответ

2 голосов
/ 23 января 2012

Ну, если у вас есть готовые матрицы, вы можете сделать это:

float[] modelView = float[16];
float[] projection = float[16];
float[] view = {0, 0, 640, 480}; // viewport
float x = mouseX, y = mouseY, z = -1; 
// those are the inputs

float[] pos = new float[4]; 

GLU.gluUnProject(x, y, z, 
                modelView, 0, 
                projection, 0, 
                world.view().get_size(), 0, 
                pos, 0);

System.out.println("position of mouse in 3D is (" + pos[0] + ", " + pos[1] + ", " + pos[2] + ")");

Если вы хотите выбрать объекты, вы вызываете gluUnProject () дважды, один раз с z = -1 и один раз с z = 1. Это дает вам позиции мыши в ближней и дальней плоскостях. Вычтите их, чтобы получить направление обзора, используйте первое как источник, и у вас есть хорошая задача трассировки лучей (выбор объекта).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...