I. Introduction▲
Jonathan Lindquist (technical artist à Epic Games) revient sur la création des animations pour le jeu Fortnite.
II. Vidéo▲
GDC 2013 - Le fonctionnement des animations procédurales de Fortnite
III. Résumé▲
Fortnite est un jeu d'action, coopératif, comprenant des mécanismes de construction. Dans cette conférence, Jonathan explique le fonctionnement de :
- l'effet de rebond (lorsque l'on détruit un objet) ;
- l'effet d'apparition/disparition des objets dans le champ de la caméra ;
- l'effet de construction des bâtiments.
III-A. Effet de rebond▲
Le but est d'obtenir un effet amusant, permettant d'indiquer au joueur qu'il détruit un objet.
Pour cela, lorsque le joueur touche un objet, l'endroit de l'impact et son vecteur sont envoyés au vertex shader. Une distance est calculée entre le point (dans l'espace monde) de l'impact et la position du sommet, puis divisée par un rayon (pour que l'effet diminue en s'éloignant du point d'impact). Enfin, le résultat est multiplié avec le vecteur d'impact afin de produire la déformation. Cette dernière est animée par Unreal Engine.
III-B. Apparition/disparition progressive des objets▲
Le but est d'avoir une animation d'apparition lorsque la caméra s'approche d'un objet : le monde se construit devant les yeux du joueur.
L'opération consiste à réaliser une simple mise à l'échelle. Elle est effectuée directement dans le vertex shader, afin d'éviter le coûteux calcul des matrices de transformation par le CPU (et ce pour tous les objets). Le shader n'a besoin que de l'information de distance avec la caméra pour mettre en place l'effet.
III-C. Construction des bâtiments▲
Pour pousser les joueurs à construire des bâtiments, l'animation de construction doit être amusante à regarder. Dans Fortnite, les bâtiments se construisent progressivement devant le joueur : chaque élément du bâtiment va sortir du sol et se placer à sa position finale dans la construction.
Aussi, l'état de construction doit être le reflet de la santé du bâtiment. Chaque fois que des dégâts sont infligés, il faut que certains éléments du mur tombent.
Finalement, il faut que les effets soient optimisés car les bâtiments sont nombreux dans le jeu.
III-C-1. Mise en place▲
La problématique, c'est qu'il faut traiter plusieurs modèles comme un seul, car l'animation s'applique à l'intégralité du bâtiment.
Pour cela, il est nécessaire de préparer les données à travers un script pour Autodesk 3ds Max afin que le moteur ait les données nécessaires à l'animation :
- un tableau de modèles afin d'avoir l'ordre de construction des objets ;
- une indication pour savoir si le modèle doit venir de la gauche ou de la droite ;
- la position du pivot ;
- un axe de rotation ;
- le nombre d'objets ;
- une valeur aléatoire.
Lors de la création d'un tel script, sachez que :
- vous devez éviter tout processus inutile (comblez exactement le besoin des artistes) ;
- vous devez faire en sorte que le débogage soit simple ;
- les valeurs UV sont imprécises ;
- vous devez optimiser l'agencement des données.
III-C-2. Animation▲
La première transformation appliquée est une simple translation sur l'axe Y pour faire sortir le modèle du sol. La deuxième déplace les objets sur l'axe X, pour les faire sortir de leur structure. Ensuite, en utilisant le point pivot et le centre du bâtiment il est possible d'éloigner un objet de son centre.
De plus, une rotation de chaque objet est effectuée. Finalement, une déformation est ajoutée à chaque objet pour donner un aspect plus cartoon. Pour cela, la distance est calculée entre le sommet et le point de pivot.
Lorsqu'un objet est retiré (après avoir subi des dégâts), il est masqué.
IV. Conclusion▲
Effectuer les animations grâce au vertex shader est efficace en termes de performance, par contre, les collisions ne sont pas mises à jour. Aussi, les normales sont mises à jour automatiquement.
V. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.