Publié le

Comment l’équipe de Falcon Age a construit le compagnon animal mémorable de cette aventure PS VR

Découvrez en détail la genèse du faucon qui donne son titre au jeu

Dans Falcon Age, Ara doit former des liens, chasser, combattre et reprendre ses terres aux colonisateurs robotisés. Le jeu sort demain sur le PlayStation Store pour PS4 en version non-VR. Si vous disposez du PS VR, vous pourrez caresser un faucon en réalité virtuelle.

Nous avons passé beaucoup de temps à rendre l’apparence et le comportement du faucon conformes à ceux d’un oiseau de proie crédible. Penchons-nous en détail sur la conception du faucon, les animations, la configuration de l’ossature et les aspects techniques des plumes.

Conception du faucon

Pour créer notre femelle faucon, nous avons combiné plusieurs types de rapaces. Elle a la taille d’un aigle royal et combat comme un faucon. Sous ses airs d’aigle-faucon, son pelage possède des touffes de chouette, tandis que ses instincts sont ceux d’un faucon.

Elle fait partie des derniers représentants de son espèce et nous tenions à la doter de caractéristiques uniques dans le cadre de l’histoire, tout en la rendant visuellement distinctive en cours de partie par rapport au ciel et aux environnements désertiques.

L’une des premières sources d’inspiration de Falcon Age provient de vidéos d’aigles royaux chassant de grosses chèvres de montagne. Ces images nous ont incités à faire des recherches sur la fauconnerie et nous ont donné l’idée de transformer un faucon en animal de compagnie, puis de créer des mécanismes et un gameplay articulés autour de cette idée. Très tôt, nous avons conçu un prototype rudimentaire pour tester ces concepts.

La première fois qu’on a réussi à faire venir l’oiseau vers nous en sifflant en mode VR, et qu’on a vu le changement d’échelle entre son approche à distance et le moment où elle s’est posée sur notre main, nous étions fixés : ce principe pourrait servir de base à un jeu unique en son genre.

Animation et ossature

Suivi des pattes du faucon

Parmi les nombreuses options d’animation existantes, aucune ne permettait de résoudre facilement nos besoins spécifiques en matière de suivi des pattes du faucon. Les systèmes en cinématique inverse, le mouvement racine et d’autres applications complexes auraient pu gérer cette tâche si notre équipe avait été plus nombreuse et si nous avions eu plus de temps à y consacrer. Nous cherchions un résultat plus prévisible, ce qui nous a orientés vers une solution exploitant des poses multiples réalisées en 3ds Max.

Cependant, la raison qui nous a principalement dissuadés d’utiliser la cinématique inverse est que notre méthode était la meilleure solution qu’on ait trouvée en deux jours.

Nous élaborions le prototype tellement vite en début de projet que nous n’avions pas le temps d’étudier d’autres solutions. C’est la méthode la plus fiable et la moins laide que nous ayons trouvée et nous l’avons conservée depuis. Après tout, le mieux est l’ennemi du bien.

Voici comment nous avons imaginé le fonctionnement des serres dans la réalité. La sphère représente le poing lié au contrôle de mouvements en VR. Cette méthode présente certaines limites. Les serres doivent pouvoir se renfermer sur une assez grande partie du poing et la forme du poing doit être aussi sphérique que possible.

 

Explication rapide du fonctionnement : le poing est une sphère et les pattes de l’oiseau tournent autour de cette sphère en utilisant 30 poses de fusion et des animations progressives pour ramener les pattes au centre quand la balle (la main qui contrôle le mouvement) a trop tourné.

30 poses de fusion sur une sphère

 

L’animation progressive permet de recentrer les pattes

 

Les fusions recommencent après cette brève animation progressive, à partir de la nouvelle rotation de la main.

Notre programmeur Justin explique qu’il effectue des calculs mathématiques classiques, avec quaternions et algèbre linéaire. Ensuite, j’utilise les valeurs à trois chiffres après la virgule flottante qu’il me fournit et je les intègre à ces états de fusion d’animation.

Pour un bébé oiseau, la deuxième phalange de l’index est traitée comme une sphère.

 

L’une des situations extrêmes empêchant le fonctionnement du concept de sphère se présente quand le gant est orienté directement vers le bas. Voir illustration ci-dessous.

Il existait plusieurs façons de résoudre ce problème. L’une des solutions consistait à créer un système de collision sur la section du gant reliée à l’avant-bras et de faire s’envoler l’oiseau en cas de contact entre cette partie et le volatile. Nous avons finalement décidé de laisser les choses telles quelles. Cette méthode est plus conviviale pour les joueurs, car elle permet par exemple de se gratter la hanche gauche en mode VR sans provoquer l’envol de l’oiseau. Par ailleurs, la plupart des gens ne tiendront jamais leur main dans cette position lors d’une partie normale.

