Форум: "Игры";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизOpenGL - Perspective feat. gluUnProject Найти похожие ветки
← →
grouzd[E]v © (2005-06-06 17:26) [0]Hi, пипл! У меня очередная проблема:
мне нужно передвигать 3D объекты с помощью мыши (менять нужно
только их X и Y). Делаю так:
Перевожу экранные координаты в пространственные
procedure GetWorldCoordinates(x, y : integer);
var
matrix_viewport : Array [0..3] of integer;
matrix_model, matrix_projection : Array [0..15] of double;
z : single;
begin
glGetIntegerv(GL_VIEWPORT, @matrix_viewport);
glGetDoublev(GL_MODELVIEW_MATRIX, @matrix_model);
glGetDoublev(GL_PROJECTION_MATRIX, @matrix_projection);
y := matrix_viewport[3] - y - 1;
glReadPixels(x, y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, @z);
gluUnProject(x, y, z, @matrix_model, @matrix_projection,
@matrix_viewport, world_x, world_y, world_z);
end;
А в MouseMove:
x := world_y;
y := world_x;
Объект перемещается, но двигается или быстрее или медленнее курсора.
Причем зависит это от Z камеры (у меня gluPerspective + gluLookAt)
Этот пример из книги Краснова, но у него там тоже вроде все коряво двигается.
ЗЫ Кстати, а когда result"ы насчет конкурса появятся?
← →
Zer0 © (2005-06-06 20:01) [1]я блин тоже замучился с этой pick matrix transformation
по идее все просто - нужно получить обратную матрицу (projection)^-1, но она получается какая-то кривая.
в итоге луч из камеры летит хз куда но только не туда, куда надо
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.041 c