Synchronisation labiale des animations avec le plugin Wwise Meter

Programmation audio / Contenu sonore pour les jeux vidéo

Introduction

Ceci est le dernier article d'une série de trois articles techniques de Jater (Ruohao) Xu, dans lesquels il partage le travail réalisé pour Reverse Collapse : Code Name Bakery.

  • Vous pouvez consulter le premier article ici, dans lequel il explore l'utilisation de Wwise pour contrôler les cinématiques du jeu.
  • Vous pouvez consulter le deuxième article ici, dans lequel il explique comment la vue en 2D inclinée du jeu a nécessité un système audio 3D personnalisé pour résoudre des défis uniques liés à l'atténuation.

Synchronisation labiale des animations avec le plugin Wwise Meter

Série d'articles techniques | Partie 3

Il existe de nombreux éléments et moments dans le jeu où la mécanique est pilotée par l’audio. Grâce au plugin Wwise Meter, nous pouvons obtenir en temps réel des données audio précises pouvant être ensuite transmises au moteur de jeu pour alimenter différents systèmes audio.

Comme dans beaucoup d'autres jeux utilisant un style anime, Reverse Collapse comporte de riches dialogues narratifs ; bien que certains soient déclenchés durant les combats, la majorité se déroule dans des séquences narratives en 2D où deux personnages, placés à gauche et à droite de l'écran, interagissent à travers des dialogues de type question-réponse.

img1

L'image ci-dessus illustre un exemple de système narratif en 2D dans le jeu, où le personnage de Mendo est en train de parler au moment où la capture d'écran a été faite. Lorsque le personnage parle, une animation labiale est déclenchée sur ses sprites. Cette fonctionnalité est pilotée par les données de volume audio récupérées via Wwise.

Le jeu peut synchroniser l'animation labiale avec la parole en utilisant les données de volume audio, ce qui améliore l'immersion et renforce le réalisme des interactions entre les personnages. Cette méthode enrichit l’expérience narrative, la rendant plus captivante pour les joueurs.

Pour récupérer les données de volume en temps réel, le plugin Wwise Meter (Wwise Meter (audiokinetic.com)) a été utilisé. Il s’agit d’un outil simple d’utilisation et très performant, permettant de transmettre les données audio de Wwise vers le moteur de jeu. L’image ci-dessous montre la configuration de Wwise Meter sur notre bus de voix principal.

img2

img3

Dans le plugin Wwise Meter, nous avons associé un RTPC nommé Speech_MeteringData qui nous sert à transmettre les données au moteur de jeu. Ce RTPC collecte les informations relatives au volume de sortie des voix déclenchées dans le jeu. Sa valeur varie entre -48 et 0, ce qui représente l’étendue de volume audio. Même si la valeur peut théoriquement dépasser 0 en cas d’écrêtage du volume, c’est une situation qu’il est en général recommandé d’éviter en mixage où il est préférable de maintenir la valeur en dessous de 0.

Avec cette configuration, nous pouvons capturer et transmettre précisément les données de volume audio au moteur de jeu, de manière contrôlée, facilitant ainsi l’implémentation de diverses mécaniques de jeu.

Voilà qui conclut la configuration côté Wwise. Pour exploiter ces données côté moteur de jeu, il suffit d’ajouter quelques lignes de code pour détecter le niveau de volume et transformer cette valeur en donnée exploitable par notre système d’animation. Le code d’animation ci-dessous est volontairement simplifié, car chaque jeu possède ses propres systèmes d’animation ou peut utiliser des plugins différents.

Dans notre jeu, le système d’animation est assez simple : la bouche du personnage n’a que deux états, Open (ouverte) et Closed (fermée), et nous pouvons donc simplement utiliser une opération ternaire conditionnelle pour déterminer si la bouche du personnage doit être ouverte, et l’animer en conséquence. (Voir les paragraphes ci-dessus pour l’implémentation de GetGlobalRTPC())

bool bIsCharacterMouthOpen = (GetGlobalRTPC(“Speech_MeteringData”) > -48.0f  && GetGlobalRTPC(“Speech_MeteringData”) <= 0) ? true : false;

Dans de nombreux autres jeux, notamment en 3D, les personnages peuvent posséder des articulations et des os dans leur squelette 3D ; il est alors possible d’ajuster l’angle de l’articulation utilisée par l’animateur pour ouvrir la bouche. Cet angle est généralement exprimé par une valeur flottante. Dans cet exemple, imaginons que cette valeur puisse être appliquée avec speakingCharacter.SetMouthOpenness(float mouthJointAngle) ; l’angle minimum et maximum d’ouverture de la bouche s’étend de 0 degré à speakingCharacter.MaxMouthOpenness() degrés.

