Ce projet est une bibliothèque légère et autonome pour l'édition de gadgets que l'on trouve couramment dans de nombreux moteurs de jeux. Il comprend des mécanismes permettant de manipuler la position, la rotation et l'échelle 3D. Implémentée en C++11, la bibliothèque n'effectue pas de rendu directement et fournit à la place un tampon par image de triangles de l'espace mondial.
Un exemple inclus est construit sur GLFW (avec un contexte OpenGL 3.3). Les limitations connues incluent des hypothèses codées en dur sur un système de coordonnées Y vers le haut droitier. Bien que les gadgets soient fournis avec des normales de sommet, l'exemple n'effectue aucun ombrage sophistiqué. De plus, il est connu que la saisie par glissement de la souris avec certains gadgets à des angles d'interaction extrêmes produit une sortie anormale.
Ce projet est né d'une légère frustration avec d'autres bibliothèques de gadgets en mode immédiat. Au lieu de matrices 4x4 et d'angles d'Euler, la bibliothèque expose une rigid_transform
composée d'une position 3D, d'un quaternion de rotation et d'une échelle. La bibliothèque est implémentée dans environ 1 200 lignes de code, qui comprend également une bibliothèque mathématique 3D complète en ~ 400 LoC - linalg.h. Les alternatives incluent ImGuizmo et Im3D. Tinygizmo s'inscrit entre ces projets en étant entièrement autonome (aucune dépendance de Dear ImGui) et en étant fourni dans le domaine public.
snap_
dans la structure gizmo_application_state
.update(...)
et draw()
pour chaque œil)ctrl-t
pour activer le gadget de traductionctrl-r
pour activer le gizmo de rotationctrl-s
pour activer le gadget d'échellectrl-l
pour basculer entre les modes de transformation global et localCe projet n'aurait pas été possible sans des implémentations de référence dans le projet Workbench du domaine public.
Il s'agit d'un logiciel gratuit et sans contrainte publié dans le domaine public. Pour plus d'informations, veuillez consulter http://unlicense.org