Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités

    Ubisoft sponsorise la bibliothèque d'interface utilisateur pour C ++ «Dear ImGui»
    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

    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 -Visualiser dans une fenêtre à part
    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 -Visualiser dans une fenêtre à part
    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:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />lotLines("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
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre éprouvé
    Encore un effort et cela pourrait devenir une GUI cross-plateform pour le C++ avec tout ce qui va avec

  3. #3
    Membre confirmé
    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

  4. #4
    Membre averti
    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...

  5. #5
    Membre éprouvé
    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...

  6. #6
    Expert éminent sénior
    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.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  7. #7
    Membre extrêmement actif
    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?

  8. #8
    Membre habitué
    portabilité de Dear ImGui
    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".

###raw>template_hook.ano_emploi###