28 septembre 2022

Extension ImGui avec Imguizmo, Implot et Imnodes

Dans la dernière version d'Evergine, nous avons ajouté la prise en charge de la bibliothèque ImGui et de trois de ses meilleurs modules complémentaires afin de créer des interfaces et des outils riches dans vos applications Evergine.

 

En ajoutant le paquet Evergine.Bindings.ImGui à vos projets, ainsi que, si vous le souhaitez, l'une des extensions prises en charge (Evergine.Bindings.Imguizmo, Evergine.Bindings.Implot, Evergine.Bindings.Imnodes), vous pouvez commencer à utiliser son API simple pour créer de petits contrôles d'outils et visualiser différents aspects de l'application.

Mais qu'est-ce que c'est, au juste, ImGui ?

Si vous n'en avez jamais entendu parler, ImGui est une bibliothèque autonome qui crée des interfaces élaborées qui vivent à l'intérieur de l'application graphique et sont rendues comme n'importe quel autre élément du monde virtuel, mais en 2D. Il est ainsi possible de créer, au sein même de l'application, des interfaces complexes complètes pour des logiciels comme des éditeurs graphiques.

Figure 1. Exemple d'utilisation d'ImGui dans Tracy Profiler

Et Imguizmo, Implot et Imnodes ?

Imguizmo est une extension d'ImGui qui permet de créer des contrôles spécifiques pour les objets 3D, comme des manipulateurs d'orientation de caméra et des contrôles permettant la rotation et la translation en direct de matrices 4×4.

Implot est une autre extension permettant de créer plusieurs types de graphiques dans une fenêtre ImGui ; elle est très utile pour visualiser des variables qui évoluent à l'exécution.

Imnodes, quant à elle, ajoute un contrôle utile pour créer et visualiser des graphes et en modifier les connexions et les nœuds.

Comment l'utiliser dans votre application

Tout d'abord, après avoir ajouté les dépendances NuGet, vous devez enregistrer le manager ImGui dans la scène :

Ensuite, il suffit de créer des composants qui appellent l'API ImGui pour commencer à afficher de nouveaux contrôles. Vous trouverez des informations plus détaillées dans la documentation, et nous venons de publier une petite démo illustrant les principales fonctionnalités.

 

Nous maintiendrons nos bindings à jour au rythme du développement d'ImGui : pas d'inquiétude, donc, vous ne resterez pas bloqué sur d'anciennes versions. Pour l'instant, nous ne prenons en charge que Windows (x86-x64), mais nous prévoyons d'ajouter très prochainement la prise en charge d'ARM64 et de Linux. Par ailleurs, nous ajouterons d'autres extensions dans un avenir proche : n'oubliez pas de nous suivre sur Twitter (@EvergineTeam) et sur notre chaîne YouTube.