La version 4.16 d’Unreal Engine à la loupe

La mise à jour 4.16 propose de nouvelles fonctionnalités de rendu et d’animation, des amélioration de performances pour les plateformes mobiles et les consoles. Le Garbage collector est désormais 2x plus rapide de façon à améliorer grandement le multithreading – c’est amusant, j’en parlais avec quelqu’un y-a pas si longtemps 😉 Bon, dans cet article, nous allons nous pencher sur chaque élément qui m’a semblé important et en partant du Thread d’origine d’Epic Games. Je ne saurais vous résumer ici… non, franchement, va falloir lire les amis. Encore tous pleins de nouvelles fonctionnalités vraiment cool, je suis vraiment enthousiaste – va falloir encore faire chauffer les méninges, mais ça vaut vraiment le coup !

Rendu

Vous pouvez intégrer le brouillard volumétrique dans une scène quelle que soit sa taille, permettant ainsi de rendre des effets de brouillard et de fumées plus réalistes. Le brouillard peut être affecté par un certain nombre de lumières, une seule lumière directionnelle (Cascaded Shadow Maps ou static shadowing), un certain nombre de lumières avec ombrage dynamique ou statique (Cast Volumetric Shadow), un puits de lumière (Distance Field Ambient Occlusion) ou encore des particules de lumière (Volumetric Scattering Intensity>0). Pour la configuration du brouillard volumétrique, vous pouvez consulter la doc.

Y-a Maverick qui fait de jolis speed leveldesign qui vient de faire un test sur l’une de ses scènes. Voyez le résultat:

Image-Based (FFT) Convolution for Bloom

Y-a eu un twitch hier d’Epic sur la question:vous pouvez le revoir ici (je mettrai plus tard le lien youtube, mais pas encore dispo). ça dure 1H, donc je vais essayer de vous résumer cette fonctionnalité: il s’agit d’améliorer la gestion du Bloom, c’est à dire d’un effet de brillance, d’HDR, de reflet de la lumière – c’est le coté halo lumineux des objets, mais aussi le coté étincelant (lens flare) d’un objet reflétant fortement la lumière.Regardez les diapos suivantes pour avoir une illustration du procédé.

L’amélioration est apportée en utilisant les transformation rapides de fourrier (FFT) .Habituellement, c’est utilisé pour numériser au plus proche un signal analogique par exemple. Là, je n’entrerai pas dans le détail, mais les FFT sont utilisées, via les GPU dans le cadre d’un shader pour apporter la modélisation la plus réaliste possible de cet effet. La vidéo précédente (le twitch dédié) vous apprend dans un second temps à mettre en place le système.

Si vous le souhaitez, vous pouvez aussi voir ici les diapos qui ont été passées lors de la démo:

Ce diaporama nécessite JavaScript.

En gros, la petite étoile que vous voyez sur la carrosserie de la voiture ci-dessous, c’est ça (en partie).

Optimisations de l’éclairage suivant la distance

Distance Field Ambient Occlusion et Ray Traced Distance Field Shadows sont maintenant 30-50% plus rapides sur les dernières consoles et le PC de moyen gamme. Distance Field Generation est, lui 2,5 fois plus rapide! Je ne veux pas entendre que les versions précédentes avaient due être codées avec les pieds ! Non, mais, vous vous rendez-compte de la tonne d’ingénierie qu’il y a sous le capot d’UE4 ?!

Performance de rendu de l’interface utilisateur (UI) améliorée:

Les jeux qui utilisent des Invalidation Panels (je connaissais les box, pas les panels) ont maintenant une option pour mettre en cache des éléments (uniquement widget), leur permettant de bénéficier d’une texture batching améliorée et réduit les temps de manière significative. Le résultat est un gain important de performances sur les appareils mobiles!

Pose pilote: améliorations concernant les Pose Driver : permet de faire des drive blend shapes /bones de façon procédurale, en comparant la pose actuelle à un set de références cibles. C’est particulièrement utile pour les épaules et les bras.

