crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Виджет похожий на Compiz.
igor_bogomolov
  опции профиля:
сообщение 21.3.2010, 3:57
Сообщение #1


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Задумал я сделать виджет (или layout) в виде вращающегося кубика, каждая грань которого - это тоже виджет. Т.е. что то вроде Compiz, только чтобы его можно было разместить в приложении. Начал с начала с OpenGL, т.к. compiz его и использует. Но дальше отрисовки самого кубика дело не дошло т.к. не имею ни малейшего представления как разместить на его грани виджет.
Затем попытался реализовать это на графической сцене + анимация, вроде весь необходимый функционал для этого есть. Все получалось, пока не добрался до такой проблемы: метод
Цитата
QGraphicsRotation::setOrigin ( const QVector3D & point )
который устанавливает точку вращения в 3D-пространстве игнорирует Z координату.

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

P.S. Простенький пример, который поворачивает QTextEdit на сцене в 3D, в приложении. Там сразу видна проблема с setOrigin.
Прикрепленные файлы
Прикрепленный файл  test.tar ( 20 килобайт ) Кол-во скачиваний: 159
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 23.3.2010, 10:33
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


может баг?
хотя в баг листе ничего не нашел даже по QGraphicsRotation
может новый баг?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 23.3.2010, 11:17
Сообщение #3


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(kwisp @ 23.3.2010, 10:33) *
может баг?
Черт его знает. А ты код не смотрел, может я просто что-то делаю неправильно?

На самом деле я сейчас вернулся к варианту отрисовки через OpenGL. Создаю сцену и в качестве viewport устанавливаю QGLWidget. Сам куб - это переопределенный QGraphicsItem с перекрытым методом paint. Отрисовка в paint так же происходит средствами OpenGL. Т.о. удалось хотя бы добиться красивого отображения, да и вращением легко управлять. Осталось разобраться как контекст рисования виджетов перенаправить на поверхность этого куба. Пока идей нет :( На данный момент использую grubWidget и устанавливаю полученное изображение в качестве текстуры для кубика. Но такой вариант меня не устраивает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 23.3.2010, 11:41
Сообщение #4


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Где-то на сайте троллей проскакивал ролик в котором показывалось как выставить виджет на ГЛ поверхность.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 23.3.2010, 22:06
Сообщение #5


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(molchanoviv @ 23.3.2010, 11:41) *
Где-то на сайте троллей проскакивал ролик в котором показывалось как выставить виджет на ГЛ поверхность.
Случаем не это имел в виду (тык).
Где исходнички этого можно взять, никто не знает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.3.2010, 23:15
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(igor_bogomolov @ 24.3.2010, 1:06) *
Где исходнички этого можно взять, никто не знает?
WolfenQt надо смотреть в лаборатории (блоге и гиториусе)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 24.3.2010, 18:46
Сообщение #7


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(kwisp @ 23.3.2010, 10:33) *
может баг?
хотя в баг листе ничего не нашел даже по QGraphicsRotation
может новый баг?
Ответ:
The GraphicsView is not a 3D model. So the z-value is just there to know what layer/item is on top of which one.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 24.3.2010, 23:50
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Грубо говоря вместо координаты Z можно использовать scale?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 24.3.2010, 23:59
Сообщение #9


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(SABROG @ 24.3.2010, 23:50) *
Грубо говоря вместо координаты Z можно использовать scale?
Как то у меня пока пространственного воображения для этого не хватает. Надо будет поэкспериментировать.

Мне вот что интересно: багу мою отклонили, но ведь в документации написано
Цитата
origin : QVector3D
This property holds the origin of the rotation in 3D space.
Вводит в заблуждение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 8:19