Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Ubisoft sponsorise la bibliothèque d'interface utilisateur pour C++ « Dear ImGui »
Suite à son adhésion au Blender Development Fund pour soutenir l'animation open source

Le , par Stéphane le calme

89PARTAGES

13  0 
En juillet, Ubisoft a rejoint le Blender Foundation Development Fund en tant que membre Gold (30 000 euros par an). Le studio a mis en ligne une interview de Pierrot Jacquet (responsable des productions chez Ubisoft Animation Studio) pour en expliquer les raisons :

« Blender était, pour nous, un choix évident compte tenu de notre stratégie : il est soutenu par une communauté forte et engagée, et est associé à la vision véhiculée par la Fondation Blender, ce qui en fait l’un des DCC les plus évolutifs du marché.

« En plus de cela, c'est un projet open source. Cela nous permet de contribuer à son développement en nous joignant en tant que membre corporatif et en partageant avec la communauté certains des outils que notre équipe dédiée de Blender développera. Nous aimons l'idée que cet échange mutuel entre la fondation, la communauté et notre studio profite à tous à la fin ».

La raison de cette décision ? Blender 2.8 : « Nous pensons que Blender 2.8, qui sortira dans les prochains jours, va changer la donne pour l’industrie de la CGI. Blender est depuis longtemps déjà dans le radar d'Ubisoft, et au cours de la dernière année, de plus en plus de nos artistes ont montré un intérêt pour son utilisation en production. La croissance de notre communauté interne de Blender, ainsi que les innovations apportées par 2.8 - p. ex. un rendu UX, Grease Pencil, EEVEE en temps réel remodelé - nous ont convaincus que le moment était venu d'apporter un soutien à nos artistes et productions qui souhaitaient ajouter Blender à leur boîte à outils. Quel meilleur moyen de soutenir ce changement que de faire un don à la Fondation Blender, afin que nous puissions aider Blender à poursuivre sa croissance ? »

Dear ImGui

C'est dans ce contexte qu'Ubisoft a confirmé le parrainage du projet open source Dear ImGui, une interface utilisateur graphique légère pour C++. Il génère des tampons de sommet optimisés que vous pouvez rendre à tout moment dans votre application compatible avec le pipeline 3D. Il est rapide, portable, indépendant du rendu et autonome (pas de dépendances externes).

Dear ImGui est conçu pour permettre des itérations rapides et pour permettre aux programmeurs de créer des outils de création de contenu et des outils de visualisation / débogage (par opposition à l'interface utilisateur pour l'utilisateur final moyen). Il favorise la simplicité et la productivité vers cet objectif et manque de certaines fonctionnalités que l'on trouve normalement dans les bibliothèques de plus haut niveau.

Dear ImGui est particulièrement adapté à l'intégration dans le moteur de jeux (pour l'outillage), les applications 3D en temps réel, les applications plein écran, les applications intégrées ou toutes les applications sur les plateformes de consoles où les fonctionnalités du système d'exploitation ne sont pas standard.

Omar Cornut, le développeur principal de Dear ImGui et directeur technique de Lizardcube, décrit l'accord comme « un facteur de croissance notable pour le projet en 2020 ».


Utilisation

Vous pouvez facilement copier et compiler Dear ImGui dans votre application / moteur. Ce sont tous les fichiers du dossier racine du référentiel (imgui.cpp, imgui.h, imgui_demo.cpp, imgui_draw.cpp etc.). Aucun processus de construction spécifique n'est requis. Vous pouvez ajouter les fichiers .cpp à votre projet existant.

Vous aurez besoin d'un backend pour intégrer Dear ImGui dans votre application. Le backend transmet les entrées souris / clavier / manette de jeu et une variété de paramètres à Dear ImGui, et est en charge du rendu des sommets résultants.

Des backends pour une variété d'api graphiques et de plateformes de rendu sont fournis dans le dossier examples/, ainsi que des exemples d'applications. Vous pouvez également créer votre propre backend.

Une fois que Dear ImGui est installé dans votre application, vous pouvez l'utiliser à partir de _anywhere_ dans votre boucle de programme:

Code C++ : Sélectionner tout
1
2
3
4
5
ImGui::Text("Hello, world %d", 123); 
if (ImGui::Button("Save")) 
    MySaveFunction(); 
ImGui::InputText("string", buf, IM_ARRAYSIZE(buf)); 
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);

Résultat :


(paramètres : Dark style (left), Light style (right) / Font: Roboto-Medium, 16px / Rounding: 5)

