3D тест пересечения - PullRequest
       20

3D тест пересечения

1 голос
/ 10 февраля 2010

У меня загружена эта 3D-модель. Затем на том же экране у меня нарисовано много точек. Как я могу определить, находятся ли точки на модели или нет. Возьмите только плоскость XY для рассмотрения.

Любой может научить меня, как проводить 3D-тест пересечения только на плоскости XY, потому что я действительно невежественен.

1 Ответ

2 голосов
/ 10 февраля 2010

Есть несколько способов сделать это. Наиболее практичные варианты:

a) Используйте буфер трафарета, который вы записываете при рендеринге вашей модели, и glReadPixels (...), чтобы увидеть, установлен ли буфер трафарета для конкретной (x, y) точки на экране.

b) Преобразовать точку (x, y) в линию в трехмерном пространстве из положения камеры. Затем проведите тест пересечения линии с вашей моделью (простой, но медленный способ - это тестирование каждого полигона, вы можете получить более быстрые результаты, используя ограничивающие объемы и т. Д.)

в) Используйте glReadPixels (...), чтобы прочитать цвет точки (x, y) на экране. Очевидно, это будет работать только в том случае, если вы сможете точно определить, какие цвета являются частью модели или нет.

Если вы можете установить и использовать трафаретный буфер для этой цели, то a), вероятно, проще всего реализовать. В противном случае б), вероятно, является наиболее полезным общим решением.

...