Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Преобразование из Экранных координат


Автор: TommyAlice 26.3.2007, 14:31
Здравствуйте

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

Автор: Moid 27.3.2007, 11:35
Возьми любой учебник по OpenGL там описыны процедуры сдвигов и поворотов матрицы...
вот хотябы тот, что предлагают на форуме:http://msdn.microsoft.com/library/default.asp%3Furl%3D/library/en-us/dnanchor/html/opengl.asp
А если вы немного подумаете, то и как преобразовать координыты мыши на форме в 3D тоже догадаетесь... Хотя там не совсем 3d получится, 3-ю координатную ось уже нужно будет при определенных условиях определять... К примеру как это сделано в 3ds Max.

Автор: Rickert 6.4.2007, 14:08
Глупости всё, не слушай.
Вот код:
Код

...
double projection[16], modelview[16], wx, wy, wz, vz;
int viewport[4];

glGetIntegerv(GL_VIEWPORT, viewport);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);

glReadPixels(point.x, point.y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &vz);
gluUnProject(point.x, point.y - 1, vz, modelview, projection, viewport, &wx, &wy, &wz);
...

point - координаты курсора на экране.
wx, wy, wz - в 3D пространстве.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)