Плиточный объект OpenGL ES (куб?), С кликабельными плитками - PullRequest
1 голос
/ 09 августа 2010

Я начинаю изучать opengl и собираюсь сделать 3d шахматы, но я не могу понять, как я могу узнать, где я щелкнул в «таблице», чтобы создать правильную анимацию, какой-нибудь совет?

Ответы [ 2 ]

0 голосов
/ 09 августа 2010

Вальдесир, поищите функцию raypick. Это имя для отправки луча из центра камеры сцены через пиксель, на который вы щелкнули (на самом деле, через переведенное положение этого пикселя на плоскости камеры, представляющей «стеклянную поверхность экрана» в трехмерном мире) и возвращение переднего многоугольника Рэй попадает вместе с некоторой информацией. Обычно координаты в пределах осей поверхности многоугольника, например, UV или текстурные координаты. Проверяя координаты, вы можете определить, на каком квадрате щелкнул пользователь.

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

0 голосов
/ 09 августа 2010

Это называется "3D комплектация".Вы должны перевести экранные координаты в мировые координаты.Оттуда сделайте тест пересечения луча / объекта столкновения (ограничивающий прямоугольник?).Если они пересекаются, пользователь нажимает на них.

Вам нужно будет сделать немного больше, чтобы решить проблему с глубиной, например, найти первый пересечение каждого объекта, а затем выбратьодин с наименьшим (положительным) временем.

Если вы воспользуетесь Google для "3D-выбора", вы можете найти то, что ищете.

Вот учебник: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=32

Обратите внимание, что это не характерно для какой-либо формы ограничивающего объекта, будь то ограничивающий прямоугольник, многоугольник, кривая и т. Д. Вам просто нужно выяснить математику для теста пересечения для каждого типа объекта, который вы хотите поддерживать.

Редактировать:

Я не читал этот учебник до того, как связал его, я просто подумал, что NEHE - это место, где все классные ребята изучают OpenGL (правда, десять лет назад)....).

Вот что-то из FAQ по OpenGL о комплектации:

http://www.opengl.org/resources/faq/technical/selection.htm

...