Vous pouvez maintenant sélectionner plusieurs bones comme  «entrées» pour lire une pose, voir quels bones serait modifiés par le noeud, spécifier une « courbe personnalisée » pour la façon dont chaque cible doit être activée, choisir de driver les courbes (morphes, matériel) directement, au lieu d’avoir un Pose Asset.
L’interface utilisateur a été améliorée pour permettre la création / édition de poses cibles, des barres pour montrer l’activation cible, etc.
Les Target Location peuvent être sélectionnés directement par simple click dans le viewport.

Opacité et masque d’opacité pour Material Flattening: Ont été ajoutées le support pour le baking des valeurs d’opacité lorsque vous utilisez le Actor Merge Tool ou un LOD hiérarchique. Le matériau résultant (instancié) utilise le mode de fusion configuré pour assurer qu’il suit le chemin de rendu correct. Exemple:

Outil Mesh Paint Tool amélioré: il est plus simple et la fonctionnalité peut être utilisée dans d’autres parties de l’éditeur.

Les outils de peinture peuvent maintenant être utilisés sur des meshes de squelettes! C’est ce qu’on avait vu déjà dans mon article sur les textures volumétriques (même s’il n’y a pas de lien direct, le système utilise cette fonctionnalité). La peinture est appliquée directement sur l’asset du mesh du squelette.

Detect Material on Mesh Surfaces:

Une nouvelle fonction « Get Material From Face Index » a été ajoutée pour les composants, elle permet de récupérer le matériau appliqué à un composant après avoir effectué un Line Trace. Ceci est pris en charge pour Static Meshes, Procedural Mesh Components et BSP.

Amélioration de l’outil Color Grading

L’interface utilisateur Color Grading est devenue plus facile à utiliser:

Un nouveau mode HSV a été ajouté, ce qui permet aux graphistes plus habitué à ce mode de choisir plus facilement la couleur.  Il est possible de modifier dynamiquement la valeur min / max des curseurs en fonction de leur type en utilisant les touches Ctrl + Slider Drag. Un nouveau bouton de remise à zéro a été ajouté pour réinitialiser une catégorie de classement couleur ensemble. (i.e. global, ombres,  demi-tons, Highlights)

Vertex Interpolator Material Expression Node

Les Vertex Interpolator nodes ont été ajoutés au mateial editor offrant un meilleur contrôle pour l’interpolation entre vertex et le travail au niveau du pixel. C’est un peu la passerelle entre le vertex et le pixel shader si vous êtes développeur de shaders.

Le workflow existant pour l’offloading work à un vertex shader se fait en utilisant des sorties UV sur mesure. Cela peut être un peu lourd et implique de packager manuellement vos données.  L’exemple de matériau ci-dessous package les données de pe-skinned mesh et les décompose alors pour une utilisation dans un effet:

Le nouvel interpolator node gère la packaging automatiquement, permettant la simplification du graphe:

Animation

La dynamique des personnages est aussi plus fluide et réaliste grâce aux outils lightweight rigid body et low level cloth simulation. 

Lightweight Rigid Body Simulation permet de créer des hordes de personnages avec la possibilité d’utiliser un Blueprint d’animation utilisant l’API PhysX. Les personnages réalisés par cette simulation peuvent générer une collision avec une géométrie statique du monde.

C’est probablement une des fonctions les plus impressionnantes. De quoi faire péter du zombi en veux-tu, en voilà ! (et je ne veux pas entendre de bombe claymore à la sortie d’un concert… 🙁 ).

Low level cloth simulation permet de donner plus de contrôle sur la simulation de tissus avec le  NvCloth de NVIDIA (remplaçant APEX). Bon, là c’est clair, faut vraiment que je fasse une mise à jour du tome 2 des cahiers d’Unreal Engine.

Chouette la gestion de la cape, hein ?

Vous pouvez maintenant avoir des corps physiques avec des parents simulés, les bones enfants entraînés par les données d’animation du personnage alors que leurs parents sont aussi pilotés par des données de simulation physique. Ainsi, le corps peut réagir plus facilement avec son entourage.

Imaginez le résultat: un impact de balle dans l’épaule par exemple… un comportement encore plus réaliste qui peut-être programmé procéduralement.

Spline IK Solver:

