lundi, novembre 28, 2022

BIG NEWS – Broken Roads : La création de la flore

Dans un nouveau journal de développement, Ryan Gee, artiste technique en VFX de Drop Bear Bytes nous explique comment a été créé la flore dans le RPG en vue isométrique Broken Roads.

f8202ff203b370063ed422f7e3a227409e0c6a8b |  RPG Jeuxvidéo

Broken Roads se déroulant dans une région australienne, nous savions qu’il était important de créer des environnements diversifiés et vivants pour immerger les joueurs dans une apocalypse à saveur australienne. L’Australie dispose d’une flore et d’une faune très variées selon les régions, dont beaucoup ne se trouvent nulle part ailleurs dans le monde. En tant qu’artiste technique en VFX de Drop Bear Bytes, l’une des parties les plus intéressantes de mon travail consiste à aider les équipes artistiques et de conception de niveaux à remplir notre monde apocalyptique d’arbres et de plantes.

En tant qu’artiste technique, je travaille dans le merveilleux domaine entre l’art pur, la programmation pure et l’art mystérieux du level design. L’un des défis immédiats auxquels nous avons été confrontés était de savoir comment remplir de vastes zones avec une végétation dense (sans avoir à placer chaque buisson et brindille à la main), et comment faire varier la végétation en fonction des différentes régions et zones du jeu. En tant que Canadien vivant actuellement en Espagne, je n’ai pas encore eu la chance de visiter l’Australie, alors je me suis lancé dans un road trip virtuel, grâce à Google Maps.

8beb65218e5177be06a3b2f03a3e4bcd716250db |  RPG Jeuxvidéo

Après avoir visité chacun des lieux réels des scènes du jeu, j’ai eu un bon aperçu de ce à quoi ressemblait la végétation de chaque zone. Armé de cela, j’ai pu faire quelques catégorisations des différents biomes et des plantes, arbres et broussailles typiques. Cependant, il y avait toujours le défi de remplir de grands environnements avec une végétation régionalement correcte, maintenant que je comprenais à quoi cela devrait ressembler.

Ma solution a été de créer un outil personnalisé, appelé de manière créative le Vegetation Tool™ (je ne suis pas le meilleur pour les noms créatifs). Il permet à notre concepteur de niveaux, Luke, de peindre la densité de la végétation dans la scène, puis de faire apparaître la végétation en fonction d’un biome prédéfini. Ces biomes sont constitués d’une liste de plantes, de détritus, d’herbes, de rochers, etc. adaptés à la région, ainsi que d’informations décrivant la façon dont ils poussent et sont dispersés. Cela crée un flux de travail et garantit que tout est éditable, réversible, et permet à l’équipe artistique de travailler dessus ou de modifier n’importe quel actif individuel sans que la conception de la végétation du niveau soit à refaire à chaque fois (il suffit de régénérer la végétation avec le biome mis à jour). Voici comment cela fonctionne en pratique :

Les cubes gris montrent la densité de la végétation peinte, qui peut être ajouté à la main ou selon un motif comme indiqué ci-dessus. L’outil de la vidéo utilise un biome vert assez dense, mais il peut être modifié ou remplacé par n’importe quel autre ensemble de biomes, et simplement régénéré.

Le processus de génération simule approximativement la densité des racines de chaque plante et la façon dont diverses plantes forment des touffes en conséquence, collectant de la terre, des débris et des brindilles autour d’elles. L’algorithme de génération peut également s’adapter à d’autres arbres ou objets qui ont été placés manuellement dans un niveau si un contrôle plus artistique est nécessaire sur leurs emplacements exacts.

La création de cet outil nous a permis de remplir rapidement les niveaux avec la végétation inégale et broussailleuse qui est commune à travers l’arrière-pays, et facilite le flux de travail entre la conception des niveaux et la production artistique. Cependant, placer la végétation n’est qu’une partie du processus : il fallait encore l’animer.

VENT

