Skip to content

AlexPrime2023/QtWorldEditor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

WorldEditor

Работа велась в 2020.

WorldEditor — редактор уровня, предназначенный для размещения, настройки и сохранения объектов мира с возможностью последующего редактирования.

Цели проекта

  • Создать редактор сцены (WorldEditor) для размещения и настройки объектов
  • Предоставить инструменты для удобного редактирования сцены:
    • gizmo трансформаций (translate / rotate / scale)
    • grid с изменяемым шагом сетки

Gizmo: Translate

Translate Gizmo

Gizmo: Rotate

Rotate Gizmo

Gizmo: Scale

Scale Gizmo

Основные системы

ImGuizmo Integration

ImGuizmoIntegration отвечает за интеграцию gizmo трансформаций (translate / rotate / scale) в редактор сцены.

Цель:

  • интерактивное редактирование трансформаций объектов
  • визуальная обратная связь при изменении положения объектов
  • изоляция ImGuizmo от логики сцены и рендера

ContextNavigation3D

ContextNavigation3D — система навигации камеры во viewport’е редактора.

Поддерживаемые режимы:

  • Zoom (колесо мыши)
  • Pan (Ctrl + Middle Mouse)
  • Rotate (Ctrl + Left Mouse) (почти как в Blender)

Особенности:

  • интеграция с ImGui / ImGuizmo
  • навигация блокируется, если в данный момент используется gizmo
  • реализована через eventFilter, без жёсткой привязки к рендеру

Ray Casting (Picking)

В рамках ContextNavigation3D реализован расчет луча из курсора мыши в мировое пространство.

Используется для:

  • выбора объектов на сцене (picking)
  • взаимодействия с gizmo
  • будущей интеграции систем выделения и манипуляции объектами

Pipeline:

  • экранные координаты to clip space
  • clip spac to view space
  • view space to world space

Spatial Partitioning (Octree)

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.

TODO

  • UI Layer
    • Toolbar
    • Menu
    • Дерево объектов
    • Редактор свойств объекта (позиция + текстуры + цвет + режим рисования: solid, color, wireframe)
  • Serialization/Deserialization

About

WorldEditor — редактор уровня, предназначенный для размещения, настройки и сохранения объектов мира с возможностью последующего редактирования.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages