Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: 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 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.026 c
14-1127322990
Сергей_Т
2005-09-21 21:16
2005.10.16
Процедура выезда в Европу по приглашению


2-1126804100
NikNet
2005-09-15 21:08
2005.10.16
Узнать что WindowsXX загружается и выгружается и время работы


11-1108223021
mordush
2005-02-12 18:43
2005.10.16
KOL,KOL и ещё раз KOL


2-1127253384
Цукор 5
2005-09-21 01:56
2005.10.16
Exit


3-1125568545
AndrewK
2005-09-01 13:55
2005.10.16
Стандарты оформления