Вниз
Скачать: 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.011 c
7-93725
Shaman%20O%20Mega
2003-11-13 14:48
2004.01.29
Загрузка процессора


1-93469
TankMan
2003-12-22 20:02
2004.01.29
Как хранить образ файла в памяти?


3-93371
Slovarik
2003-12-28 09:08
2004.01.29
Написание внешних хранимых процедур MSSQL 2000 на Delphi


1-93470
Andin Gor
2004-01-15 21:08
2004.01.29
text


3-93395
Прямой
2004-01-05 12:22
2004.01.29
ADOQuery ругается




   Наверх