Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Операции с матрицами 
:(
    Опции темы
Master01
Дата 22.8.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 22.8.2007

Репутация: нет
Всего: 2



Привет всем.
У меня вопрос по OpenGL.
Есть матрица модели GL_ModelView, к которой уже применена операция 
Translate, значения dx,dy,dz - не известны (имеется ввиду что эта информация может быть взята только из самой матрицы и ни из каких других переменных в программе)

Мне же необходимо сначала выпонить Rotate, а потом уже Translate.
Проблема в том, translate выполниться раньше (так сделана программа и изменять её в той части крайне не желательно). Rotate должен выполниться над единичной матрицей,
а уже после к тому что получилось нужно применить translate dx,dy,dz.

По идее нужно сделать следующее:
1.сохранить где-нибудь матрицу модели
2.Загрузить вместо неё единичную матрицу
3.Выполнить над единич матрицей поворот
4.Умножить текущую мартрицу модели на сохранённую

И собственно вопрос как выполнить эти шаги в OpenGL, главное - как вытащить матрицу ModelView из OpenGL, чтоб сохранить где-нибудь. А можеть проще какой способ есть?

спасибо.


PM MAIL   Вверх
Solomon
Дата 22.8.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 23.1.2006
Где: Украина Киев

Репутация: нет
Всего: 2



Цитата(Master01 @  22.8.2007,  09:27 Найти цитируемый пост)
Мне же необходимо сначала выпонить Rotate, а потом уже Translate.


стой.. стой стой... а что такого ужасного произойдет с программой если ты строчки местами поменяеш??? зачем писать гору кода?


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
Rickert
Дата 23.8.2007, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Код
...
glPushMatrix();
glRotatef(...);
glPopMatrix();
glTranslatef(...);
...



--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Master01
Дата 26.8.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 22.8.2007

Репутация: нет
Всего: 2



Rickert спасибо, но к сожалению твой код работать не будет. Сам посуди, ты сначала сохраняешь матрицу А в стек,
затем использую translate и rotate прелбразуешь её, скажем в B , а потом снова загружаешь старую матрицу А. В итоге -никаких измений.
PM MAIL   Вверх
Master01
Дата 26.8.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 22.8.2007

Репутация: нет
Всего: 2



Спасибо всем за помощь. Я уже разобрался. Вот как это можно сделать, вдруг кому-нибудь  интересно smile

    GLfloat matrix[16];

    glMatrixMode(GL_MODELVIEW);
    glGetFloatv(GL_MODELVIEW_MATRIX, matrix );
    glLoadIdentity();
        
    glRotatef(60,-1.0,0.0,0.0);
    glMultMatrixf((const GLfloat*)matrix);

PM MAIL   Вверх
Rickert
Дата 26.8.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

Репутация: 2
Всего: 52



Ну, на самом деле, тебе там надо после translatef воткнуть вывод своей модели и всё будет пахать.


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.