Мышь и координаты

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Мышь и координаты

Сообщение lellel » 04.04.2009 (Сб) 17:11

нужно определить объект на который указывает мышь.
собственно самих объектов пока нет, потому что я не представляю как работают с мышью в 3D и не знаю как лучше организовать объекты..
может быть как то можно определить мировые координаты точки, которая проецируется на экран как раз там где находится указатель мыши?
поискал по форуму но толком ничего не нашел.. была только идея Mikle
взять из Z-буфера в точке клика значение глубины и вычислить 3D координаты

в принципе устраивает, то есть если известно расстояние до точки которая находится на прямой перпендикулярной к плоскости проекции то саму точку несложно найти геометрически. проблема только в том, что я не знаю как считать нужное значение из буфера. а ведь Z-буфер хранит как раз расстояния до объектов?

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Мышь и координаты

Сообщение djalex777 » 05.04.2009 (Вс) 13:23

Искать пересечение луча из позиции камеры с объектами. В DX8 если использовать D3DXMesh, то есть встроенная функция для этого D3DXIntersect по-моему. Или как-то так. Значение из Z-буфера считать невозможно.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Мышь и координаты

Сообщение lellel » 05.04.2009 (Вс) 19:46

гм.. со значением расстояния было бы проще: не нужно все объекты перещитывать..
а вот из меша считать в вертуксный буфер можно, а назад записать?

вот атрибуты функции D3DX8.Intersect из SDK..

MeshIn
D3DXMesh object, representing the mesh to be tested.
RayPos
D3DVECTOR type, specifying the origin coordinate of the ray.
RayDir
D3DVECTOR type, specifying the direction of the ray.
retHit
If the ray intersects a triangular face on the mesh, this value is set to 1. Otherwise, this value is set to 0.
retFaceIndex
Index value of the face closest to the ray origin, if retHit is 1.
retU
Barycentric hit coordinate.
retV
Barycentric hit coordinate.
retDist
Ray intersection parameter distance.

все ясно, только я не понял что такое retU retV retDist..

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Мышь и координаты

Сообщение djalex777 » 05.04.2009 (Вс) 19:48

Это возвращаемые значения u, v - барицентрические координаты пересечения, а dist расстояние до точки пересечения. Кстати в SDK есть пример использования Mouse Pick.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Мышь и координаты

Сообщение lellel » 05.04.2009 (Вс) 20:36

так понимаю барицентрические это координаты точки в базисе образованном сторонами треугольника (двумя сторонами)?


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

    TopList