L’animation réaliste du vent s’est avérée être un défi, et la première version que j’ai proposée ressemblait à s’y méprendre à des algues ondulant sous l’eau. Cependant, nous avions besoin d’une animation suffisamment réaliste, personnalisable en fonction de l’environnement ou des besoins du jeu, et qui ne soit pas un trop gros casse-tête pour l’équipe artistique qui devait créer des modèles et des textures. En m’inspirant d’un exposé présenté à la Conférence GDC par Guerilla Games, j’ai mis au point le système actuel.

Tout d’abord, il y a un gestionnaire de vent global qui contrôle la direction et la force du vent dans chaque scène. Cela permet à chaque lieu d’avoir des paramètres différents, et à ces paramètres d’être modifiés si, par exemple, un tourbillon de poussière ou une tempête de sable survient au milieu de la quête. Vous trouverez ci-dessous un exemple de ce à quoi ressemble le vecteur vent primaire dans une scène :

Visualisation technique ou vous n’auriez pas dû faire confiance à ce vendeur de champignons ?

Les modèles d’arbre et de végétation ont également des informations intégrées dans leurs canaux de couleur de vertex : le canal rouge contient un masque, utilisé si nous animons du tissu ou autre chose que de la végétation ; le canal vert contient une valeur d’index pour chaque partie distincte de l’arbre, et le canal bleu contient une valeur pour la flexibilité globale. Ces paramètres sont rapides et faciles à appliquer à chaque modèle, et le reste de l’animation est réalisé dans un shader.

Le shader calcule la flexion, en fonction de la hauteur et de la flexibilité, ainsi que les mouvements fins détaillés pour les feuilles, les petites branches et l’herbe. La quantité de courbure est contrôlée par les paramètres globaux du vent et la texture, et décalée par l’indice dans le canal de couleur vert, pour donner aux parties individuelles de l’arbre leur propre balancement et mouvement non-uniforme.

HERBE

L’une des dernières étapes pour ajouter de la flore à nos environnements est l’ajout d’herbe. Cela a posé un défi similaire à celui de la création de végétation, car il fallait un système éditable qui puisse être facilement modifié, mais aussi rapide à rendre pour permettre des champs épais dans certaines des régions les plus luxuriantes du jeu. À cette fin, j’ai créé le Grass Tool™ pour peindre facilement de l’herbe dans les scènes, qui peut également être relié au Vegetation Tool™ pour générer automatiquement de l’herbe sur la base des mêmes paramètres de densité que le reste de l’environnement utilise. De plus, l’herbe peut être animée en utilisant les mêmes modèles de vent global que le reste de la végétation, ce qui permet de faire circuler des ondulations de vent dans les champs herbeux.

Non, je n’ai certainement pas passé des heures à dessiner des smileys avec, pourquoi demandez-vous ?

La partie difficile avec le rendu de l’herbe est qu’en substance, les GPU peuvent rendre beaucoup d’herbe, très très rapidement, mais le problème est que tout le reste de l’herbe (comme où elle se trouve, sa taille, sa rotation, etc.) passe par le CPU, et le faire parvenir au GPU est vraiment lent. Pour résoudre ce problème, l’herbe est rendue avec l’instanciation GPU, qui regroupe efficacement toutes les informations sur l’herbe dans un seul paquet au lieu d’un million de petites, et laisse le GPU faire ce qu’il fait le mieux et trier toutes les informations pour chaque fragment d’herbe.

Pour le rendre encore plus rapide, nous pouvons utiliser une technique appelée CPU binning (les artistes techniques ont un jargon très amusant). Cela nous permet de limiter la taille du paquet que le CPU transmet au GPU (au lieu de transmettre des informations sur chaque morceau d’herbe dans une scène) en devinant approximativement ce que la caméra peut voir à un moment donné. Cela nous permet d’avoir des centaines de milliers de cartes d’herbe dans une scène avec un impact minimal sur les performances….

Killpower
Killpower
Administrateur de RPG jeux vidéo. Très vieux Joueur depuis le siècle dernier. Testeur et rédacteur depuis 1999 de RPG, même les pires. Relecteur de traductions de nombreux RPG vidéo. Ancien président de RPGFrance, et ancien rédacteur de Dagon's Lair.
S’abonner
Notifier de
guest
0 Commentaires
Inline Feedbacks
View all comments
0
Envie de laisser un commentaire ? x