All Projects → ddiakopoulos → Tinygizmo

ddiakopoulos / Tinygizmo

Licence: unlicense
📐 An immediate mode 3D gimzo (translation, rotation, scale for scene editing) in ~1200 LoC

Programming Languages

cpp
1120 projects
cpp11
221 projects

Projects that are alternatives of or similar to Tinygizmo

Qfusion
Source code for cross-platform OpenGL gaming engine
Stars: ✭ 255 (-20.56%)
Mutual labels:  gamedev, opengl, 3d-engine
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+567.29%)
Mutual labels:  gamedev, opengl, 3d-engine
Overload
3D Game engine with editor
Stars: ✭ 335 (+4.36%)
Mutual labels:  gamedev, opengl, 3d-engine
Ava
A tiny unlicensed 3D game engine in C; with C++ and Lua interfaces. Written in 32 random ̷d̷a̷y̷s̷ m̷o̷n̷t̷h̷s̷ years.
Stars: ✭ 287 (-10.59%)
Mutual labels:  gamedev, opengl, public-domain
Exengine
A C99 3D game engine
Stars: ✭ 391 (+21.81%)
Mutual labels:  gamedev, opengl, 3d-engine
Trial
Yet another Common Lisp game engine
Stars: ✭ 181 (-43.61%)
Mutual labels:  gamedev, opengl
Babyloncpp
A port of Babylon.js to C++
Stars: ✭ 183 (-42.99%)
Mutual labels:  gamedev, opengl
Panda3d
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU
Stars: ✭ 3,035 (+845.48%)
Mutual labels:  gamedev, opengl
FWK
💎 3D game framework in C, with Luajit bindings now.
Stars: ✭ 423 (+31.78%)
Mutual labels:  public-domain, 3d-engine
ToolKit
2d - 3d game and interactive application develepment kit
Stars: ✭ 26 (-91.9%)
Mutual labels:  gamedev, 3d-engine
dotrix
A 3D Engine written in Rust
Stars: ✭ 193 (-39.88%)
Mutual labels:  gamedev, 3d-engine
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-43.61%)
Mutual labels:  gamedev, opengl
Magnum Examples
Examples for the Magnum C++11/C++14 graphics engine
Stars: ✭ 180 (-43.93%)
Mutual labels:  gamedev, opengl
Vulkan Renderer
A new 3D game engine using modern C++ and Vulkan API
Stars: ✭ 205 (-36.14%)
Mutual labels:  gamedev, 3d-engine
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-57.01%)
Mutual labels:  gamedev, opengl
Bansheeengine
Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting
Stars: ✭ 2,906 (+805.3%)
Mutual labels:  gamedev, opengl
Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (-13.4%)
Mutual labels:  gamedev, 3d-engine
Ultralight
Next-generation HTML renderer for apps and games
Stars: ✭ 3,585 (+1016.82%)
Mutual labels:  gamedev, opengl
Blue Flame Engine
A 3D/2D game engine that supports both DirectX11 and OpenGL 4.5
Stars: ✭ 129 (-59.81%)
Mutual labels:  gamedev, opengl
Flaxapi
Old repository with C# Editor and C# API for creating games in Flax Engine
Stars: ✭ 131 (-59.19%)
Mutual labels:  gamedev, 3d-engine

tinygizmo

This project is a lightweight, self-contained library for gizmo editing commonly found in many game engines. It includes mechanisms for manipulating 3d position, rotation, and scale. Implemented in C++11, the library does not perform rendering directly and instead provides a per-frame buffer of world-space triangles.

An included example is built on top of GLFW (with an OpenGL 3.3 context). Known limitations include hardcoded assumptions about a right-handed, Y-up coordinate system. While the gizmos are provided with vertex normals, the example does not perform any fancy shading. Furthermore, mouse-drag input with certain gizmos at extreme interaction grazing angles is known to produce anomalous output.

Motivation

This project was born out of mild frustration with other immediate-mode gizmo libraries. Instead of 4x4 matrices and euler angles, the library exposes a rigid_transform consisting of a 3d position, rotation quaternion, and scale. The library is implemented in around 1200 lines of code, which also includes a complete 3d math library in ~400 LoC - linalg.h. Alternatives include ImGuizmo and Im3D. Tinygizmo fits in-between these projects by being fully self-contained (no dependency on Dear ImGui), and by being provided in the public domain.

Features

  • Both axis-aligned global and object-local transform modes for translational and rotational gizmos
  • Optional ability draw the gizmos with a constant screen-space scale
  • Snap-to-unit (both linear and angular)
    • Set any of the snap_ values in the gizmo_application_state struct.
  • VR ready (the user must call update(...) and draw() for each eye)
  • Hotkeys for transitioning between translation, rotation, and scaling:
    • ctrl-t to activate the translation gizmo
    • ctrl-r to activate the rotation gizmo
    • ctrl-s to activate the scale gizmo
    • ctrl-l to toggle between global and local transform modes

Attribution

This project would not have been possible without reference implementations in the public-domain workbench project.

License

This is free and unencumbered software released into the public domain. For more information, please refer to http://unlicense.org

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].