Этот проект представляет собой легкую автономную библиотеку для редактирования штуковин, обычно встречающуюся во многих игровых движках. Он включает в себя механизмы управления трехмерным положением, вращением и масштабом. Реализованная на C++11, библиотека не выполняет рендеринг напрямую, а вместо этого предоставляет покадровый буфер треугольников мирового пространства.
Включенный пример построен на основе GLFW (с контекстом OpenGL 3.3). Известные ограничения включают жестко запрограммированные предположения о правосторонней системе координат с направлением Y вверх. Хотя штуковины снабжены нормалями вершин, в примере не выполняется никакого причудливого затенения. Более того, известно, что перетаскивание мышью определенных штуковин при экстремальных углах взаимодействия приводит к аномальному результату.
Этот проект родился из-за легкого разочарования в других библиотеках штуковин немедленного режима. Вместо матриц 4x4 и углов Эйлера библиотека предоставляет rigid_transform
состоящее из трехмерной позиции, кватерниона вращения и масштаба. Библиотека реализована примерно в 1200 строках кода, включая полную 3D-математическую библиотеку примерно в 400 LoC — linalg.h. Альтернативы включают ImGuizmo и Im3D. Tinygizmo занимает промежуточное положение между этими проектами, поскольку он полностью автономен (нет зависимости от Dear ImGui) и находится в свободном доступе.
snap_
в структуре gizmo_application_state
.update(...)
и draw()
для каждого глаза)ctrl-t
чтобы активировать инструмент переводаctrl-r
чтобы активировать гизмо вращенияctrl-s
чтобы активировать гизмо масштабированияctrl-l
для переключения между глобальным и локальным режимами преобразования.Этот проект был бы невозможен без эталонных реализаций в общедоступном проекте рабочей среды.
Это бесплатное и ничем не обремененное программное обеспечение, общедоступное. Для получения дополнительной информации посетите http://unlicense.org.