La version 4.19 d’Unreal Engine

par | 16 Mar 2018

La version 4.19 devrait faire le bonheur de ceux qui s’intéressent à la Réalité augmentée avec la mise en œuvre effective d’un framework unifé (Google/Apple). On notera aussi l’apparition d’un temporal Upsampling qui viendra compléter le spatial Upsampling, un peu difficile à résumer en quelques mots… disons qu’il devient possible d’utiliser des résolutions inférieures à l’affichage pour le calcul, tout en prenant en compte des résolutions intermédiaires pour les effets comme l’antialias, le bloom, etc. Il y a aussi le changement dynamique de résolution sur console, une évolution du livelink particulièrement intéressante pour ceux qui utilisent Maya, des améliorations coté Séquenceur et Blueprint d’animation, avec notamment plus de contrôle sur les vêtements, et la partage d’animations faciales, une alternative intégrée à Simplygon et un tas d’autres choses que je vous laisse découvrir juste après.

ÉDITEUR ET CŒUR DU MOTEUR 3D

Encryption/Signing Key Generator

Il est dorénavant possible de configurer complètement la signature et le cryptage des fichiers .pak à partir de l’éditeur via un seul panneau de paramètres unifiés. Ces fonctionnalités peuvent désormais être contrôlées dans Paramètres du projet, sous la section Projet, dans le panneau Crypto.

À partir de ce panel, il est possible de générer ou de supprimer des clés pour la signature ou le cryptage, ainsi que d’activer ou désactiver les différents types de signature et de cryptage disponibles. Les fonctionnalités suivantes peuvent être activées ou désactivées à partir de ce menu:

  • Encrypt Pak .ini Files – Crypte tous les fichiers .ini présents dans les fichiers .pak du projet. Cela empêche l’extraction facile ou la falsification des données de configuration pour votre produit, à un coût d’exécution minime.
  • Encrypt Pak Index – Crypte l’index de fichier pak, ce qui empêche UnrealPak d’ouvrir, de visualiser et de décompresser les fichiers pak de votre produit, à un coût d’exécution minime.
  • Crypter les fichiers UAsset – Crypte les fichiers uasset dans le fichier pak. Les fichiers uasset contiennent des informations d’en-tête sur les actifs à l’intérieur, mais pas sur les données réelles elles-mêmes. Le chiffrement de ces données fournit une sécurité supplémentaire à vos données, mais ajoute un petit coût d’exécution et une augmentation de l’entropie des données, ce qui peut avoir un impact négatif sur la taille des correctifs.
  • Crypter les ressources – Crypte complètement tous les biens dans le fichier pak. Notez que ce paramètre a un effet mesurable sur les performances d’E / S des fichiers d’exécution et augmente la quantité d’entropie dans vos données finales, ce qui rend le système de correction de distribution moins efficace.

Worflow : dossiers favoris

Un dossier particulier peut être marqué dans votre navigateur de contenu en tant que «favori» pour le rendre facilement accessible!

La section « Favoris » du navigateur de contenu peut être activée / désactivée à l’aide des options d’affichage pour Afficher les favoris. Cette fonction est activée par défaut.

Optimisation de l’espace disque:  Plusieurs outils ont été mis en place pour permettre d’analyser plus efficacement les tailles des packages.

RENDU, MATÉRIAUX, POST-PROCESS

Une nouvelle méthode de sur-échantillonage temporel (Temporal Upsampling) 

Pour bien comprendre ce dont il s’agit, je vais devoir vous introduire le Screen Percentage : c’est une technique utilisée pour faire du rendu à une résolution inférieure ou supérieure à celle qui est présentée. On parle de % par rapport au rendu affiché.

Avant la version 4.19, il s’agissait de modifier ce coefficient. Maintenant, il y a deux types de coefficients:

  1. Le primary Spatial Upscaling : On effectue un rendu à une résolution plus faible, puis on effectue un upscale avant que l’UI ne soit affichée. C’est un agrandissement, un upsampling (de sample, échantillon, et up pour sur-échantillonnage).
  2. Le secondary Spatial Upscaling: on réalise une seconde passe d’Upscale, mais indépendamment de la première.

Si on effectue un rendu avec un coefficient supérieur à 100%, on diminue la résolution de l’image pour l’affichage, c’est ce qu’on appelle du super-sampling.

SpatialUpscale.png

Les différents calculs dans le pipeline de rendu sont réalisés juste avant l’User Interface. Cela signifie que le Bloom, le Motion Blur, etc. – tout cela est réalisé sur une image de plus basse résolution, et c’est l’ensemble qu’on « grossit » pour l’affichage.

La qualité de l’Upscale se règle avec la variable Spatial Upscale Quality, correspondant à différents niveaux (0=Nearest Filtering, 1=Simple Bilinear , … 5 =36-tap Gaussian-filtered unsharp mask). Le niveau 5 étant très couteux en ressources, mais donnant de bons résultats quand les % sont assez faibles – on parle alors d’extrem upsampling.

Bon pour l’instant, on ne parle que de « spatial », c’est à dire de résolution, de dimension d’espace. Alors, c’est quoi ce temporal dans le titre ?

Introduisons le « Temporal Anti-Aliasing Upsample » (TAA Upsample). On est toujours dans la passe primaire. Au final, plutôt que de travailler dans la résolution inférieure, on va faire le upscale et travailler dans la résolution supérieure. Cela donne:

SpatialAndTemporalUpsample.png

De fait, l’antialiasing, le Motion Blur, le Bloom, le tonemapper… tout cela bénéficie de plus d’éléments pour le calcul et effectue donc un rendu de meilleur qualité.

Voici l’exemple ci-dessous de ce que cela représente :

1 – Upsample temporel activé; 2 – Sous-échantillon temporel désactivé

Pour que l’upsampling puisse donner de bons résultats, il faut que l’upsample puisse accéder à une meilleure résolution de texturage de l’objet – et cela, c’est le Mip Mapping, c’est à dire le fait que plus un objet est loin et petit, et plus on va utiliser une texture de petite résolution – tout cela est automatique bien entendu. Pour qu’un material puisse automatique switcher de résolution lors du TAAU, il faudra que cette case soit cochée:

Mais pour des textures dites « haute-fréquence », c’est à dire à changement rapide de contraste (comme le grillage ci-dessus), cela peut donner un effet de scintillement et il est alors recommandé de décocher cette case.

Ceci m’amène à vous parler du Secondary Spatial Upscale. Il est réalisé après la passe « TAAU ». On comprend mieux avec le schéma:

La résolution de tout ce qui suit la TAAU n’est pas obligatoirement cette qui sera utilisée au final. C’est une façon d’améliorer, mais en ayant un curseur…. plus on s’approche de la résolution d’affichage et plus l’effet sera joli, mais plus il sera couteux. Ainsi, le second Spatial Upscale intervient après le Tonemapper, juste avant l’UI.

A cela, il faudrait ajouter la densité de pixel pour la VR, mais je vous renvoie pour cela à cette page.

Le physical light units

Il s’agit de pouvoir gérer toutes les sources de lumières en utilisant des unités physiques (lumens et candelas) – certaines sources étaient bien définies, mais d’autres utilisaient des unités spécifiques à UE4. La compatibilité ascendante est assurée, mais désormais, ces caractéristiques physiques sont disponibles sur chaque source de lumière, ainsi que sur l’éclairage global de la scène.

Projet courtoisie de Litrix

MATÉRIAUX

Vous pouvez maintenant enregistrer les valeurs des paramètres dans une nouvelle instance enfant ou dans une nouvelle instance de fratrie dans l’éditeur de matériaux et dans l’éditeur d’instance de matériau!

« Save to Sibling Instance » permet d’enregistrer les paramètres et les remplacements actuels dans une nouvelle instance Material avec le même matériau parent.
Save to Child Instance dans l’instance enfant permet d’enregistrer les paramètres et les substitutions en cours dans une nouvelle instance de matériau prenant l’instance actuelle comme matériau parent.

Pour modifier les valeurs par défaut

Material Layering (supperposition de matériaux) (expérimental)

La superposition de matériaux permet de combiner les matériaux dans une pile, en utilisant les nouveaux assets Material Layer et Material Layer Blend! Cela permet de créer un graphe matériel correct sans faire manuellement des sections de nœuds. Cette fonctionnalité est similaire à Material Functions, mais prend en charge la création d’instances enfant.

Pour l’activer: Project Settings > Rendering > Experimental en définissant sur vrai Support Material Layers

ANIMATIONS, SEQUENCER

Améliorations du SEQUENCEUR

Il est désormais possible de copier / coller / dupliquer des pistes d’objet et leurs pistes enfants à partir du menu contextuel. Il est maintenant possible de copier d’une animation UMG à une autre.

Level Sequence Dynamic Transform Origin: Ceci permet de changer dynamiquement le World Offset, l’origine d’une animation dans le séquenceur et de pouvoir réutiliser des séquences dans d’autres espaces de coordonnées, dans une autre scène par exemple Pour activer cette possibilité, il faut activer « Override Instance Data then assign a Transform Origin Actor ».  Le fonctionnement est illustré dans cette courte vidéo;

Chaque fois que nous appuyons sur une touche (voir ci-dessus), le cube se déplace et notre actor continue de marcher le long d’un chemin, à partir de l’emplacement de l’actor d’origine de transformation.

Sequencer Anim BP Weight Control: le Sequencer weight blending fonctionne maintenant avec les Animations Blueprints. Vous pouvez utiliser le même emplacement pour l’animation et contrôler la taille par une courbe. Affectez le même Solt Name dans « Properties » pour chaque animation à fusionner. Puis effectuer un keyframe sur les valeurs de poids. Dans l’anim BP, utiliser le Slot Node. L’AnimBP utilisera toutes les valeurs de poids fournies lors de la fusion.

Compiler à la volée :  Sequencer est maintenant capable de compiler des modèles d’évaluation partiellement ou complètement périmés à partir des données sources, permettant une compilation beaucoup plus efficace.

VISAGES:  Amélioration du partage d’animations faciales en utilisant des Curve only animations

Le partage d’animations faciales a été simplifié. Il est possible d’animer les visages en utilisant une courbe et cela, sans avoir à faire une transformation du squelette. Il est donc possible d’utiliser une même animation faciale pour plusieurs personnages :

Pour y accéder, option « Remove All Bone Tracks » du menu Asset sousr Animation.

Le modificateur d’animations peut être utile pour supprimer certaines articulations afin de partager des animations de corps. L’ajout des fonctions Remove Bone Animation supprime une courbe d’animation par nom de la séquence d’animation donnée.

Amélioration des blueprints d’animation

  • Possibilité de contrôler si l’instance de post-traitement s’exécute ou non sur un composant de maillage squelettique à la fois dans Blueprints et dans la suite de l’éditeur d’animations
  • Le nœud copy pose prend maintenant en charge les courbes de copie ainsi que la transformation de bone – Pour utiliser cette option , il faut activer bCopyCurves, il va copier les courbes existantes dans le squelette actuel. Si la liste de courbes a changé, le système d’animation doit être réinitialisé.
  • Ajout d’un avertissement lors de la lecture d’une animation sur une pose additive: quand une animation non additive est connectée à la broche additive d’un noeud d’animation additif (comme Apply Additive), un avertissement s’affiche dans le journal des messages avec Animation et Nom du Blueprint.
  • Sélection Native AnimInstance sur SkeletalMeshComponent – Autorise les instances d’animation natives à être définies sur les composants maillés squelettiques. Auparavant, seuls les plans d’animation pouvaient être définis sur les composants de maillage squelettiques.

Amélioration des outils d’animation

  • Ajout de la liste de commandes Pinnable aux éditeurs d’animation: cela permet un accès plus facile aux commandes fréquemment utilisées. Les listes de commandes des éditeurs d’animations peuvent être attachées à la vue ;
  • Ajout de 4 fenêtres d’affichage distinctes à toutes les fenêtres de l’éditeur d’animations – chacune avec ses propres paramètres.
  • Ajout de la possibilité de s’accrocher et tourner autour d’un os en particulier
  • Informations supplémentaires sur le débogage des composants de maillage squelettique
  • Possibilité de changer la section visible d’un squelette à la volée: Exposed ShowMaterialSection
  • Possibilité de « Masquer les broches non connectées » pour les nœuds BreakStruct de bouton
  • Possibilité de nommer des formes de collision

