Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
3-1125899780
Комар
2005-09-05 09:56
2005.10.16
Как можно отправлять на сервер только измененные данные


9-1118216589
Novouralsk
2005-06-08 11:43
2005.10.16
Плагин для 3ds Max!


14-1127390200
han_malign
2005-09-22 15:56
2005.10.16
MS VC++ - загадка


3-1125928803
dragoon
2005-09-05 18:00
2005.10.16
Получение записи в DBGrid; динам. обновление ComboBox


2-1126967706
ceval
2005-09-17 18:35
2005.10.16
Как лутче сделать ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский