Unreal Engine 4.11 les nouveautés

Bon, après 8 previews, nous avons finalement pu downloader la version définitive de la 4.11. Mais que recèle au final cette dernière mouture ? Si vous n’avez pas suivi au fur et à mesure, je vous invite à examiner les nouveautés de la 4.10, de la 4.9,  de la 4.8 ou de la 4.7.

Parmi ces nouveautés, le rendu réaliste de personnages (notamment au travers du projet Paragon), de nouvelles fonctionnalités audio et l’amélioration de certains outils.

C’est difficile de suivre toutes ces évolutions, mais c’est le revers de la médaille – en même temps on dispose toujours de plus de performances et plus de fonctionnalités. Personnellement, pour la VR, j’attendais avec impatience de pouvoir travailler en production avec ces version, car il y a un grand gain à ce niveau. Mais qu’en est-il du reste ? Je vous propose de faire une tour d’horizon de ces évolutions.

— PERFORMANCE ET MULTITHREADING —

L’architecture multithread (le fait de pouvoir exécuter plusieurs tâches en parallèle, d’optimiser en fonction des coeurs, des CPU, des GPU, etc.) a été améliorée de plusieurs manières : réduction du coût de création des tâches, ajout du support des tâches prioritaires et suppression des points de synchronisation.

Le jeu Paragon a offert de nouveaux défis à l’équipe, il faut soutenir l’animation de 10 héros à la fois, et de plus de 120 PNJ, beaucoup de FX, et tout en rendant une belle carte détaillée à 60fps sur PC et PS4.

ue4.11 image_0

  • La parallélisation est cruciale pour atteindre des cadences élevées sur les PC et les consoles modernes, donc l’architecture de filetage a dû être améliorée.
  • Performances de rendu: meilleur équilibre des tâches de travail, suppression des points de synchronisation
  • Simulation des tissus (Cloth) beaucoup “beaucoup” plus rapide et permettant une meilleure utilisation du multithreading. Appel de l’APEX solveur directement pour chaque asset pour mieux planifier.
  • Multithread animation: c’est un point important – le blueprint d’animation peut maintenant bénéficier de l’utilisation de plusieurs cores et cpu.
  • La possibilité de précalculer (bake) les animations additives, permettant à ces dernières de tourner 3x plus vite.
  • Fast Garbage collection: Le garbage collector, c’est la façon dont on gère la mémoire quand des éléments sont supprimés. Ici, le cache est traité de façon plus cohérente, permettant de réduire le temps de traitement d’un facteur 9x.

— Coté matériaux —

SHADING RÉALISTE DES CHEVEUX, LES YEUX, PEAU, TISSUS

Ajout d’un modèle d’ombrage pour les cheveux.

ue4.11 image_2
Pour utiliser cette fonction, il suffit de choisir des cheveux dans la liste des modèles d’ombrage dans l’éditeur de matériaux.

ue4.11 image_4

Le modèle d’ombrage des yeux  utilise une version simplifiée du subsurface scattering au travers de la rétine. Ces modèles montrent aussi la réfraction à travers la cornée, l’assombrissement de l’anneau limbique, etc.

ue4.11 image_5

Le modèle nécessite moins de mémoire GPU. La diffusion est indépendante de la résolution et il n’y a plus de changement de couleur sur les bords des objets. La Texture et l’éclairage des détails sont mieux préservés en stockant l’éclairage diffus et spéculaire séparément dans un motif en damier plutôt que dans un seul pixel.

Les tissus bénéficient d’un nouveau physically based shading model. Regardez ce velours recouvert de dorures !

ue4.11 rimage_6

DITHERED OPACITY MASK

Pour simuler une surface translucide en utilisant un matériau opaque:

ue4.11 image_12

Case à cocher “Dithered Opacité Mask” dans l’éditeur de matériaux.

— Coté Level Of Detail (LOD) —

Dithered LOD Crossfades

Les static meshes  sont maintenant doté d’un morphing de type “crossfade” lors de leur passage d’un niveau de Lod à un autre.

ue4.11 image_13

Cette fonction doit être activée sur le matériau car il y a un petit coût de performance. Mais cela peut s’avérer très sympa en effet sur des objets sur lesquels le joueur a tendance à fixer son regard (bâtiment au loin à atteindre, etc.).

ue4.11 image_14

Improved Hierarchical LOD: Le HLOD peut remplacer automatiquement beaucoup de meshes détaillées par quelques meshes simples quand ils sont au loin. Cela permet d’atteindre des niveaux de qualité beaucoup plus élevés lors de l’affichage des objets de près, et une plus grande rapidité.

ue4.11 image_15

L’exemple est celui de l’Agora de Paragon: 2.56 Million triangles, 5690 draw calls (à partir de 3.94 million, 7060 draw calls)

Afin de tirer le meilleur profit de HLOD, vous aurez besoin du SDK Simplygon (qui va faire la simplification en automatique). Il peut être utilisé gratuitement dans tout projet commercial (ou non bien sûr) dont le “budget” ne dépasse pas 1M€ – à confirmer, mais je crois que c’est bien cela. Sinon, vous pouvez aussi faire vos modèles vous-mêmes sous votre logiciel préféré (Blender, Maya, etc.) et créer vos LODs… mais coté workflow, c’est quand même mieux de passer par ce nouveau système.

LOD et réduction de Bones !

Oui, vous l’avez compris, vous avez certainement vu l’image ci-dessous qui parle pour elle-même ! Le LOD intègre la notion de réduction des bones (comme pour les doigts de la main), tout en conservant le weightpainting ! ue 4.11 image_28Nous allons pouvoir encore plus travailler salement et UE4 va gômmer notre souillonnerie ! Non, désolé, cela m’a échappé… je me dis juste que les optimisations semi-automatiques comme celle-ci sont vraiment impressionnantes, et qu’au final, les graphistes auront de moins en moins besoin de connaissances “métier” et pourront se focaliser sur la création artistique indépendamment de la machine cible – c’est mieux dit hein comme ça… plus politiquement correct ?

Utilisez la nouvelle option ‘Remove Children’ dans l’arbre du squelette. C’est vraiment trop simple:

ue4.11 image_29

— Coté Animations —

ANIM DYNAMICS (SIMULATION PHYSIQUE POUR LES PERSONNAGES)

Anim Dynamics se présente comme un nouveau node du blueprint d’animation, permettant d’ajouter des mouvements dynamiques aux skeletal meshes, sans avoir à passer par des solutions comme celles de Nvidia par exemple. Voici ce qu’on peut faire  et simplement:

ue4.11 image_18

Principales caractéristiques:

  • Simulation de corps rigide simplifié; pas de collision et utilisation de boxes pour les calculs d’inertie
  • Contraintes de corps rigides: angular, cone, prismatic, planar (voir thread d’origine pour plus d’infos).
  • Chaînes: modèle simplifié pour les cordes, chaines et autres objets similaires
  • spring targets: Utilisation de ressorts linéaires ou angulaires pour des effets de rebonds plus intenses
  • Vent: permet de partager les mêmes données qu’APEX concernant la source du vent et ainsi obtenir un effet plus homogène, et donc, plus réaliste.
  • Adaptive sub-stepping: l’animation peut utiliser le normal tick des physics settings du projet ou bien utiliser des sous-étapes pour une simulation plus réaliste. Le tout peut être paramétré dans un node.
  • Visualisation: permet un debug plus facile (Angular,Prismatic etPlanar limits, Planar exclusion methods, etc.)

Enregistrement d’animations depuis le GAMEPLAY

Nous pouvons maintenant  enregistrer l’animation d’un skeletal mesh en live et le sauver sous la forme d’une Anim Sequence!

ue4.11 image_19

Cet asset peut être utilisé dans le moteur ou exporté comme FBX.

Comment utiliser cette fonction:

  • Pour enregistrer une animation, ouvrez la console et tapez: RecordAnimation [Path for new asset]
  • Pour arrêter l’ enregistrement, tapez: StopRecordingAnimation

Donc, on peut le faire à n’importe quel moment dans le jeu.

ANIMATION POSING EN COPIANT À PARTIR DE MESHES

Nous disposons d’un nouveau nœud dans le Blueprint d’animation pour mélanger (blend) une animation avec un skeletal mesh externe dans une pose particulière. Bon, c’est pas clair, examinons un exemple:

ue4.11 image_26

Dans l’exemple ci-dessus, le Gant utilise le nœud “Copy Pose from Mesh” dans son propre Blueprint Anim pour copier les transformations de la main et du bras à partir d’un Source Mesh, le personnage féminin.

ue4.11 image_27

Pour cela, il faut que le nom des bones correspondent bien entendu, les autres bones étant ignorés.

MARKER-BASED ANIMATION SYNCING

ue4.11 image_47

Les animations peuvent maintenant être  synchronisés  en utilisant  des marqueurs (notifies)  dans les données d’animation. Vous pouvez ajouter des données de marquage par un clic droit sur une piste et en sélectionnant Add Notify->New Sync Marker. Effectivement, c’est beaucoup plus simple quand vous devez synchroniser deux personnages par exemple: l’un qui saute dans vos bras, l’autre qui rattrape.

Curve Blending for Animation Montages

Les montages  supportent maintenant  la courbe de mélange. Les Blend In et Out contrôlent la façon dont le Montage doit être mélangé au moment de la lecture.

ue4.11 image_48
 

— LIGHTING —

Capsules d’ombrage

Unreal Engine supporte désormais les ombrages indirects doux (soft indirect shadows) produits par la capsule  du personnage. Avant, il n’étaient disponibles qu’au travers du mécanisme de screen-space ambient occlusion et ne produisait pas de très bons résultats.

ue 4.11 image_7

Dans les jeux, c’est surtout pour les points de contact des personnages et véhicules avec le sol que c’est intéressant. Il est aussi possible de les utiliser pour les ombrages directs, permettant ainsi une grosse optimisation du temps de calcul de l’ombrage (au prix d’une approximation grossière toutefois comme dans l’illustration ci-dessous).

image_9

Le coût du GPU est proportionnel au nombre de capsules et du nombre de pixels concernés par l’ombre portée.

Voici comment activer les Ombres Capsule:

  1. Créer un nouvel asset en utilisant uniquement les Sphyl bodies (capsules). Les sphères fonctionnent également, mais ne sont pas aussi flexibles. Les capsules doivent se chevaucher légèrement au niveau des joints. Les capsules de pied sont les plus importantes pour que le personnage semble relié à la terre.
  2. Attribuer l’asset à l’ombre Physique de l’Asset Skeletal Mesh Asset
  3. Activer les capsules d’ombres indirectes  sur le composant Mesh Skeletal

BUILDS PLUS RAPIDE (INTEL EMBREE SUPPORT)

La bibliothèque “Intel’s Embree ray tracing” est  intégrée dans Lightmass et permet des calculs plus rapides.

Comme exemple, le “Sun Temple” level lighting est 2.4x plus rapide à builder en utilisant Embree.

LIGHTMASS PORTALS
ue 4.11 image_24

Les rendus en intérieur des skylights (qui passent par les ouvertures de fenêtres, portes, etc.) peuvent être massivement améliorés en utilisant des Lightmass Portals.

Ils permettent de focaliser les rayons de la lumière dans la direction de l’ouverture. (Ci – dessous à gauche : sans portal –  ci – dessous. Droite : avec portals)

ue4.11 image_25

PER-VERTEX TRANSLUCENT LIGHTING

Le coté translucent de la lumière peut maintenant être  rendu beaucoup plus rapidement à l’aide de  paramètres per-vertex translucent lighting.

ue4.11 image_37
Il y a deux nouveaux modes d’éclairage de translucidité disponibles dans l’éditeur de matériaux qui calculent l’éclairage par vertex

CANAUX D ÉCLAIRAGE

Les canaux d’éclairage permettent à des lumières dynamiques d’affecter  uniquement les objets lorsque leurs canaux d’éclairage se chevauchent. Nous avons maintenant un support pour  jusqu’à 3 canaux d’éclairage .

ue4.11 image_39
Vraiment utile pour les cinématiques: permet par exemple d’éclairer uniquement un personnage pour le mettre en valeur, sans toucher à son environnement !

— Coté Particules —

PROFONDEUR DE CHAMP DES PARTICULES

Les nouvelles material functions permettent d’utiliser le Depth of Field (profondeur de champ – le fait qu’on puisse faire un focus sur une zone et rendre le reste flou) sur les particules.

ue 4.11 image_10

L’image de gauche montre une scène simple, avec beaucoup de particules placées sur le terrain.
L’image de droite utilise un cercle profondeur de champ activé et la nouvelle fonction de matériau (ParticleDOF):

ue4.11 image_11
 

DÉCOUPAGES DE PARTICULES (FLIPBOOK RAPIDE DES PARTICULES DE RENDU)

Les particules utilisant des animations flipbook ont tendance gaspiller des zones. A titre d’exemple, ci-dessous, la texture est essentiellement constituée de pixels transparents.

ue4.11 image_31

Maintenant, les particules ont une délimitation beaucoup plus serrée et cela gaspille moins de ressources:

ue4.11 image_32

— Coté AUDIO —

Plusieurs mises à jour depuis le tome 4 des cahiers d’Unreal Engine…

SPATIALISATION STEREO

La spatialisation 3D  est maintenant possible pour  les assets stéréo  sur PC, Xbox One et les plates-formes PS4. Elle spatialise essentiellement chaque canal de source d’entrée comme si elles étaient mono-sources.

Les positions des canaux gauche et droit sont déterminées par la position de l’émetteur du son par un 3D Stereo Spread, un nouveau paramètre dans Sound Attenuation Settings.

ue4.11 image_41

Le paramètre 3D Stereo Spread définit la distance en unités de jeu entre les canaux gauche et droit et le long d’un vecteur perpendiculaire au vecteur d’auditeur-émetteur.

image_42

SOUND FOCUS

Sound Attenuation prend désormais en charge  le focus sonore, une fonctionnalité qui permet aux concepteurs sonores de contrôler divers paramètres automatiquement en fonction de la direction du son par rapport à l’auditeur.

Le schéma suivant illustre les paramètres d’azimut:
ue4.11 image_43
A l’utilisation, ça reste coton, mais ça permet de créer en effet une zone où le son est plus fort, ce que l’on pouvait déjà faire avant, mais plus précisément maintenant.

SOUND OCCLUSION

Pour utiliser permettre des calculs d’occlusion sur un son, il suffit de spécifier dans l’asset Sound Attenuation Settings comme indiqué dans le tableau suivant:

ue4.11 image_45

En gros, cela utilise un raycast pour savoir si le son entre en contact avec un objet proche et réaliser une occlusion, un peu à l’image de l’ambient occlusion pour la lumière.  Je n’ai pas encore testé ça, mais je ne sais pas si j’aurais l’oreille pour ça… En tous cas, cela devrait permettre une meilleure immersion dans les lieux confinés par exemple – si le designer son est attentif aux réglages…

SOUND CONCURRENCY

Bon, là, je n’ai peut-être pas tout compris, mais cela permet de gérer un scale sur les sons en concurrence, en fonction de l’émetteur du son. Par exemple, si le personnage émet 3 sons, dont la voix, et que l’on souhaite que sa voix soit plus importante s’il y a concurrence de son, on peut le faire pour lui, indépendamment des autres acteurs de la scène. Avant, on pouvait déjà le faire, mais sans prendre en compte la source il me semble. Bref, si vous voulez en savoir plus, reportez vous au thread d’origine et n’hésitez pas à me laisser un commentaire svp pour que j’améliore cet article, car la fonctionnalité semble plus étendue que ça.

— Réalité virtuelle / VR —

De nombreuses optimisations à ce niveau.

VR RENDU STEREO

“Instanced Stereo Rendering” est une optimisation de rendu des images stéréoscopiques pour casques VR, les deux yeux sont rendus en même temps. Voici en gros comment cela fonctionne (à gauche, l’ancien, à droite, l’ISR):

16

L’utilisation de Bullet Train montre une amélioration de 14% sur le temps CPU, et une amélioration de 7% sur le GPU.

Pour activer cette fonctionnalité dans votre projet: paramètres de projet dans l’éditeur, et cocher la case “Instanced Stereo”.

ue 4.11 image_17

AMELIORATIONS VR HEAD MOUNTED DISPLAY CAMERA

Le composant de la caméra active est compensée dans le moteur de la même manière que le casque dans le monde réel est décalé par rapport à son origine. Vous pouvez facilement calculer la position du casque VR dans votre monde, joindre des mailles et d’autres objets directement, et de simplifier le système de contrôle de votre jeu VR. Dans le twitch, ils appelaient cela “Camera Refactor”.

VR STÉRÉO LAYERS

Cela vous permet de faire une interface utilisateur plus lisible et moins déformée. Actuellement, cette fonctionnalité est implémentée uniquement pour le casque Oculus Rift, mais viendra bientôt à d’autres plates-formes!

Un twitch a été réalisé spécifiquement pour les nouveautés VR de la 4.11:

— PLATE-FORME ET SDK —

Les principales plates-formes de VR et leurs derniers SDKs sont compatibles .

ue4.11 image_21

  • Oculus Rift 1.3.0 SDK arrive bientôt dans Unreal Engine 4.11.1  (Oculus Rift SDK 0.8.0 beta dans Unreal 4.11.0 Engine) – il faudra donc encore attendre un peu 😉
  • Oculus mobile SDK 1.01
  • SDK 3D de Playstation  VR
  • SteamVR 0.9.12
  • PS4 SDK 3.008.201 (w / PSVR)
  • Xbox One XDK November QFE 1
  • SDK HTML5 (emscripten) 1.35.0
  • Linux Clang 3.7.0
  • Apple tvOS 9,0 (GitHub uniquement)

Optimisations pour DIRECTX 12

Permettre une meilleure utilisation du processeur tout en générant des commandes de rendu en parallèle: y-a une liste d’évolutions que vous pouvez consulter dans le thread d’origine.

Nous apprenons que les ingénieurs de Microsofts ont intégré DirectX 12 à la XBox One (y-avait des rumeurs à ce sujet depuis le début). Cela reste expérimental, mais on peut déjà l’activer sous UE4:

  • Set bBuildForD3D12 to true in the XboxOneRuntimeSettings section of BaseEngine.ini
  • Set D3D12_ROOT_SIGNATURE to 1 in XboxOneShaderCompiler.cpp
  • Décommenter GetSamplePosition in PostProcessSelectionOutline.usf (not supported on Xbox One yet)
  • Rebuild et relancer

Metal remplace OgenGL pour Mac OS X

Voilà, rien à redire, les aficionado de la pomme ne sont pas en reste. On leur promettait depuis longtemps, c’est désormais une réalité.

Plus encore,il y a aussi un support expérimental pour les Shader Model 5 features, on peut tester en ajoutant en ligne de commande: “-metalsm5”.

J’aimerais bien quelques retours des lecteurs du blog à ce sujet, n’ayant pas de mac sous la main pour tester ^^.

— Divers —

Qualité supérieure du DOF

Nous pouvons augmenter le nombre d’échantillons (samples) du “Circle DoF” pour augmenter la qualité en réduisant le bruit. En concrêt, cela donne ça :

ue 4.11 image_20

Sur l’image ci-dessus (cliquez pour grossir), regardez les éléments qui sont éloignés – l’image est meilleure à droite car il y a moins de bruit parasite au niveau du rendu.

 BLUEPRINTS

L’outil de recherche de Blueprints a été mis à jour pour permettre des recherches plus avancées (résultats plus ciblés).

image_51

On peut maintenant mettre un flag “Development only” sur les fonctions et faire gueuler le compilateur si on essaye de compiler un projet pour le shipping en utilisant ces fonctions.

Pas mal de bugs liés à l’éditeur ont été identifiés et corrigés dans cette release – il n’y a qu’à voir la longue série de notes à ce sujet dans le thread d’origine.

SEQUENCER (TOUJOURS EXPÉRIMENTAL)

Sequencer est le nouveau système d’animation cinématographique non linéaire, encore en cours de développement. Je vous en avais déjà parlé précédemment dans les cahiers d’Unreal Engine. Il est destiné à remplacer à terme Matinee qui souffre d’une vieille architecture héritée d’UE3 et qui provoque des lourdeurs d’utilisation dans UE4. Bon, il est toujours en phase expérimentale, mais dispose de plus de fonctions au fur et à mesure…

Intelligence Artificielle

De nouvelles fonctionnalités liées à l’EQS (Environment Query System) , aux Behaviour Trees, à la navigation… et de nombreux bugs en moins surtout !

J’ai vu également un blueprint de type controller pour la gestion des foules (crowd) – j’avoue ne pas savoir si cela existait déjà sous 4.10. Un ami l’a testé, cela semble prometteur, même si la gestion de troupes demanderait une meilleure gestion du déplacement en formation.
Enfin, il y a un plugin qui est disponible (AI Character Template ou quelque chose comme cela) qui devrait permettre de paramétrer plus facilement des PNJ quand on part de zéro, mais je n’ai pas encore trouvé ce qui se cache derrière ce plugin. A vos plumes si vous savez !

Le mot de la fin

Pour de plus amples informations, consultez le thread d’origine :  https://www.unrealengine.com/blog/unreal-engine-4-11-released

C’est toujours une grande joie de voir ce qui avance dans ce moteur, et une grande frustration pour ceux qui pensent commencer à maitriser l’outil. C’est toujours une remise en question perpétuelle de nos connaissances, des astuces qu’on a pu trouver pour contourner tel problème qui deviennent désuètes… Pour ma part, c’est encore pire, car j’écris des livres à ce sujet et en quelques semaines, je les trouve … pas obsolète… mais j’ai écrit certaines choses qui ne sont plus vraies… Bref, je me demande si le support “livre” n’est pas à abandonner. Je pense de plus en plus au classeur, avec des fiches et des numéros de version pour chaque fiche, et la possibilité de substituer les fiches au fur et à mesure, pour avoir un classeur toujours à jour, et sans faire un gâchis de papier (mettre à jour tout le livre) – qu’en pensez-vous ?

Ces articles pourraient aussi vous intéresser …