Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
4-93731
Kinder
2003-11-21 23:22
2004.01.29
Апплеты панели управления


1-93446
qwerty2
2004-01-16 13:02
2004.01.29
Как захлопнуть DBLookupComboBox?


1-93490
YuRock
2004-01-15 14:18
2004.01.29
Работа с потоками в Delphi с использованием VCL


7-93715
Ertong
2003-11-09 09:39
2004.01.29
Программирование в двоичных кодах.


11-93411
tamerlan311
2003-05-11 15:36
2004.01.29
BAPDriveBox Version: 1.01 - bugs




   Наверх