Code C++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Create a window called "My First Tool", with a menu bar. 
ImGui::Begin("My First Tool", &my_tool_active, ImGuiWindowFlags_MenuBar); 
if (ImGui::BeginMenuBar()) 
{ 
    if (ImGui::BeginMenu("File")) 
    { 
        if (ImGui::MenuItem("Open..", "Ctrl+O")) { /* Do stuff */ } 
        if (ImGui::MenuItem("Save", "Ctrl+S"))   { /* Do stuff */ } 
        if (ImGui::MenuItem("Close", "Ctrl+W"))  { my_tool_active = false; } 
        ImGui::EndMenu(); 
    } 
    ImGui::EndMenuBar(); 
} 
  
// Edit a color (stored as ~4 floats) 
ImGui::ColorEdit4("Color", my_color); 
  
// Plot some values 
const float my_values[] = { 0.2f, 0.1f, 1.0f, 0.5f, 0.9f, 2.2f }; 
ImGui::PlotLines("Frame Times", my_values, IM_ARRAYSIZE(my_values)); 
  
// Display contents in a scrolling region 
ImGui::TextColored(ImVec4(1,1,0,1), "Important Stuff"); 
ImGui::BeginChild("Scrolling"); 
for (int n = 0; n < 50; n++) 
    ImGui::Text("%04d: Some text", n); 
ImGui::EndChild(); 
ImGui::End();

Résultat :


Dear ImGui vous permet de créer des outils élaborés ainsi que des outils de très courte durée. Sur le côté extrême de la courte durée de vie: en utilisant la fonction Edit & Continue (rechargement de code à chaud) des compilateurs modernes, vous pouvez ajouter quelques widgets pour modifier les variables pendant que votre application est en cours d'exécution, et supprimer le code une minute plus tard! Dear ImGui n'est pas seulement là pour peaufiner les valeurs. Vous pouvez l'utiliser pour tracer un algorithme en cours d'exécution en émettant simplement des commandes de texte. Vous pouvez l'utiliser avec vos propres données de réflexion pour parcourir votre ensemble de données en direct. Vous pouvez l'utiliser pour exposer les composants internes d'un sous-système dans votre moteur, pour créer un enregistreur, un outil d'inspection, un profileur, un débogueur, un éditeur / cadre de création de jeu complet, etc.

Ubisoft a utilisé Dear ImGui au cours des deux dernières années sur plusieurs projets AAA. Adopté par l'équipe d'Assassin's Creed en 2016, puis par Rainbow Six un an plus tard, il a été décrit par les membres de l'équipe comme un excellent outil qui permet des itérations rapides et la responsabilisation des programmeurs pour créer des outils de création de contenu et de visualisation.

« Dear ImGui est une élégante interface graphique en mode immédiat qui change fondamentalement la façon dont les outils de production et de débogage sont développés chez Ubisoft. Cette bibliothèque de productivité est un moyen incroyablement efficace d'améliorer la qualité de ces outils », explique Nicolas Fleury, architecte technique sur Rainbow Six: Siege.

Source : Ubisoft

Voir aussi :

Ubisoft reporte la sortie de trois titres majeurs, y compris Watch Dogs Legion et Gods and Monsters, et s'effondre en Bourse après l'annonce de profits en baisse pour l'exercice actuel
Ubisoft Animation Studio rejoint le fonds de développement Blender pour soutenir l'animation open source
Ubisoft célèbre Notre-Dame de Paris en proposant un accès gratuit à Assassin's Creed Unity pendant une semaine, pour profiter de la cathédrale en 3D
Les meilleurs employeurs de 2019 : Facebook et Google perdent du terrain aux USA, tandis qu'Ubisoft monte en flèche en France, selon Glassdoor

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Andarus
Membre averti https://www.developpez.com
Le 25/12/2019 à 16:26
Citation Envoyé par archqt Voir le message
Encore un effort et cela pourrait devenir une GUI cross-plateform pour le C++ avec tout ce qui va avec
D'après ce que je lis on est à mille lieues d'un équivalent à Qt, et ça ne semble pas être le but...
1  0 
Avatar de Guntha
Membre éprouvé https://www.developpez.com
Le 27/12/2019 à 0:41
C'est déjà cross-platform, vu qu'il ne fournit pas de renderer, mais qu'il faut y intégrer le sien.

