Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.29;
Скачать: CL | DM;

Вниз

Пересечение 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
7-93721
Евген
2003-11-07 14:23
2004.01.29
Кто работал с мини-АТС КХ-ТА308


1-93503
radiosoft
2004-01-19 06:45
2004.01.29
Корреляционный анализ двух матриц


11-93412
solo1
2003-05-12 06:27
2004.01.29
Как сделать прокси? И вообще, где взять доку по Интернет-прогам


1-93438
Жук
2004-01-19 11:41
2004.01.29
Internal error: BC1930


3-93367
Danilas
2004-01-02 16:32
2004.01.29
Как создать генератор в InterBase