Dans ce cas, nous allons créer une petite fonction utilitaire pour extraire la valeur de sortie du modificateur de paramètre et l’utiliser directement dans les zones où cette fonctionnalité est requise.

public float GetGlobalRTPC(string rtpcName)
{
    int rtpcType = 1;
    float acquiredRtpcValue = float.MaxValue;
    AkSoundEngine.GetRTPCValue(rtpcName, null, 0, out acquiredRtpcValue, ref rtpcType);

    if(acquiredRtpcValue >= 0.25 && acquiredRtpcValue <= 16)
    {
        return acquiredRtpcValue;
    }
    else
    {
        return 1.0f;
    }
}

Outre la définition globale du RTPC, la fonction ci-dessus garantit également que, si des valeurs incorrectes sont détectées, elle ignorera l’application du RTPC et réinitialisera la valeur à 1.0f, ce qui correspond à la valeur par défaut.

Dans ce cas, nous pouvons améliorer le code précédent en utilisant la fonction suivante :

public float SetMouthOpenessByWwiseAudio()
{
    float mouthOpennessToSet = 0.0f;
    float retrievedMeteringRTPCvalue = GetGlobalRTPC(“Speech_MeteringData”);

    if (retrievedMeteringRTPCvalue > -48.0f && retrievedMeteringRTPCvalue <= 0)
    {
        mouthOpennessToSet = speakingCharacter.MaxMouthOpenness() * Normalization(retrievedMeteringRTPCvalue, -48.0f, 0.0f));
    }

    speakingCharacter.SetMouthOpenness(mouthOpennessToSet);
}

En effet, la fonction fournie ajustera précisément l’ouverture de la bouche en fonction des données de volume audio reçues du plugin Wwise Meter. Cela garantit que l’animation de la bouche reste fidèle et synchronisée avec le volume audio.

Avertissement : Les extraits de code utilisés dans cet article sont des versions génériques reconstituées et destinées uniquement à des fins d'illustration. La logique sous-jacente a été vérifiée pour fonctionner correctement, les appels et fonctions API spécifiques au projet ont été omis des exemples en raison de restrictions potentielles en matière de droits d’auteur.

Ruohao (Jater) Xu

Programmeur audio, Concepteur Sonore Technique

Ruohao (Jater) Xu

Programmeur audio, Concepteur Sonore Technique

Jater Xu est un programmeur audio expérimenté et un concepteur sonore technique spécialisé dans les solutions audio interactives avec intégration de Wwise dans Unreal et Unity à l'aide de C++, blueprint et C#. Son travail est à l'origine des paysages sonores immersifs de jeux reconnus tels que Homeworld 3, The Chant et Reverse Collapse.

Commentaires

Laisser une réponse

Votre adresse électronique ne sera pas publiée.

Plus d'articles

WAAPI pour Wwise 2023.1

Wwise 2023.1 constitue la plus importante mise à jour de l'API de création Wwise (WAAPI) depuis...

1.8.2023 - Par Bernard Rodrigue

Assassin's Creed Valhalla | Système de musique de type Sandbox

L'élaboration de la musique d'Assassin's Creed Valhalla a constitué un travail colossal. Il...

24.4.2024 - Par Alexandre Poirier

Derrière le son de Psychonauts 2

Psychonauts 2 est un jeu de plates-formes/aventure passionnant qui suit l'histoire de Raz à la suite...

30.8.2024 - Par Double Fine

Récapitulatif des sessions de l'Audiokinetic Theater | GDC 2024

Cela a été un honneur incroyable d'accueillir tous les professionnels de l'audio venus présenter...

12.3.2025 - Par Audiokinetic

Star Wars Jedi : Survivor | Questions-réponses avec l'équipe audio

Star Wars Jedi : Survivor est un jeu d'action-aventure intergalactique à la troisième personne,...

18.6.2025 - Par Respawn Entertainment

Workflow d'implémentation de Spatial Audio de Wwise dans Scars Above

De quoi parle cet article ?Qu'est-ce que l'API Spatial Audio ?Flux de travail avec l'API Spatial...

17.9.2025 - Par Milan Antić

Plus d'articles

WAAPI pour Wwise 2023.1

Wwise 2023.1 constitue la plus importante mise à jour de l'API de création Wwise (WAAPI) depuis...

Assassin's Creed Valhalla | Système de musique de type Sandbox

L'élaboration de la musique d'Assassin's Creed Valhalla a constitué un travail colossal. Il...

Derrière le son de Psychonauts 2

Psychonauts 2 est un jeu de plates-formes/aventure passionnant qui suit l'histoire de Raz à la suite...