Ce nœud IK spline est utile pour le contrôler des noeuds racines des personnages (spine, ce sont les os de la colonne vertébrale).

Amélioration ‘Look At’ Animation Node:

Il peut maintenant être utilisé par rapport à un bone ou un socket. La visualisation de regard sur les contrôles est améliorée. Bon, on pouvait faire sans, mais c’est tout aussi bien de ne pas avoir à passer par un empty par exemple.

Amélioration de l’Animation export

Un support pour la création et l’exportation des animations a été ajouté en incluant des données d’animation supplémentaires générées à partir d’un diagramme de post-traitement affecté à la maille du squelette, tel que Anim Dynamics pour la simulation de la physique.

Pour inclure ces données supplémentaires, choisissez  les menus Preview Mesh de Create Animation ou Export Animation.

Réflexion faite, l’animation des personnages devient vraiment très complexe – mais aussi de plus en plus réaliste. Je vois déjà le désarrois sur le visage de certains de mes lecteurs qui se plaignent déjà d’avoir du mal à suivre les évolutions du logiciel.

Amélioration de l’éditeur Animation Blend Space

Il permet maintenant d’afficher les noms d’animation pour chaque échantillon en utilisant le bouton Show Animation Names dans la grille. Vous pouvez maintenant faire glisser et déposer des animations sur les échantillons existants pour les remplacer.

Animation Modifiers (Early Access Preview)

Les Animation Modifiers permettent d’appliquer une séquence d’actions à une séquence d’animation donnée ou un squelette, comme le pointage sur le pied droit sur le sol et l’ajout de marqueurs d’animation pour la synchronisation avec le bone ball_r à son point le plus bas (sol).

Une nouvelle série de fonctions pour accéder aux données d’animation spécifiques sont disponibles dans la bibliothèque de fonctions de l’Animation Blueprint. Accéder et appliquer un Animation Modifier se fait à travers un nouvel onglet dans Skeleton Editor et Animation Editor. Les Animation Modifiers peuvent être ajoutés à un squelette ou une séquence d’animation. Pour les séquences d’animation, l’Animation Modifier est appliqué uniquement à la séquence elle-même. Appliqué à un squelette, il est appliqué à toutes les séquences d’animation en lien avec le  squelette.

Audio

Unreal Engine Audio (Early Access Preview)
disponible au début sur PC, Mac, iOS, Android et Switch. Il comprend un mélangeur audio multi-plateformes avec soutien backwards-compatible, y compris un nouvel égaliseur multi – plateformes et les effets Reverb master. De plus, le nouveau moteur audio Unreal introduit de nouvelles fonctionnalités comme un graphique Submix, effets Submix, effets source, synthèse en temps réel, et un meilleur support de plug – in audio.

Le nouveau moteur audio Unreal est pas activé par défaut dans 4.16, pour l’activer, utilisez l’argument de ligne de commande «-audiomixer».

Pour y voir plus clair, je vous invite à visualiser les dernières vidéo de Meletou à ce sujet:

Un grand merci à lui pour cette présentation.

Synthesis Plugin (Early Access)

Le nouveau plug-in contient deux nouveaux synthétiseurs temps réel utilisant la nouvelle Unreal classe «SynthComponent» du moteur audio pour mettre en œuvre un synthétiseur soustractif ainsi qu’un granulator temps réel. Ces nouveaux synthétiseurs ne sont pas seulement des outils utiles pour la musique procédurale et la conception sonore, mais ils servent d’exemple pour fabriquer un plug-in tiers et même les concepteurs sonores pourraient l’utiliser. Le plug-in contient également de nombreux effets source DSP et de prémixage : Source Effets (Stereo Delay, bit crusher, processeur dynamique, Envelope Follower, Filtre EQ, filtre analogique virtuel (variable Ladder / État), Vague Shaper, Chorus, Phaser), Prémixage Effets: Reverb, EQ, Dynamics Processeur

Steam Audio (Early Access)

Epic et Valve se sont associés pour mettre en œuvre un implémentation entièrement intégrée du SDK steam audio utilisant les nouvelles fonctionnalités de Unreal Engine Audio (spatialisation, occlusion, réverbération). C’est exactement ce dont je vous parlais dans cet article.

C’est fou ce que l’API audio évolue rapidement depuis quelques versions. Encore une fois, il va falloir mettre à jour le tome 4 😉

Improved Animation Preview Scenes

Plusieurs améliorations pour un aperçu des scènes d’animation:
Preview scene settings a été déplacé dans l’onglet paramètres existant, ajout d’un raccourci pour basculer rapidement preview mesh de la barre d’outils principale.
Lors de l’édition des scènes de prévisualisation, vous n’avez plus à créer un asset « preview scene collection » juste pour un aperçu de mailles supplémentaires. Si vous êtes satisfait de votre configuration de maille, vous pouvez maintenant l’enregistrer à un actif.

VR

Les interfaces de travail pour la VR (tout est maintenant accessible à partir d’un menu radial, photo ci-dessous), l’animation, Sequencer, maintenant disponible en VR, sont améliorées. Bienvenue donc aux séquences cinématiques en VR!

Teleport a été mis à jour afin que vous puissiez instantanément passer d’un emplacement à un autre et redimensionner pour voir ce que verrai le joueur.

C’est vraiment top. L’interface est bien plus intuitive et ressemble à ce qu’on peut trouver déjà dans certains jeux.

Quel aisance de pouvoir utiliser le sequencer de cette façon, en se déplaçant dans la scène, en arrêtant de le temps, en procédant à des manipulations directement en 3D…  regardez ça:

Physic simulation en VR: utilisation des contrôleurs de mouvement pour interagir avec les objets.

Et le mode snapping qui permet de fixer plus facilement les objets en utilisant l’ancrage:

Cette fonctionnalité est actuellement disponible uniquement en mode VR, mais le support sera ajouté pour le montage de bureau dans une version future.

Amélioration du rendu VR sur mobile

MultiView Direct est maintenant pris en charge pour Samsung Gear VR, avec amélioration de la performance globale et réduction de l’utilisation de la mémoire.

Monoscopic far field peut maintenant être utilisé avec MultiView activé sur les engins VR assurant un rendu stéréo de votre scène optimal.

Google Daydream supporte le MultiView mobile standard avec un support direct dans une version future.

Unified Console Commands pour la VR

Les commandes de la console ont été consolidées et unifiées sur les plates-formes VR pour créer un shared layer que les développeurs peuvent utiliser plutôt que de maintenir chaque plate-forme de façon  indépendante.

Sequencer

Shot Tracks dans le Sequencer a subit plusieurs améliorations pour la cinématique et la création de films.

  • Hierarchical bias par tir: Les cinéastes peuvent construire un pipeline proche de ce qu’ils utilisent habituellement (voir vidéo)
  • Propriété « When Finished » pour toutes les pistes
  • Pre/post roll: concept général pour toutes les pistes.

Les Animate Material Parameter Collections peuvent être animée avec un contrôle total sur les paramètres d’animation – scalaire et vectoriel. Plus besoin d’animer les valeurs des paramètres individuels sur chaque instance matérielle pour partager l’animation.

Amélioration de l’Interface

Les vignettes pour des pistes audio rendent maintenant les échantillons de crête avec une courbe de RMS intérieure (lissée). Les pistes audio peuvent également être redimensionnées verticalement!

Support

Le support Nintendo Switch est désormais complet, prêt pour le portage simple de jeux et même en réseau, suite au travail commun avec Nintendo. Ahaha!!!! A vos souris les amis, y-a plein de jeux à créer sur cette nouvelle console.

DirectX 12 est maintenant le moteur de rendu par défaut pour Xbox One avec des améliorations de performances. On s’en doute, comme l’API est plus proche du matériel. Voir cet article pour + d’infos.

Vous pouvez développer des jeux HTML5 en utilisant WebAssembly  (wasm) et WebGL 2. Unreal Engine utilise le dernier emscripten toolchain Mozilla (de v1.37.9). Il s’agit d’ une nouvelle technologie pas forcément prise en charge par tous les navigateurs, elle est considérée comme une caractéristique Early Access et nécessite un accès GitHub. Vous pouvez activer wasm et WebGL 2.0 dans la section emscripten des paramètres du projet HTML5. Si vous avez besoin du soutien du navigateur le plus large possible, continuer à utiliser asm.js et WebGL 1.

Bon, je ne m’étenderai pas sur le sujet car je vous en ai déjà parlé à plusieurs reprises sur ce blog.

Social Screens for PlayStation VR (Early Access Preview)

PSVR Social Screen preview permet d’avoir un support des écrans séparés entre le casque et l’écran – fonction qui existe déjà sur PSVR, mais qui vient d’être supportée par UE4. Plus précisément, cette techno permet de transformer la vue “3DVR” du casque en une vue “2D” que les spectateurs peuvent regarder sur l’écran. Enfin, c’est ce que j’ai lu, j’ai pas encore testé.

Mobiles

Sur mobile, le Virtual Keyboards (clavier virtuel) Android est pris en charge. La taille des exécutables a été réduite pour les applications mobiles! (Early Access Preview). Ouf… car ça me gonflait vraiment de voir ces gros APK trainer sans raison…

L’ utilisation du clavier virtuel est activé en cochant la case à cocher sous Project Settings > Platforms > Android > APK Packaging.

Support for Runtime Permissions on Android

Unreal Engine 4 prend désormais en charge les autorisations d’ exécution requis par Android 23. Ceux-ci incluent l’accès aux contacts, les photos, l’état du téléphone, stockage externe, appareil photo, et les services de localisation.Ainsi, on se rapproche du mode habituel d’une application Android:

4,16 nécessite Android SDK 23 ou +, vous pouvez trouver le programme d’ installation CodeWorksforAndroid-1R6u1 dans votre répertoire Engine/Extras/AndroidWorks.

Divers

Vous pouvez maintenant activer un emplacement de stockage partagé pour tous les codes de shaders en utilisant le Share Material Shader Code, un seul exemplaire étant stocké pour les matériaux ou les instances de matériaux qui génèrent le même code shaders.

Import Capsule Collision from FBX: Vous pouvez importer une collision simple capsule à partir d’un fichier FBX, comme vous importez sphère et simple collision convexe. Vous utilisez maintenant le préfixe « UCP » sur une capsule poly mesh, et il sera retiré à l’importation, et remplacée par une forme de collision de la capsule correspondante.

Baked Poses in LODs : Unreal Engine 4 prend désormais en charge le baking d’une pose dans un LOD en utilisant un nouveau paramètre de réduction appelé Bake Pose. Ceci peut être réglé à une seule séquence d’anim de trame qui sera appliquée au maillage du LOD résultant. Cela peut se révéler utile lors de la suppression des bones ou pour conserver une pose.

Play montage est un nouveau nœud asynchrone qui peut être utilisé dans tout Blueprint pour jouer des montages d’animations. Il offre un accès facile à certains événements de rappel, vous permet dedéclencher d’ autres nœuds quand un montage se fond sur, est interrompu, etc …

  • OnCompleted est appelé quand le Montage finit de jouer et le mélange fait.
  • OnBlendOut est appelé quand le montage commence à mélanger, que ce soit parce qu’il est arrêté automatiquement ou manuellement.
  • OnInterrupted est appelé si le montage commence à Mélanger, mais parce qu’il a été interrompu par un autre Montage.
  • OnNotifyBegin et OnNotifyEnd sont des callbacks utilisant ‘Play Montage Notify’ ou ‘Play Montage Notify Window’ Anim Avertit dans l’actif de Montage. Ces AnimNotifies peuvent renvoyer un «Notify Name» de faire la différence entre plusieurs callbacks du même Montage.

Asset Management Framework (Early Access Preview)

L’Asset Manager est un nouvel objet global qui peut être utilisé pour découvrir, charger et analyser des cartes et assets spécifiques au jeu dans l’éditeur ou à l’ exécution. C’est un point vachement important, car jusqu’à présent, c’était assez galère de lister les assets d’un projet. Il est facile de lister des actors, mais pour les assets, c’était une autre paire de manches! A l’exécution je veux dire…