Quoique, les samples sont tellement bien faits que si on fait une appli purement GUI, on peut les utiliser comme base pour une appli multi-plateformes...
1  0 
Avatar de dragonjoker59
Expert éminent sénior https://www.developpez.com
Le 28/12/2019 à 19:11
Citation Envoyé par archqt Voir le message
Encore un effort et cela pourrait devenir une GUI cross-plateform pour le C++ avec tout ce qui va avec
Ben non en fait, puisque c'est pour être dessiné via une API de rendu 3D (Vulkan, OpenGL, Direct3D...).
Et il faut donc avoir une appli utilisant une de ces API pour pouvoir utiliser ImGui, ce qui est loooooiiiiiiinnnn d'être le cas de la majorité des applis.
1  0 
Avatar de emilie77
Membre confirmé https://www.developpez.com
Le 24/12/2019 à 9:15
Citation Envoyé par archqt Voir le message
Encore un effort et cela pourrait devenir une GUI cross-plateform pour le C++ avec tout ce qui va avec
J'espere la meme chose
0  0 
Avatar de benjani13
Membre extrêmement actif https://www.developpez.com
Le 02/01/2020 à 8:28
Citation Envoyé par Andarus Voir le message
D'après ce que je lis on est à mille lieues d'un équivalent à Qt, et ça ne semble pas être le but...
Exact. Dear Imgui est avant tout fait pour du prototypage d'UI, la création d'outils durant la phase de conception d'un jeu (conception de l'environnement, paramétrages graphiques, etc), des outils de debug, etc. Après il y a quelques vrais applications qui utilisent ImGui, avec des templates graphiques customs bien plus jolis que le template par défaut.

Citation Envoyé par dragonjoker59 Voir le message
Citation Envoyé par archqt Voir le message
Encore un effort et cela pourrait devenir une GUI cross-plateform pour le C++ avec tout ce qui va avec
Ben non en fait, puisque c'est pour être dessiné via une API de rendu 3D (Vulkan, OpenGL, Direct3D...).
Et il faut donc avoir une appli utilisant une de ces API pour pouvoir utiliser ImGui, ce qui est loooooiiiiiiinnnn d'être le cas de la majorité des applis.
Justement, le fait de réaliser le rendu via OpenGL permet je trouve d'être plus indépendant, plutôt que de se reposer sur une couche de GUI qui serait dépendante du système ou du gestionnaire de bureau (Qt pour KDE, GTK pour Gnome, etc). On évite ainsi de se limiter à une bibliothèque de GUI qui doit être présente sur le système, installé (perso ça me gonfle d'installer tout Qt sur un bureau GTK et inversement) ou embarqué (avec le poids des DLLs). Pour le fait de devoir avoir une API OpenGL à disposition, Dear ImGui vise essentiellement les jeux vidéos à la base donc bon.

J'ai fait une petite application OpenGL qui permet d'afficher des modèles 3D et de les manipuler, à la souris ou via une GUI. J'ai choisis Dear ImGui pour la GUI après avoir comparé plusieurs bibliothèques et je ne regrette pas ce choix. J'ai une appli qui se compile aussi bien sur Windows que Linux sans rien avoir à différencier dans le code (juste quelques libs qui diffèrent entre Windows et Linux dans le Makefile). Très peu de dépendance à installer (quelques libs X.org en version dev sur Linux), un binaire léger. Que demander de plus?
0  0 
Avatar de ericb2
Membre habitué https://www.developpez.com
Le 07/02/2020 à 14:47
Bonjour,

Je suis très content qu'on commence à reconnaître cette API. En fait, ça fait plusieurs années que je travaille avec ImGui, et c'est en fait un des seuls moyens que j'ai trouvé pour

1. développer sous Linux
2. proposer une version Windows (7+) de mon application

La licence du code est GPL (mais j'ai tout écrit et je pourrai le passer sous LGPL plus tard).

Je n'ai pas beaucoup de temps pour faire des copies d'écran, mais je vais simplement vous donner un lien, et il suffit de lire ;-)

1. Le site : https://framagit.org/ericb/miniDart

2. le wiki (copies d'écran pas tout à fait à jour toutefois) , et ce qu'on peut faire : https://framagit.org/ericb/miniDart/-/wikis/home

3. j'ai créé un canvas, et je vais l'améliorer (je n'ai pas publié les derniers changements, mais ça viendra bientôt, enfin quand j'aurai le temps ^^^)

Pour ceux qui veulent tout savoir, j'ai pris autant de notes que possible et tout est dans le Changelog ( https://framagit.org/ericb/miniDart/...ster/Changelog ) et vous verrez à quel point la portabilité est difficile !!

À suivre : un meilleur layout, et l'intégration du "docking".
0  0 
Avatar de archqt
Membre éclairé https://www.developpez.com
Le 23/12/2019 à 18:32
Encore un effort et cela pourrait devenir une GUI cross-plateform pour le C++ avec tout ce qui va avec
1  3