PHYSIQUE ET PARTICULES

Anim Drive sur l’outil Cloth (VETEMENTS)

La nouvelle fonction « Anim Drive » ajoute un contrôle via les Blueprints pour créer des interactions avec la physique des vêtements, permettant ainsi, par exemple, de simuler des ressorts qui tirent les vêtements.

  • Prise en charge du contrôle de la gravité pour les simulations de vêtements – L’utilisation de l’interactor object sur un composant de maillage squelettique permet de spécifier une priorité de gravité arbitraire.
  • Ajout de la fonctionnalité de auto-range feature aux plages de vue de tissu – Ajout d’un moyen aux outils pour étendre ces plages si nécessaire
  • Visualisation de vêtements améliorée – activé lorsque le mode Peinture de vêtements est actif.
  • Le menu Clothing Create Menu utilise par défaut l’élément physique de maillage squelettique

PROGRAMMATION: BLUEPRINT ET C++

Mode Debug

Affichage de la pile d’appels (Call Stack) pour le débogage Blueprint

Un contrôle affichant la pile d’appels Blueprint actuelle a été ajouté au menu Outils de développement. Un double-clic sur les entrées de la pile d’appels focalise le nœud correspondant dans l’éditeur de plan.

Améliorations uniques du Blueprint Debugging
Le débogueur Blueprint du moteur prend désormais en charge les opérations Step Into (F11) , Step Over (F10) et Step Out (Alt + Maj + F11) lorsqu’il est arrêté via un Breakpoint, ce qui rend les sessions de débogage plus rapides et plus faciles.

Il est aussi maintenant possible des casser les liens avec les macros et les nœuds de graphe.

PAYSAGE / FOLIAGE / GÉNÉRATION PROCÉDURALE

RENDU DES PAYSAGES

Créez des panoramas à couper le souffle dans les grands mondes ouverts grâce aux optimisations du rendu Paysage.

Le rendu des paysages a été optimisé. Le niveau de détail (LOD) n’est plus basé sur la distance, mais sur la taille à l’écran pour déterminer les détails d’un composant, comme le fonctionnement du système LOD Stell Mesh.

Vous pouvez visualiser les LOD de paysage en allant dans Viewport> Visualizers> LOD

PROXY LOD
Un nouveau plugin (expérimental et uniquement sous Windows) de production de LOD Low Poly est intégré, il permet de produire des modèles avec peu de polygone, avec des matériaux précalculés pour chaque niveau de LOD. Cela offre une alternative « intégrée » à Simplygon dont nous avons déjà parlé.

Pour activer l’outil, sélectionner « Hierarchical LOD Mesh Simplification » sous Editeur dans la boîte de dialogue Paramètres du projet. À partir du plugin LOD Mesh Reduction Plugin, sélectionner le nouveau module « ProxyLODMeshReduction ». Après le redémarrage de l’éditeur invité, le plugin remplacera l’outil Simplygon tiers pour les LOD de fusion de maillage statiques. Ce nouveau plugin est accessible de deux façons: le HLOD Outliner et la boîte de dialogue Merge Actors.

SONS ET MUSIQUES

Mise à niveau vers Steam Audio Beta 10

  • Prise en charge Android pour la spatialisation et l’occlusion
  • Mode Editeur pour un accès facile à la fonctionnalité Steam Audio
  • Boutons pour ajouter et supprimer des composants de géométrie Phonon à tous les acteurs de maillage statique
  • Bouton pour exporter la scène vers .obj pour le débogage
  • Acteur Phonon Scène enlevé en faveur de l’exportation vers le fichier

Mises à jour audio Oculus (nouveau moteur audio uniquement)

En plus de fournir la spatialisation HRTF, la réverbération de modélisation de pièce d’Oculus Audio avec des paramètres volumétriques aussi bien que la lecture Ambisonics Source est dorénavant prise en charge.

Ajout du plugin audio Resonance (nouveau moteur audio uniquement)

Il prend en charge la spatialisation binaurale, la réverbération, la directivité sonore et la lecture ambisonique sur Windows, iOS, Android, Linux et Mac.