Il fournit un cadre pour rendre plus facile la création des choses comme des quêtes, des armes ou des héros et de les charger sur demande. Il est encore en cours de développement. Je suppose qu’on devrait pouvoir ajouter également des assets de l’extérieur et pendant l’exécution pour facilter par exemple, le téléchargement d’une nouvelle arme dans un jeu, ou d’un nouveau bouclier, etc.

L’onglet Asset Manager dans les paramètres du projet peut être utilisé pour mettre en place les règles de votre jeu: les Types d’assets primaires qui sont scannés par l’Asset Manager peut être questionnés lors de l’exécution avant leur chargement, et peuvent ensuite être chargés de manière asynchrone sur demande. Dans la documentation de progression pour cette fonction est disponible sur AnswerHub.

Asset Audit Window (Early Access Preview)

Construit sur l’Asset Management Framework, la fenêtre de vérification de l’asset peut être utilisée pour vérifier la taille du disque, utilisation de la mémoire, et les propriétés d’assets générales. Voici un exemple d’audit de textures d’audit de l’échantillon de jeu de tir sur PS4:

Fast CreateWidget

La création de widget UMG est maintenant jusqu’à 3 fois plus rapide. Bon, perso, cela ne m’avait jamais vraiment gêné. Le compilateur widget génère maintenant un modèle de widget qui est stocké dans le même pack que la Blueprint Class générée et utilisée lors de la création de widget.

SDK mis à jour:

  • Visual Studio: Visual Studio 2013 n’est plus pris en charge sur Windows avec cette version. Il faut Visual Studio 2015 ou Visual Studio 2017.
  • Nintendo Switch: Nintendo SDK 1.3.1
  • Xbox One:  qfe3 XDK
  • PlayStation 4: PSR SDK 4.508.001 SDK
  • Android:  Android 1R6u1
  • GoogleVR version 1.3
  • GoogleVR:  1.40.0
  • GoogleVR:  Daydream et Cardboard
  • Vulkan: Mise à jour distribuables et glslang SDK 1.0.39.1

Conclusion

Vous trouverez la liste complète (encore plus qu’ici) de tous les ajouts et corrections sur le thread d’Epic. Et pour booster votre enthousiasme, je vous invite à vous prendre une petite pause, un thé vert ou un café à la main… et pendant 30 minutes, laissez vous guider par cette vidéo de présentation qui présente pas mal de nouvelles fonctionnalités:

J’aimerais vraiment rendre hommage à Epic Games, et sa décision d’avoir mis son moteur en Open Source. C’était un risque car la concurrence peut étudier le code de près et copier les principales fonctions. Mais cela a permis de booster la fréquence des mises à jour et d’offrir toujours plus de fonctionnalités, sans qu’on ne soit bloqué un seul instant puisqu’on peut mettre le nez dedans. Et puis je suis reconnaissant (c’est mon Thanksgiving day) à tous ceux qui lisent mes livres, suivent mes articles, commentent et partagent mes vidéo… c’est vraiment cool… faut que j’arrête la drogue.

4 réflexions sur “ La version 4.16 d’Unreal Engine à la loupe ”

  1. super recap comme d’hab, cette nouvelle version est terrible…notamment l’animation et la gestion du son, je suis musicien et fan de vieux synthé, ca donne envie de créer son synthé virtuel, j’espère qu’ils vont continuer dans ce sens,y a plus qu’a bosser, je crois qu’il y a la gestion du midi ? ! Une autre question comment compte tu t’y prendre pour les mises à jour des livres ?

    1. Oui, de mémoire y-a un plugin midi, je ne sais plus s’il est activé par défaut.
      Pour les mises à jour, je vais commencer par le tome 1 et 2, il seront édités en version papier comme une seconde édition et l’éditeur donnera accès en version PDF à tous ceux qui ont l’édition précédente (papier ou pdf) pour 1€/ebook, c’est déjà acté.

  2. Tu fais partie des gens qui seront à l’origine de mes débuts 🙂 Merci d’avance, je consulte tes publications pour commencer, puis je vais m’équiper encore grâce à toi. Merci à toi donc!

Laisser un commentaire