Работа велась в 2020.
WorldEditor — редактор уровня, предназначенный для размещения, настройки и сохранения объектов мира с возможностью последующего редактирования.
- Создать редактор сцены (WorldEditor) для размещения и настройки объектов
- Предоставить инструменты для удобного редактирования сцены:
- gizmo трансформаций (translate / rotate / scale)
- grid с изменяемым шагом сетки
ImGuizmoIntegration отвечает за интеграцию gizmo трансформаций (translate / rotate / scale) в редактор сцены.
Цель:
- интерактивное редактирование трансформаций объектов
- визуальная обратная связь при изменении положения объектов
- изоляция ImGuizmo от логики сцены и рендера
ContextNavigation3D — система навигации камеры во viewport’е редактора.
Поддерживаемые режимы:
- Zoom (колесо мыши)
- Pan (Ctrl + Middle Mouse)
- Rotate (Ctrl + Left Mouse) (почти как в Blender)
Особенности:
- интеграция с ImGui / ImGuizmo
- навигация блокируется, если в данный момент используется gizmo
- реализована через
eventFilter, без жёсткой привязки к рендеру
В рамках ContextNavigation3D реализован расчет луча из курсора мыши в мировое пространство.
Используется для:
- выбора объектов на сцене (picking)
- взаимодействия с gizmo
- будущей интеграции систем выделения и манипуляции объектами
Pipeline:
- экранные координаты to clip space
- clip spac to view space
- view space to world space
Octree используется как структура пространственного разбиения сцены.
Назначение:
- ускорение ray casting
- оптимизация поиска объектов
- подготовка сцены к масштабированию
Используется для:
- object picking
- C++20
- OpenGL 4.5+
- Assimp
- ImGuizmo
- Qt Creator 15.0.0 Based on Qt 6.8.1 (GCC 14.2.0, x86_64)
Открыть QtWorldEditor.pro в Qt.
- UI Layer
- Toolbar
- Menu
- Дерево объектов
- Редактор свойств объекта (позиция + текстуры + цвет + режим рисования: solid, color, wireframe)
- Serialization/Deserialization


