Добрый день.
Никто не подскажет как лучше сделать. Хочу в приложение на Qt загружать 3D модель, допустим здания,
потом с ним как-то по взаимодействовать — покрутить, повертеть. Это ,вроде, как c Qt 3D можно решить.
Но требуется еще и более сложное взаимодействие — например что-то(куб например) навесить(те нужно выискивать плоскости, размещать на них объект) на стенку, отследить клик по этому кубу итп.
Как это лучше сделать, самому(не знаю насколько это сложно будет) писать все(парсить объект, выискивать плоскости итп) или есть
что-то(желательно free) более менее готовое?
Спасибо.
Здравствуйте, HolyNick, Вы писали:
HN>Добрый день. HN>Никто не подскажет как лучше сделать. Хочу в приложение на Qt загружать 3D модель, допустим здания, HN>потом с ним как-то по взаимодействовать — покрутить, повертеть. Это ,вроде, как c Qt 3D можно решить. HN>Но требуется еще и более сложное взаимодействие — например что-то(куб например) навесить(те нужно выискивать плоскости, размещать на них объект) на стенку, отследить клик по этому кубу итп. HN>Как это лучше сделать, самому(не знаю насколько это сложно будет) писать все(парсить объект, выискивать плоскости итп) или есть HN>что-то(желательно free) более менее готовое? HN>Спасибо.
Далаешь "Ларису Ивановну" http://www.makehumancommunity.org/content/downloads.html
Или берёшь готовую https://sketchfab.com/3d-models/popular Правишь в blender
Потом берёшь Unreal engine или Unity и вперёд
Или копаешь от сюда https://doc.qt.io/qt-5/qt3d-index.htmlhttps://doc.qt.io/qt-5/qt3d-examples.htmlhttps://doc.qt.io/qtdesignstudio/studio-3d.html
Здравствуйте, HolyNick, Вы писали:
HN>что-то(желательно free) более менее готовое?
Можно сделать модель, потом выбрать графический движок и импортировать в нужный формат. С Qt много что совместимо, например, графический движок OpenSceneGraph, геометрическое ядро OpenCascade и многое другое. Это по крайне мере из того, что я запускал лично ещё на Qt4. Вариантов на самом деле множество, если хватит CG, то думаю лучше начать непосредственно с моделирования в Blender. Потом нужно будет подключить виджет Qt к движку, все инструкции обычно есть в их документации с примерами, и далее загрузить модель. Вопрос по сути только в том, какой графический (игровой) движок выбрать, а их много.
Спасибо.
Меня волнует именно взаимодействие с объектом, в плане размещения на нем чего-то(своих объектов, те основная программа должна взять на себя некоторые функции 3D моделирования) итп.
Не могу оценить сложность(может в игровых движках это как-то уже все сделано, не знаю),
а то придется свой SolidWorks писать, а не хотелось бы пока.
Спасибо.
Меня волнует именно взаимодействие с объектом, в плане размещения на нем чего-то(своих объектов) итп.
Не могу оценить сложность(может в игровых движках это как-то уже все сделано, не знаю),
а то придется свой SolidWorks писать, а не хотелось бы пока.
Здравствуйте, HolyNick, Вы писали:
HN>Спасибо. HN>Меня волнует именно взаимодействие с объектом, в плане размещения на нем чего-то(своих объектов, те основная программа должна взять на себя некоторые функции 3D моделирования) итп. HN>Не могу оценить сложность(может в игровых движках это как-то уже все сделано, не знаю), HN>а то придется свой SolidWorks писать, а не хотелось бы пока.
Не надо Qt, если у тебя только 3D в программе. Поверь. Unity — решит твои задачи раз в сто проще и быстрее. Не надо относится к Unity как к примитивной тулзовине для инди-фигни. Очень мощный инструмент для любых 3D задач
В программе не только 3D.
Просто, будет окно с 3D объектом(импортированным из файлика, наверно), на который буду накидывать/прикреплять(из этой же программы) свои объекты.
Хотелось бы какую-нибудь либу, которая бы это накидывание/прикрепление упростило. А не самому(вручную считать какие-нибудь векторные произведения итп) выискивать плоскости на объекте и прочее.
HolyNick:
HN>Хочу в приложение на Qt загружать 3D модель, допустим здания, потом с ним как-то по взаимодействовать — покрутить, повертеть. Это ,вроде, как c Qt 3D можно решить. Но требуется еще и более сложное взаимодействие — например что-то(куб например) навесить(те нужно выискивать плоскости, размещать на них объект) на стенку, отследить клик по этому кубу итп.
Взять готовую САПР, желательно из той предметной области, которая нужна (строительство, механика и пр.).
Если нужна своя функциональность, то САПР брать расширяемую и написать свой модуль, только Qt тут не при чем (как и Лариса Ивановна).
Модератор-националист Kerk преследует оппонентов по политическим мотивам.
BB>Взять готовую САПР, желательно из той предметной области, которая нужна (строительство, механика и пр.). BB>Если нужна своя функциональность, то САПР брать расширяемую и написать свой модуль, только Qt тут не при чем (как и Лариса Ивановна).
САПР как вариант. Вопрос какой и насколько там удобно/гибко прикручивать свою функциональность.
PS: Лариса Ивановна, как символ хотелок разных.
PPS: Qt, тк основной софт на Qt весь, хотя тему, конечно, надо было бы в графику.
Здравствуйте, HolyNick, Вы писали:
HN>Меня волнует именно взаимодействие с объектом, в плане размещения на нем чего-то(своих объектов) итп.
Для этого и нужны движки, они умеют управлять камерой, получать координаты на объектах по виду, можно даже прикрутить физику, но взамен нужно учиться ими пользоваться. А те же здания я делал в Hammer Editor, потом бегал в них используя Garry's Mod. Для начала нужно определиться в чём цель всего этого, то есть это презентация, игра или ещё что. Потому что тот же движок Source компилирует карты из кода. OpenSceneGraph как следует из названия создаёт граф сцены, то есть объекты сцены объединённые неким образом в виде графа. Всегда есть какая-то модель данных с которой будешь работать. Те же здания можно строить разными способами, например, из блоков, из сеток и так далее. Просто выводить 3D вид можно не только с помощью Qt, но, к примеру SDL, GLUT.
Я к тому, что вывести одну модель и создать даже блочный редактор зданий это совсем не одно и тоже. Если пойти в дебри редактирования сеток, то получим Blender. Таким образом при вводных данных из топика вряд ли будет другой ответ кроме как взять готовые графический, физический, игровой движок и прикрутить к Qt, поскольку так стояло изначальное условие. Между прочим Unreal и Unity рекомендованные выше не так чтобы бесплатны, а так движков полно в том числе и действительно бесплатных совместимых с Qt. Причём функция получения координат на объекте по координатам на экране это по сути стандарт. Хотя как говорят в некоторых книгах по программированию до написания программы подумай, можешь ли обойтись без этого используя уже готовое программное решение, то есть отказ от написания кода.
V>Двсего этого, то есть это презентация, игра или ещё что.
Есть измерительная установка/объект измерений на нем установлены разные приборы, например. Хочется
все это видеть в 3d. Те вид самого объекта загрузить из файла, сделанного в стороннем редакторы.
Приборы(например, датчики) уже накидать из основной программы на загруженный объект. Дальше с этими приборами
взаимодействовать — кликнул, открылось окошко с графиком сигнала итп. Что-то такое.
V>>Двсего этого, то есть это презентация, игра или ещё что.
HN>Есть измерительная установка/объект измерений на нем установлены разные приборы, например. Хочется HN>все это видеть в 3d. Те вид самого объекта загрузить из файла, сделанного в стороннем редакторе(blender, например). HN>Приборы(например, датчики) уже накидать из основной программы на загруженный объект. Дальше с этими приборами HN>взаимодействовать — кликнул, открылось окошко с графиком сигнала итп. Что-то такое.
Здравствуйте, HolyNick, Вы писали:
HN>Есть измерительная установка/объект измерений на нем установлены разные приборы, например. Хочется все это видеть в 3d. HN>взаимодействовать — кликнул, открылось окошко с графиком сигнала итп. Что-то такое.
По мне так хватило бы OpenSceneGraph, речь ведь так понимаю о простой сцене с 3D объектами и всё.
Лицензия OpenSceneGraph Public License (основана на LGPL))
Хотя полно других 3D движков, это просто моё личное мнение, то есть можно и их попробовать, ничего страшного не произойдёт. Просто у OpenSceneGraph есть способы интеграции с Qt из коробки и не один, не нужные никакие велосипеды. Если бы нужна была сцена из 2D объектов, то хватило бы и средств самого Qt.
Для 2D графиков раньше была Qwt, сейчас не знаю что используют.
The Qwt library and included programs are provided under the terms
of the GNU LESSER GENERAL PUBLIC LICENSE (LGPL)
3D модели по любому придётся делать в Blender, особенно если нужно бесплатное, но очень мощное решение. Там тем более хорошо обстоит дело с импортом и экспортом моделей, хотя плагины иногда надо докачивать и устанавливать вручную.
Лично я бы начал с создания контекста рисования, то есть прикрутил сцену OpenSceneGraph к виджету Qt, а потом добавил на сцену модели по 3D координатам. Далее уже осваивал более сложные привязки.
Здравствуйте, velkin, Вы писали: V>Для этого и нужны движки, они умеют управлять камерой, получать координаты на объектах по виду, можно даже прикрутить физику, но взамен нужно учиться ими пользоваться. А те же здания я делал в Hammer Editor, потом бегал в них используя Garry's Mod. Для начала нужно определиться в чём цель всего этого, то есть это презентация, игра или ещё что. Потому что тот же движок Source компилирует карты из кода. OpenSceneGraph как следует из названия создаёт граф сцены, то есть объекты сцены объединённые неким образом в виде графа. Всегда есть какая-то модель данных с которой будешь работать. Те же здания можно строить разными способами, например, из блоков, из сеток и так далее. Просто выводить 3D вид можно не только с помощью Qt, но, к примеру SDL, GLUT.
Да и простым webview можно при желании.
Можете на tree.js поэкспериментировать learning tree.js ThreeJS Essentials JavaScript 3D Library Learn to Create Immersive Content with WebGL V>Я к тому, что вывести одну модель и создать даже блочный редактор зданий это совсем не одно и тоже. Если пойти в дебри редактирования сеток, то получим Blender. Таким образом при вводных данных из топика вряд ли будет другой ответ кроме как взять готовые графический, физический, игровой движок и прикрутить к Qt, поскольку так стояло изначальное условие. Между прочим Unreal и Unity рекомендованные выше не так чтобы бесплатны, а так движков полно в том числе и действительно бесплатных совместимых с Qt. Причём функция получения координат на объекте по координатам на экране это по сути стандарт. Хотя как говорят в некоторых книгах по программированию до написания программы подумай, можешь ли обойтись без этого используя уже готовое программное решение, то есть отказ от написания кода.
OpenSceneGraph у меня был/и есть как первый вариант.
Мне просто показалось, что она достаточно низкоуровневая(типа Qt3D) , и привязывать
объекты друг к другу придется "в ручную". Но ,может, ошибаюсь — буду смотреть.
Здравствуйте, HolyNick, Вы писали:
HN>OpenSceneGraph у меня был/и есть как первый вариант. HN>Мне просто показалось, что она достаточно низкоуровневая(типа Qt3D) , и привязывать HN>объекты друг к другу придется "в ручную" (а хочется метод типа house.BindCubeToTheWall(clickPt) ). Но ,может, ошибаюсь — буду смотреть.
Здравствуйте, kov_serg, Вы писали:
_>Хз что вам надо, но лучше посмотрите unity или unreal — хуже не будет.
Я, кстати, не люблю эти игровые движки за проприетарность и за то, что они вместе с собой тянут на компьютер всякий мусор при установке. Думал Unreal со своим добровольно принудительным сканером дисков говно, пока не попробовал установить Unity. Причём всю работу по моделированию всё равно нужно делать в Blender, движки просто тупо выводят модели. Сетки (меши), ключи форм, оснастка (риг) и так далее всё это заслуга 3D редактора, но не игрового движка. Это и к Source относится, просто он меня меньше раздражает в силу того, что я использовал его для развлечений, а Unreal и Unity просто хотел посмотреть.