Este projeto é uma biblioteca leve e independente para edição de gizmo comumente encontrada em muitos motores de jogo. Inclui mecanismos para manipular a posição, rotação e escala 3D. Implementada em C++ 11, a biblioteca não executa a renderização diretamente e, em vez disso, fornece um buffer por quadro de triângulos do espaço mundial.
Um exemplo incluído é construído sobre GLFW (com um contexto OpenGL 3.3). As limitações conhecidas incluem suposições codificadas sobre um sistema de coordenadas Y para destros. Embora os gizmos sejam fornecidos com normais de vértice, o exemplo não executa nenhum sombreamento sofisticado. Além disso, sabe-se que a entrada de arrastar do mouse com certos dispositivos em ângulos extremos de interação produz resultados anômalos.
Este projeto nasceu de uma leve frustração com outras bibliotecas de dispositivos de modo imediato. Em vez de matrizes 4x4 e ângulos de Euler, a biblioteca expõe uma rigid_transform
que consiste em uma posição 3D, quatérnio de rotação e escala. A biblioteca é implementada em cerca de 1.200 linhas de código, que também inclui uma biblioteca matemática 3D completa em ~400 LoC - linalg.h. As alternativas incluem ImGuizmo e Im3D. O Tinygizmo se encaixa entre esses projetos por ser totalmente independente (sem dependência do Dear ImGui) e por ser fornecido em domínio público.
snap_
na estrutura gizmo_application_state
.update(...)
e draw()
para cada olho)ctrl-t
para ativar o dispositivo de traduçãoctrl-r
para ativar o gizmo de rotaçãoctrl-s
para ativar o gizmo de escalactrl-l
para alternar entre os modos de transformação global e localEste projeto não teria sido possível sem implementações de referência no projeto de bancada de domínio público.
Este é um software gratuito e desimpedido lançado em domínio público. Para obter mais informações, consulte http://unlicense.org