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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перетаскивание точек в OpenGL, Передвигать точки (объекты) как в 3D Max 
:(
    Опции темы
DigitSphinx
  Дата 7.4.2008, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 3



Есть программа (писал я) отображения некоторых объектов, их координаты загружаются из файлов, нужно добавить такую функциональность, чтобы можно было схватить объект и перетащить его в другое место.
Даже не знаю откуда копать, заранее благодарен за любую инфу.



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
FIaR
Дата 7.4.2008, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Было бы очень интересно узнать, а каков сам алгоритм отрисовки вертексов? Используется ли например GLUT?  А может быть, что вертексы загружаются в массив и отрисовываются в цикле? smile 
--------------------
Шуруп забитый молотком, держится лучше, чем гвоздь закрученый отверткой.  
PM MAIL   Вверх
baldina
Дата 8.4.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

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



DigitSphinx, 
Для выбора объекта, куда ткнул мышкой пользователь, используешь glSelect. Это особо удобно тем, что будешь получать список всех ообъектов под этой точкой в порядке удаления.
Далее переходишь в "динамический" режим, т.е. пока пользователь держит кнопку мыши, на каждом кадре перерисовываешь объект в позиции курсора.
Ну и фиксируешь объект (его координаты).
Удобно снабдить каждый объект своей матрицей трансформации, тогда результат перетаскивания - просто измененая матрица, которая применяется перед выводом объекта.
Как именно ты рисуешь объекты не суть важно, главное что бы рисование одного объекта было отделено от другого.
PM MAIL   Вверх
DigitSphinx
Дата 8.4.2008, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 3



Спасибо, буду пробовать.


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Rickert
Дата 9.4.2008, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



DigitSphinx, есть и другие способы, этот хорош, если пользуешься списками отображений ogl

Это сообщение отредактировал(а) Rickert - 9.4.2008, 03:34


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


Опытный
**


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

Репутация: -1
Всего: 5





--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
vinter
Дата 20.4.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Всем привет, у меня тоже встала проблема с перетаскиванием объекта вот код
процедура рисования
Код

glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
      glTranslatef(GlobalParams::Instance()->ptLamp.X, GlobalParams::Instance()->ptLamp.Y
          , GlobalParams::Instance()->ptLamp.Z); // правый верхний угол с Z=-10
      GlobalParams::Instance()->Lamp.Draw();
      glGetDoublev(GL_PROJECTION_MATRIX, GlobalParams::Instance()->afProj);
              glGetDoublev(GL_MODELVIEW_MATRIX, GlobalParams::Instance()->afModel);
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();


обработчик перемещения мыши
Код

int anViewport[4];
double X = 0;
double Y = 0;
double Z = 0;
       
glGetIntegerv(GL_VIEWPORT, anViewport);
        
point.y = anViewport[3] - point.y - 1;
glReadPixels(point.x, point.y, 1, 1, GL_DEPTH_COMPONENT, GL_DOUBLE, &Z);
gluUnProject(point.x,  point.y, 10, GlobalParams::Instance()->afModel,
GlobalParams::Instance()->afProj, anViewport, &X, &Y, &Z);
    
GlobalParams::Instance()->ptLamp.X  = X;
GlobalParams::Instance()->ptLamp.Y = Y;
GlobalParams::Instance()->ptLamp.Z = Z;

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


--------------------
Мой блог
PM MAIL WWW   Вверх
vinter
Дата 21.4.2008, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



проблема решена, неправильно определялась Z координата.
решение
Код

//Тут координты в GL части
double X = GlobalParams::Instance()->ptLamp.X;
double Y = GlobalParams::Instance()->ptLamp.Y;
double Z = GlobalParams::Instance()->ptLamp.Z;
//.....
gluProject(X,  Y, Z, GlobalParams::Instance()->afModel,
            GlobalParams::Instance()->afProj, anViewport, &X, &Y, &Z);
gluUnProject(point.x,  point.y, Z, GlobalParams::Instance()->afModel,
            GlobalParams::Instance()->afProj, anViewport, &X, &Y, &Z);


Это сообщение отредактировал(а) vinter - 21.4.2008, 19:27


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

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

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


 




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


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

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