Prise en charge des fichiers Ambisonics de premier ordre (lecture prise en charge via les plugins)

Les fichiers Ambisonics peuvent maintenant être importés dans des projets Unreal et lus à l’aide de la sélection Spatialization plugins. First-Order Ambisonics est un format spherical surround. Ceci est utile pour la réalité virtuelle où les utilisateurs verront des changements dans les champs sonores verticaux en inclinant la tête ou pour toute autre expérience interactive où l’orientation de l’utilisateur permet des changements dans la verticale.

Améliorations apportées à l’implémentation VOIP native de UE4 (nouveau moteur audio uniquement)

meilleure cohérence, notamment une meilleure détection du silence sur Windows. L’intégration de sources VOIP dans la scène permet maintenant:

  • Spatialisation
  • Atténuation de distance
  • Reverb
  • Effets de source personnalisés

Tout est contrôlé à l’aide du composant de scène UVoipTalker.

Nouveau composant de capture de microphone (Nouveau moteur audio uniquement) (Windows uniquement)

Le composant de capture de microphone permet:

  • Alimentation audio directement dans le jeu à utiliser avec le mélangeur audio
  • Traitement audio avec effets de source ou effets de submixage.

Bien qu’il ne prenne pas en charge l’enregistrement des sorties micro directement sur les assets pour le moment, il existe des possibilités pour les développeurs de plugins tiers de tirer parti des données d’une entrée microphone.

RÉALITÉ VIRTUELLE ET AUGMENTÉE (VR/AR)

Un Framework unifié pour la REALITE AUGMENTEE

Vous savez que sur Android, l’utilisation de la RA passe par Google ARCore. Mais sur iOS, c’est ARKit d’Apple. Les deux frameworks se programment différemment et n’ont pas exactement les mêmes fonctions, ni le même comportement. De fait, on est heureux de pouvoir compter un framework unififé coté UE4 qui nous masque ces différences justement, et nous permet ainsi de développer des applis et des jeux en réalité augmentée qui vont tourner sur les deux environnements avec très peu de modifications.

L’ensemble des outils pour développer ce type d’application passe donc désormais par une librairie unique. Cela inclut les fonctions supportant l’alignement, les effets de lumière, le pinning, le tracking, etc.

Un nouveau template Blueprint HandheldAR a aussi été mis en place. Il fournit un exemple complet de projet démontrant les nouvelles fonctionnalités.

Il y a un livestream qui en parle, j’y reviendrai peut-être dans un prochain article ou une vidéo:

Les motion controllers

Live Link Motion Controller Assistance

Live Link peut maintenant être utilisé avec les Motion Controllers. La position du composant Motion Controller est gouvernée par la première transformation du sujet sélectionné dans Live Link. Il faut dériver un nouveau Blueprint à partir de MotionControllerComponent et de surcharger la fonction OnMotionControllerUpdated . Voici un exemple de façon possible de piloter une intensité de composants légers à partir d’un paramètre Intensité dans Live Link:

Visualisation des composants de Motion Controller
Les contrôleurs de mouvement ont maintenant une nouvelle visualisation afin de leur ajouter rapidement un modèle d’affichage Static Mesh. Par défaut, le système tente de charger un modèle de maillage statique correspondant au périphérique qui pilote le Motion Controller.

Support Vive Pro

Le contenu UE4 existant prenant en charge SteamVR est dorénavant compatible avec Vive Pro! Aucune modification n’est nécessaire pour utiliser le Vive Pro avec tout projet UE4 existant, mais il faut vérifier les performances de chaque projet UE4 avec le Vive Pro et optimiser en conséquence car le Vive Pro fonctionne à une résolution plus élevée.

INTELLIGENCE ARTIFICIELLE

MOBILES, CONSOLES ET HTML5

Résolution dynamique

La résolution dynamique pour consoles (PS4 et XBox One, autres dans une version ultérieure). Le principe reste simple, pour assurer un framerate, c’est à dire, un nombre d’images par secondes, fixe, la résolution des images est modifiée dynamiquement. On peut l’activer ou non via:

GEngine->GetDynamicResolutionState()->SetEnabled(true/false)

synchronisation de frame à faible latence

Toujours coté consoles( Xbox One et PS4), le mode de synchronisation de frame à faible latence modifie la façon dont la synchronisation des threads est effectuée entre le jeu, le rendu, les threads RHI et le GPU- ce qui permet de réduire la latence coté inputs.

Les effets de la synchronisation de trames à faible latence peuvent être contrôlés à l’aide de la variable de console r.GTSyncType. Cette variable autorise les valeurs suivantes:

  • 0 – Le thread du jeu se synchronise avec le thread de rendu (ancien comportement, et par défaut)
  • 1 – Le thread du jeu se synchronise avec le thread RHI (équivalent à UE4 avant le rendu parallèle)
  • 2 – Le fil du jeu se synchronise avec la chaîne d’échange présente +/- un décalage en millisecondes (disponible uniquement sur les plates-formes supportées, et ne fonctionne que si la synchronisation est activée)

SDK

Le moteur prend en charge les dernières mises à jour de SDK de tous les partenaires.

  • Version IDE 
    • Visual Studio:  Visual Studio 2015 mise à jour 3
    • Xcode:  Xcode 9.2
  • Android:  
    • NDK 12b (Le nouveau programme d’installation de CodeWorks pour Android 1r6u1 remplacera CodeWorks pour Android 1R5 avant la publication, toujours sur NDK 12b)
  • HTML5: chaîne d’outils emscripten à 1.37.19
  • LInux: v11_clang-5.0.0-centos7
  • Vapeur: 1.39
  • Durée des yeux: 1,17
  • SteamVR: 1.39
  • Commutateur: 3.7.0 avec NEX: 4.3.1 (facultatif), 4.5.0 avec NEX 4.3.1 (facultatif); Version du micrologiciel 3.0.1-1.0
  • PS4:
    • 5.008.071
    • Firmware Version 4.730.001
    • IDE pris en charge: Visual Studio 2015, Visual Studio 2013
  • Xbox One (XB1, XB1-S, XB1-X):
    • XDK: Juin 2017 QFE9
    • Version du firmware: octobre 2017 Preview 3 (version 16291.1000.170913-1900)
    • IDE pris en charge: Visual Studio 2017, Visual Studio 2015
  • macOS: SDK 10.13
  • iOS: SDK 11
  • tvOS: SDK 11

Ios: signature automatique de code 
La signature automatique de code (ACS) lors de l’utilisation de Xcode a été introduite. Cela fonctionne également quand il n’y a aucune disposition de mobile pré-installée sur le Mac mais le Mac doit contenir les certificats.

IMPORTS ET LOGICIELS TIERS

Live Link Maya

Diverses améliorations sur le système de live link, avec notamment des plugins live link Maya et plugin Motionbuilder.

Les modifications réalisées sous Maya sont ainsi directement visible sous l’éditeur UE4 comme en témoigne cette vidéo:

La fenêtre de l’interface utilisateur Maya Live Link peut être activée via la console MEL avec la commande MayaLiveLinkUUne fois activé, il faut copier les fichiers binaires associés à votre version de Maya dans le dossier Maya Plugins et l’activer via le gestionnaire de plugins Maya.

Stream Active Camera: Même les manipulations sur la caméra active sous Maya auront une incidence sur celle de l’éditeur. Certains bogues ont été également corrigés (concernant le rig facial par exemple).

Conclusion

Voilà, comme toujours, pas mal de nouveautés – des heures de tests en perspective et toujours un besoin important de continuer à s’autoformer dans le domaine. Vous trouverez plus d’informations comme toujours dans le thread d’origine. Je commence à me demander s’il ne serait pas intéressant de réaliser des ateliers de formation prenant en compte les principales évolutions de chaque version du moteur… dites-moi ce que vous en pensez en commentaires, mais ce serait une façon intéressante, à moindre frais, de se tenir vraiment à jour, car derrières le descriptif, il y a un savoir-faire à acquérir, et sans projet « sample », ce n’est pas toujours évident.

Découvrez nos derniers numéros !

0 commentaires

Laisser un commentaire

Ces articles pourraient aussi vous intéresser …