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

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

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


person ken    schedule 10.02.2010    source источник


Ответы (1)


Есть несколько способов сделать это. Вероятно, наиболее практичными вариантами являются:

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

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

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

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

person mikera    schedule 10.02.2010
comment
Буфер трафарета будет самым быстрым. Если нет, то пересечения лучей будет достаточно. - person ; 15.02.2010