Sauf s’ils font le poirier. Toutes sortes de fonctionnalités d’animation sembleraient défectueuses ou mal conçues en position du poirier.

Suivi de la tête du faucon

 

Explication rapide du fonctionnement : la tête (bone_Head) est un enfant direct de l’objet le plus élevé dans la hiérarchie de l’ossature de l’oiseau (bone_Root).

La position de Bone_Root (pas la rotation) suit la position de la manette de détection de mouvements, tandis que bone_Head effectue l’inverse de ce geste. Pour simplifier, il s’agit d’une hiérarchie à deux objets où la fusion positionnelle est utilisée pour compenser le geste de l’objet parent, afin de conserver l’objet enfant dans la même position globale. Le reste du corps de l’oiseau utilise une fusion de 27 poses pour préserver au mieux l’apparence naturelle du volatile.

Vu la taille de l’oiseau adulte, une translation de 12 cm sur tous les axes (cube de 24x24x24) semblait idéale pour obtenir un effet de stabilisation sans trop étirer le cou. La tête se déplace également aux extrémités de ces dimensions et quand la main dirigeant les mouvements s’immobilise, cette position devient le nouveau centre, autour duquel un autre cube de 24 cm est établi.

Sur le plan mathématique, le verrouillage de la tête constitue essentiellement une transformation vectorielle, avec beaucoup d’éléments supplémentaires servant à limiter la vitesse, activer une transition et en sortir, et déplacer le point de verrouillage quand il s’éloigne trop du corps, alors que l’oiseau reste dans la zone.

 

Plumes et rendu

Les petites plumes du corps, ou plumes de contour, de nos oiseaux s’agitent au vent et réagissent aux caresses du joueur pour renforcer l’impression d’interactivité tactile. Pour faire bref, chaque petite plume de l’oiseau est traitée comme un ombrage d’herbe ou de végétation.

Plusieurs ondulations sinusoïdales superposées permettent de calculer un bruit élémentaire servant à agiter les plumes et leur donner un semblant de vie. Le timing est modulé par une valeur aléatoire pour chaque plume intégrée à la couleur du sommet et le mouvement de l’agitation est également mis à l’échelle à l’aide de la couleur du sommet. Cela signifie que la base des plumes ne bouge pas, au contraire des extrémités. Cela implique également que les plumes plus longues s’agitent plus que les plumes courtes.

Contrairement à la plupart des ombrages d’herbe, les plumes ne doivent pas s’agiter dans des directions aléatoires, ce qui nous empêche d’utiliser des directions d’espace local ou mondial. En outre, ces éléments sont placés sur un maillage d’ossature qui rend la direction encore plus dynamique.

Nous préférons donc utiliser une combinaison de caractéristiques normales et tangentielles du sommet de plumes pour imprimer aux plumes un mouvement d’avant en arrière et sur un axe latéral selon leur orientation. Ce mouvement ne correspond pas intégralement à la réalité, mais pour de petits déplacements de ce type, on ne perçoit pas d’erreur évidente.

Pour gérer les interactions de la main, nous avons défini un script régissant la main du joueur afin d’effectuer le suivi des os et de créer une liste de capsules suivant la forme de chaque doigt, ainsi qu’une sphère pour la paume.

Si la main est dans la zone de détection, l’ombrage de sommet se reproduit par itération sur la liste de capsules pour trouver la distance la plus courte vers l’une d’elles et atténue délicatement l’agitation si une capsule s’y superpose.

Les plumes sont également poussées contre le corps. La taille des capsules est exagérée, car les tests de superposition appliquent une tolérance importante. Il ne s’agit pas d’un modèle binaire d’activation/désactivation instantanée, mais d’un changement progressif. Le réglage étant assez brut, une fois que le doigt visible touche la plume, son mouvement cesse et elle est poussée vers le bas.

Voici un test de ce système en action, réalisé assez tôt dans le cycle de développement. Comme vous pourrez le constater, les plumes réagissent à la sphère avant de la toucher, mais l’interaction demeure convaincante.

 

Il s’agit d’un modeste échantillon du travail que nous effectuons pour renforcer l’authenticité des visuels de notre faucon. Nous espérons que vous aimerez caresser votre faucon, et l’habiller, puis partir à la chasse et au combat avec.

Qu'avez-vous pensé de cet article ?
Connectez-vous pour commenter
0 commentaires
0 réponses de l'auteur

Historique des modifications