Луч пересечения, Луч что-нибудь актуально, OpenGL-ES? - PullRequest
2 голосов
/ 17 мая 2011

Возможно ли это сделать с OpenGL-ES?

Я пытаюсь сделать довольно простую 3D-игру для Android с использованием OpenGL-ES.Теперь я застрял в той части, где я думаю, что использование луча для получения координат точки на поверхности сферы в зависимости от координат касания 2D, было бы лучшим способом.

Я довольно новичок в 3D-программировании и в целом в openGL, но все учебники, которые я нашел в Интернете о том, как этого добиться, используют методы, которые OpenGL-ES не поддерживает.

Я предполагаю, что использование обратного преобразования моей проекции в перспективе - это то, как оно должно быть, но я теперь догадываюсь, как это получить.с GLU.gluPerspective)

1 Ответ

5 голосов
/ 17 мая 2011

Я недавно сталкивался с этим, а также с частью моей дипломной работы.Я не нашел прямой способ сделать это с OpenGL.То, что я сделал, я взял координаты x и y точки касания.Затем я создал две трехмерные точки, одну с z-значением 1, а другую с z = -1.Это дает вам две разные координаты.И тогда вы просто берете обратную матрицу преобразования, как вы и предполагали.Если вы сами управляете матрицей, это не должно быть слишком сложно.Если вы позволите OpenGL управлять матрицей, вы сможете получить инвертированную матрицу, вызвав gluUnproject (http://www.opengl.org/sdk/docs/man/xhtml/gluUnProject.xml).). Это даст вам две точки в координатах объекта, теперь у вас есть свой луч, и теперь вы можете пересекать этот луч свсе объекты, которые вы хотите. (Вот обширный список алгоритмов пересечения между различными объектами с примерами кода: http://www.realtimerendering.com/intersections.html)

На всякий случай, если вы заинтересованы: В рамках моей дипломной работы я создаюМеханизм 3D-рендеринга, который должен отнять у разработчика большую часть этой работы. Он все еще находится в стадии разработки, но если вам интересно, вы можете посмотреть: https://github.com/Chnoch/Bachelor-Thesis PM мне, если вам нужна дополнительная информация

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