Форум: "Игры";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизПересечение 3D объектов и лучей в GLScene Найти похожие ветки
← →
pasha676 (2003-07-17 09:52) [0]Сейчас попробую сформулировать вопрос.
Довольно стардантная функция - кликаем на сцене, показывается где кликнули на трехмерном объекте (как в примере с мухомором например в стандартной поставке ГЛСцене)
Такая фишка встречается часто и часто нужна. Выбор объектов. растановка на карте и т.д.
Мне бы хотелось узнать ее физическую и математическую подоплеку. Иными словами как это делается и по какому принцыпу работает.
В принцыпе я понимаю, что мы даем луч (отрезок) и ентот луч идет до пересечения с объектом. Но как это делается?
Так же хотелось бы, что бы кто-нибудь просветил меня по факту что именно делают функции
1) GLSceneViewer1.Buffer.PixelRayToWorld(x, y);
2) GLSceneViewer1.Buffer.ScreenToVector
3) GLObject.RayCastIntersect(Start, Vector, @iPoint, @iNormal);
Смысл последнего я еще просекаю (поправтье если не прав) находиться точка пересечения(вектор iPoint) и нормаль (вектор iNormal) в точке пересечения 3D объекта (GLObject) и луча (задается векторами положения - start и направления - vector). А вот смыслы первых двух от моего скудного разума ускальзают напрочь :(.
← →
Darthman (2003-07-17 10:26) [1]Никаких лучей Вам не нужно. Нужно использовать буфер выбора Opengl.
← →
pasha676 (2003-07-17 10:37) [2]да просто хотелось бы разобраться. А что есть буфер выбора? И как это работает. Это и есть GLSceneViewer1.Buffer.PixelRayToWorld(x, y);?
← →
Darthman (2003-07-17 11:05) [3]C GLscene не знаком... Как там все сделано не ведаю, однако в OpenGL есть W-buffer, соответственно и в GLScene тоже должен быть, как у наследника.
Буфер выбора позволяет проиндексировать все треугольники сцены и при "тычке" на форме получить индекс треугольника (-ков) оказавшегося под курсором.
← →
pasha676 (2003-07-17 11:31) [4]Пасибо. Буду искать.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c