Russian Qt Forum
Ноябрь 23, 2024, 00:52
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
2D и 3D графика
>
Выбор OpenGl
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Выбор OpenGl (Прочитано 15041 раз)
deMax
Хакер
Offline
Сообщений: 600
Выбор OpenGl
«
:
Август 06, 2014, 07:55 »
Нужен свой движок для моделирования: физика отсутствует(никаких столкновений, деформаций и обратной связи с пользователем, пользователь только наблюдает), нужно нарисовать 3D модели в пространстве по красивее: с учетом освещенности, с тенью, карты высоты/блеска/глянца.
Что выбрать, пишут что opengl 2.0 (glDrawELements, pushMatrix...) устарел и все надо реализовывать на шейдерах.
Брать подход QGlWidget или то что сделанно в Qt 5?
В программе будет интерфейс и для этого Qt очень удобен своими компоновщиками, но часть openGl хотелось бы реализовать максимально независимо от Qt.
Записан
alex312
Хакер
Offline
Сообщений: 606
Re: Выбор OpenGl
«
Ответ #1 :
Август 06, 2014, 08:08 »
Вот вам список на подумать :
http://www.openscenegraph.org/
http://www.ogre3d.org/
https://qt.gitorious.org/qt-labs/qt3d/
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Выбор OpenGl
«
Ответ #2 :
Август 06, 2014, 08:54 »
Спасибо, но я уже просматривал все эти движки - не подходят: тормознуто, некрасиво, нет слоев. На glDrawElement и pushMatrix я сделал пример в который осталось вставить шейдеры для объемных и красивых поверхностей, просто пишут(
http://www.esate.ru/blog/novye_uroki_opengl/382.html
) что на шейдерах все это будет быстрее.
p.s. Какие технологии на данный момент актуальны, вопрос производительности не на последнем месте.
«
Последнее редактирование: Август 06, 2014, 09:25 от deMax
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Выбор OpenGl
«
Ответ #3 :
Август 06, 2014, 11:32 »
Вопрос совместимости никогда и нигде не был на последнем месте, а с OpenGL тем более. Поэтому я пере-собрал Qt5 с opengl desltop и спокойно использую старый код. Объявление многого "устаревшим" расцениваю как маркетинговую уловку.
Что касается GLSL шейдеров, то они и раньше были неизбежны - иначе phong просто не получить. Ну и начните с простого phong'a, а дальше видно будет. Это гораздо практичнее чем очертя голову бросаться в пучину GLSL - только потому что якобы "на шейдерах все быстрее"
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Выбор OpenGl
«
Ответ #4 :
Август 06, 2014, 15:08 »
Где посмотреть примеры или готовые решения, как наиболее просто и красиво отрисовать модель. Задача то по сути типичная.
И каким способом отрисовывать модель? glDrawElements?
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Выбор OpenGl
«
Ответ #5 :
Август 07, 2014, 14:17 »
Я пока сделал рисование через glDrawElements, но glTexCoordPointer вынуждает дублировать вершины у которых текстурные координаты различаются для граней. glNormalPointer тоже для некоторых вершин не совпадает. Как это на шейдерах сделать и какую документацию посоветуете?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Выбор OpenGl
«
Ответ #6 :
Август 07, 2014, 16:24 »
Цитата: deMax от Август 07, 2014, 14:17
Я пока сделал рисование через glDrawElements, но glTexCoordPointer вынуждает дублировать вершины у которых текстурные координаты различаются для граней. glNormalPointer тоже для некоторых вершин не совпадает. Как это на шейдерах сделать и какую документацию посоветуете?
Лет 15 (на моей памяти) все дублировали (чаще использовали данные где это уже сделано) - и не помню чтобы кто-то рвался делать это на шейдерах
Вот старенький пример который (в свое время) использовал я
http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/lighting.php
. Он делает то что Вы называете "красиво" (phong shading)
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Выбор OpenGl
«
Ответ #7 :
Август 08, 2014, 13:14 »
А что с текстурированием делать? У меня есть 3d модель, экспортирую я ее в формат obj (или какой другой посоветуете, в 3ds отсутствуют нормали. К модели нужно крепить метаинформацию поэтому после obj будет бинарный файл). Массив полигонов в котором каждая точка содержит - номер точки, номер текстуры и номер нормали из 3-ех массивов.
Правильно ли дублировать точки для тех полигонов у которых отличаются нормали и текстурные координаты(рисовать glDrawElements) или есть более красивые и производительные решения? Сама модель будет достаточно простой.
т.е. мне нужно решение локальной задачи, отрисовать модель из 3D редактора с учетом текстур. Красивым и не тяжелым(для ПК) способом.
«
Последнее редактирование: Август 08, 2014, 13:22 от deMax
»
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Выбор OpenGl
«
Ответ #8 :
Август 08, 2014, 14:34 »
Цитата: deMax от Август 08, 2014, 13:14
У меня есть 3d модель, экспортирую я ее в формат obj (или какой другой посоветуете, в 3ds отсутствуют нормали. К модели нужно крепить метаинформацию поэтому после obj будет бинарный файл).
Obj нормальный формат, из других есть смысл посмотреть FBX, там очень приличный SDK. Если попроще - можно напр milkshape. Своего формата тоже бояться не следует
Цитата: deMax от Август 08, 2014, 13:14
Массив полигонов в котором каждая точка содержит - номер точки, номер текстуры и номер нормали из 3-ех массивов. Правильно ли дублировать точки для тех полигонов у которых отличаются нормали и текстурные координаты(рисовать glDrawElements) или есть более красивые и производительные решения? Сама модель будет достаточно простой.
Такое дублирование во всяком случае было нормальной практикой на протяжении десятилетий. Разумеется правильно дублировать не все вертексы а лишь отличающиеся нормалями/текстурой, таких обычно немного.
Цитата: deMax от Август 08, 2014, 13:14
А что с текстурированием делать?
То же самое, glTexCoordPointer и.т.д
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Выбор OpenGl
«
Ответ #9 :
Август 11, 2014, 09:54 »
Цитата: Igors от Август 08, 2014, 14:34
Obj нормальный формат, из других есть смысл посмотреть FBX, там очень приличный SDK. Если попроще - можно напр milkshape. Своего формата тоже бояться не следует
А если нужно сохранить модель состоящую из множества елементов с иерархией и взаимным расположением? Например машина - колесо в своей системе координат(для вращения вокруг своей оси), плюс есть смещение относительно машины или амортизаторов. т.е. дополнительный формат для сцены.
Цитировать
Такое дублирование во всяком случае было нормальной практикой на протяжении десятилетий. Разумеется правильно дублировать не все вертексы а лишь отличающиеся нормалями/текстурой, таких обычно немного.
А есть готовые решения? Например может ли так сохранять blender или 3dmax...?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Выбор OpenGl
«
Ответ #10 :
Август 11, 2014, 10:38 »
Цитата: deMax от Август 11, 2014, 09:54
А если нужно сохранить модель состоящую из множества елементов с иерархией и взаимным расположением? Например машина - колесо в своей системе координат(для вращения вокруг своей оси), плюс есть смещение относительно машины или амортизаторов. т.е. дополнительный формат для сцены.
Если нужно больше возможностей - качайте FBX SDK, он себя оправдает.
Цитата: deMax от Август 11, 2014, 09:54
А есть готовые решения?
Если программист не может перевести shared/unshared - грош ему цена, пусть идет учить регулярки и не сует хобот в 3D
Записан
deMax
Хакер
Offline
Сообщений: 600
Re: Выбор OpenGl
«
Ответ #11 :
Август 11, 2014, 11:00 »
Цитата: Igors от Август 11, 2014, 10:38
Если нужно больше возможностей - качайте FBX SDK, он себя оправдает.
Смущает меня FBX - проприетарный недокументированный формат
А какие есть форматы для сохранения сцены, которые самому можно прочитать? Скажем что то типа lws(lightwave scene), кроме иерархии объектов и смещений координат ничего не нужно.
Цитата: Igors от Август 11, 2014, 10:38
Если программист не может перевести shared/unshared - грош ему цена, пусть идет учить регулярки и не сует хобот в 3D
Не хочется писать велосипед, хотя задача простая. А причем здесь регулярные выражения?
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Выбор OpenGl
«
Ответ #12 :
Август 11, 2014, 11:10 »
Цитата: deMax от Август 11, 2014, 11:00
Смущает меня FBX - проприетарный недокументированный формат
А какие есть форматы для сохранения сцены, которые самому можно прочитать?
Придумайте свой формат и напишите экспортер из редактора. Большинство редакторов (если не все) позволяют это делать довольно легко.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Выбор OpenGl
«
Ответ #13 :
Август 11, 2014, 11:12 »
Цитата: deMax от Август 11, 2014, 11:00
Смущает меня FBX - проприетарный недокументированный формат
Пользуйте SDK, это гораздо приятнее чем ковыряться в формате
Цитата: deMax от Август 11, 2014, 11:00
А какие есть форматы для сохранения сцены, которые самому можно прочитать? Скажем что то типа lws(lightwave scene), кроме иерархии объектов и смещений координат ничего не нужно.
Не связывайтесь с этой гадостью только потому что текстовый файл - там парсить грыжу наживете. И он постоянно меняется, а доки приличной нет - одни огрызки.
Записан
navrocky
Гипер активный житель
Offline
Сообщений: 817
Погроммист
Re: Выбор OpenGl
«
Ответ #14 :
Август 11, 2014, 19:31 »
Цитата: deMax от Август 11, 2014, 11:00
Смущает меня FBX - проприетарный недокументированный формат
А какие есть форматы для сохранения сцены, которые самому можно прочитать?
Есть COLLADA
https://ru.wikipedia.org/wiki/COLLADA
.
Записан
Гугль в помощь
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...