|
0 / 0 / 0
Регистрация: 07.11.2014
Сообщений: 18
|
|
Поиск местонахождения объектов в opengl. Qt07.11.2014, 18:55. Показов 7979. Ответов 58
Метки нет (Все метки)
Доброго времени суток!
Делаю программу в Кьюте, которая строит множество объектов на экране с помощью OpenGL. Эти объекты я одновременно могу масштабировать, изменяя размеры окна с помощью glOrtho(), поворачивать с помощью функции glRotate*(). Проблема заключается в том, что мне нужно при наведении курсора выяснить, на какой объект он был наведён. Не могу понять, как это реализовать. Нужно, чтобы определялась хотя бы координата этого объекта, по которой он строился. Дальше, естественно, легко определить будет, что за объект. То есть нужно, чтобы я навёл курсор, и волшебство мне выдало координаты объекта в x, y, z. Есть у кого какие соображения?
0
|
|
| 07.11.2014, 18:55 | |
|
Ответы с готовыми решениями:
58
Удаление объектов в OpenGL |
|
1 / 1 / 0
Регистрация: 10.06.2022
Сообщений: 7
|
||
| 07.04.2024, 13:36 | ||
|
Именно так. Это тот же метод, но без использования сторонних библиотек. Только Qt+OpenGL. Я именно так и написал)
0
|
||
| 09.04.2024, 15:54 | |||
|
0
|
|||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 09.04.2024, 16:11 | ||
|
Зачем это нужно, другой вопрос. Может зачем-то и нужно.
1
|
||
| 09.04.2024, 16:22 | ||
|
0
|
||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 09.04.2024, 16:33 | ||
m_viewMatrix * m_modelMatrix заменить просто на m_viewMatrix в unproject.Не по теме: А вообще, напомню, перевод координат из пространства объекта в мировое пространство осуществляет матрица модели :)
1
|
||
| 09.04.2024, 19:10 | ||||
|
Не по теме:
Вернемся к выбору. Из клика мыша можно извлечь луч/направление (в координатах камеры или мировых, как нравится). Не нужно получать Z с помощью glReadPixels, это никак не поможет узнать "какой объект". Какое Z брать зависит от используемой ф-ции unproject, напр для glUnproject Z = 0 передняя стенка, Z = 1 задняя. После нормирования направление одинаково. Что дальше делать с лучом - проблема. Разумно сначала провериться на bounding box каждого объекта, это работает достаточно быстро. Из всех "пересеченных" объектов выбираем с минимальным Z до камеры, такой упрощенный выбор объекта не так уж плох. Если не устраивает - нужно проверять полигоны объекта на пересечение с лучом. Да, для объектов с миллионами фейсов это может оказаться медленным на CPU при отсутствии спец структур типа BVH. Это то же самое что делают движки физики при выбросе лучей. Другой способ - просто прочитать цвет в (кликнутой) точке экрана и сопоставить его с цветом присвоенным каждому примитиву. Для этого не нужны никакие матрицы и unproject'ы. Это привлекает своей простотой, но возможности ограничены, все-таки картинка - не 3D сцена. Но для студентов - все хорошо
0
|
||||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
|
| 09.04.2024, 19:30 | |
|
0
|
|
| 09.04.2024, 19:48 | ||
|
0
|
||
| 09.04.2024, 20:49 | |||
Лучше "рисую куб с центром там-то". Кстати центры/pivot'ы могут быть разные для scale/rotate/translate. Заметим что смена центра не меняет позиций вертексов, она влияет на (еще одну) матрицу которая собсно и называется "модельной", в OpenGL она (для простоты) опускается. . Пример: нужно выбрать линию/отрезок. Ваши действия?
0
|
|||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||
| 09.04.2024, 21:19 | ||
|
По барицентрическим координатам можно понять, ребро это, вершина или ни то ни другое.
0
|
||
| 09.04.2024, 21:47 | ||
|
0
|
||
| 09.04.2024, 22:43 | ||||
|
Не по теме: Да, и где вообще брать барицентрические? Я не нашел ничего лучшего чем выкрутиться через геометрический шейдер Не по теме: Общение - двусторонний процесс. Не только Вы учите студентов, но и они учат Вас. И не всегда хорошему :)
0
|
||||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
|||
| 09.04.2024, 22:54 | |||
|
Не по теме:
Добавлено через 1 минуту
0
|
|||
| 09.04.2024, 23:37 | ||||
|
0
|
||||
| 09.04.2024, 23:44 | |||
|
0
|
|||
|
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
|
||||
| 09.04.2024, 23:49 | ||||
uvec3 (три индекса (gl_in[0].id, gl_in[1].id, gl_in[2].id)) без интерполяции и vec3 (барицентрические координаты, (1,0,0) или (0,1,0) или (0,0,1) соответственно) с интерполяцией. id объекта и остальные атрибуты само собой я не упоминаю.
0
|
||||
| 10.04.2024, 00:49 | ||||
![]() Не сомневаюсь что Вы все это (успешно) реализовали. Но.. насколько, так ли уж прост этот путь? Ваня и я не знали и половины что Вы рассказали Это было бы как-то оправдано при "отсутствии альтернативы", но ведь она есть. Вот геометрический шейдер. В нем есть все (или доступ ко всему) что нужно для определения пересечения луча с примитивом (любым). И главное - индекс примитива. Ну и почему бы там (в геометрическом шейдере) и не посчитать "пересекает или нет"? Правда придется наделать серию шейдеров для разных примитивов и/или способов выбора, но каждый из них простой. Остается только передать индексы найденных примитивов на CPU. Там можно по-всякому, но даже для древнего 3.3 есть штатный способ
0
|
||||
| 10.04.2024, 02:53 | |
|
Не по теме: Удалил, чтобы дальше флуд не разводить
0
|
|
| 11.04.2024, 00:45 | |||||||||||
|
Немного переделал свой пример из сообщения #18. Вывожу доску и две шашки - чёрную и белую. При клики по шашкам выводятся соответствующие сообщения - имя и координата шашки:
Я касаюсь белой и чёрной шашек на Android'е и их координаты выводятся в консоль Qt Creator'а: Можно запустить в браузере и открыть консоль браузера (Ctrl+Shift+J на Chrome и Edge): https://661705aed990b65775b938... tlify.app/ Собрано с помощью WebAssembly из Qt Creator'а. Бесплатные модели доски и шашек взять здесь: https://sketchfab.com/3d-model... 451e76491e Сделал текстуру сам с теми же цветам, что и оригинальные материалы. Я создал текстуру 9x9 пикселей в GIMP и загрузил её в Blender, чтобы сделать развертку, например, для клеток доски рамки доски, которая умещается в один пиксель. Подсмотрел, так часто делают. Очень эффективно.
0
|
|||||||||||
| 11.04.2024, 00:45 | |
|
OpenGL поворот объектов файлы 3д объектов существуют в OpenGL? Как в OpenGL обнаруживать столкновения объектов Создание теней для объектов в OpenGL Как сделать движение нескольких объектов. OpenGL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|