Вниз
Скачать: CL | DM;

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 вся ветка

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



Память: 0.45 MB
Время: 0.031 c
8-1116945542
Agent[007]
2005-05-24 18:39
2005.10.16
OpenGl и WinXP


14-1127506275
Goga
2005-09-24 00:11
2005.10.16
Макрос


1-1127714799
MegaVolt
2005-09-26 10:06
2005.10.16
Как протестировать в Dunit событие?


1-1127480923
Hkr
2005-09-23 17:08
2005.10.16
RSA - Шифрование


2-1126641667
keal
2005-09-14 00:01
2005.10.16
Как сделать сервер по типу icq?




   Наверх