Création du visage d'un personnage pour le jeu "OnAir"

Bon après-midi Je m'appelle Daria, je suis artiste 3D dans le studio de production RainStyle. Nous développons actuellement un jeu d'horreur de science-fiction appelé «On Air» .

image

Le jeu raconte des événements mystérieux survenus avec le personnage principal, qui a accidentellement séjourné à l'hôtel américain Algol. Cet incident changera complètement sa vie et le fera affronter l'inconnu.

Il s'agit de notre premier projet de jeu et nous essayons d'atteindre le réalisme maximal des personnages, de transmettre leurs émotions et leur caractère. Par conséquent, pour les créer, il a été décidé d'utiliser la technologie de numérisation faciale. Dans le cadre des objectifs du projet, nous avons besoin de deux degrés de détail pour les personnages: pour le rendu - pour les cinématiques et le low poly - pour une utilisation dans le jeu lui-même.

Le jeu On Air est en cours de développement sur l'Unreal Engine 4. Nous prévoyons d'écrire plusieurs articles dans lesquels nous décrirons en détail les étapes de la préparation des personnages.

Pour le moment, nous créons une version de démonstration du jeu, qui apparaîtra bientôt dans Steam. Dans cet article, je parlerai de la phase initiale de création du visage du personnage principal de notre jeu.

image

Partie 1


L'image ci-dessous montre certaines des émotions que nous avons reçues après le traitement des numérisations.

image

Fondamentalement, ils sont exagérés et ne semblent pas réalistes. Cela a été fait exprès. Le fait est que la base de cette méthode de création d'un visage est le principe du mélange des formes «Formes de mélange». Autrement dit, chacune de ces émotions sera appliquée non pas sous une forme «pure», mais en combinaison avec d'autres. J'en parlerai plus à la fin de l'article. Tout d'abord, vous devez savoir quoi faire avec la tête numérisée et comment nous pouvons l'utiliser. Évidemment, la topologie de l'analyse ne permet pas de l'utiliser comme modèle, mais en préparant la carte normale, nous obtenons les principales caractéristiques du visage, des rides, des pores, des bosses ou des cicatrices. De la numérisation, nous pouvons également extraire la texture de la couleur de base.

image

Le programme Wrap 3.3 nous y aidera. Il est largement utilisé pour traiter les modèles numérisés. Avec son aide, nous projetterons notre futur modèle de tête sur des scans.

2e partie


Vous devez d'abord créer ce que l'on appelle le maillage de base. C'est-à-dire une expression faciale neutre qui sous-tendra toutes les émotions. Notre scan des émotions neutres ressemble à ceci:

image

Le programme Wrap 3.3 possède un système de nœuds, c'est-à-dire que toutes les fonctions sont présentées sous la forme de nœuds (nœuds) reliés entre eux par une chaîne.

La sélection des nœuds s'effectue à l'aide de la touche Tab. À l'aide des nœuds LoadGeom et LoadImage, un scan avec une émotion neutre et sa texture correspondante sont chargés. Pour ce faire, spécifiez le chemin d'accès dans la fenêtre Noms de fichiers. Dans les paramètres du nœud «LoadGeom», vous pouvez sélectionner différents modes d'affichage de la géométrie (la fonction filaire est désactivée dans l'image ci-dessous). Ici, vous pouvez également changer la couleur de la géométrie (ne fonctionne pas si la texture est connectée), les coordonnées et l'échelle.

image

Ensuite, vous devez charger le maillage de base, qui sera projeté sur ce scan. Vous pouvez le trouver sur l'onglet «Galerie». Voici de nombreuses émotions toutes faites. Dans ce cas, je choisis Basemesh.

image

Basemesh doit être à peu près assorti à un scan. Pour ce faire, vous pouvez utiliser l'axe des coordonnées.

Pour projeter le maillage de base sur le scan, j'utilise le nœud Wrapping. Lorsque vous passez la souris sur les nœuds du nœud, une info-bulle s'affiche: le premier nœud, Géométrie flottante - pour la géométrie projetée, le deuxième nœud, Géométrie Fixet - pour l'objet fixe sur lequel la géométrie sera projetée (dans notre cas, il s'agit d'un scan avec une émotion neutre).

image

Pour commencer le calcul, il est nécessaire de marquer sur les deux modèles les points qui correspondront l'un à l'autre. Pour cela, le nœud Select points est utilisé, qui est connecté aux nœuds correspondants des modèles. Après avoir sélectionné ce nœud, accédez à l'onglet Visual Editor. La fonction Sync vues incluse vous permet de synchroniser les caméras pour les fenêtres gauche et droite.

image

Si le modèle projeté contient des polygones qui doivent rester en place, vous devez les sélectionner à l'aide de la fonction Sélectionner des polygones. Sinon, des artefacts peuvent apparaître associés aux détails internes du maillage.

image

Pour utiliser le nœud Sélectionner des polygones, utilisez l'onglet Visual Editor. Ici, vous pouvez sélectionner les polygones que les modèles de la galerie sont divisés en polygroupes, cela simplifie la tâche: ils peuvent être sélectionnés ou désélectionnés dans le panneau supérieur.

Je souligne les parties internes de la gorge, des narines, des paupières extrêmes et du bas du cou.

image

image

Après cela, le modèle sera projeté correctement.

image

De plus, pour plus de granularité, vous pouvez utiliser le nœud Subdivide. Il se connecte au maillage de base et tous les nœuds ci-dessous sont connectés à son nœud inférieur (sortie).

image

Ensuite, faites cuire la texture du scan au maillage de base. Pour cela, le nœud Transférer la texture est utilisé. Le noeud Géométrie source se connecte au modèle avec lequel la texture va cuire. Dans notre cas, il s'agit d'un scan. Le nœud de géométrie cible est connecté au maillage de base, mais pas au nœud LoadGeom, mais au nœud d'habillage, car nous utiliserons la géométrie projetée déjà modifiée.

image

Dans les paramètres de ce nœud, vous pouvez sélectionner la qualité de la texture cuite. Après cela, vous devez ajouter le nœud Extrapoler l'image pour remplir les endroits transparents et enregistrer la texture résultante à l'aide du nœud Enregistrer l'image et en appuyant sur le bouton Calculer l'image actuelle. La géométrie est enregistrée de la même manière à l'aide du nœud Save Geom.

image

3e partie


Après avoir obtenu une émotion et une texture neutres, nous pouvons passer à l'obtention d'une géométrie pour d'autres émotions. Pour ce faire, chargez le modèle de numérisation et Basemesh avec des textures.

image

Ensuite, vous devez aligner Basemesh en fonction du scan. Pour commencer, vous pouvez comparer les modèles approximativement en utilisant des axes de coordonnées.

image

Un nœud qui vous permet d'aligner plus précisément les modèles les uns par rapport aux autres - Alignement rigide. Le nœud Géométrie flottante connecte la géométrie qui doit être alignée. Dans le noeud Géométrie fixe, respectivement, il y aura une géométrie statique (dans notre cas, il s'agit d'un scan).

image

Lorsque vous utilisez le nœud d'alignement rigide, vous devez utiliser le nœud Sélectionner des points:

image

Mon modèle possède des marqueurs de contrôle qui simplifient la tâche de sélection des points. Pour aligner les modèles les uns par rapport aux autres, des points doivent être placés sur les parties du visage qui changent légèrement lorsqu'elles représentent une émotion particulière. Dans le cas de cette émotion, il s'agit du front, de la partie supérieure du nez, du cou, etc. En outre, il est conseillé de placer des points de tous les côtés du modèle (c'est-à-dire, par exemple, non seulement sur le visage, mais également à l'arrière de la tête et des oreilles).

image

En conséquence, nous obtenons des modèles alignés les uns par rapport aux autres:

image

Dans les paramètres du nœud d'alignement rigide, il existe une fonction «Match skale». Il est utilisé si les modèles doivent également être mis à l'échelle.

Après cela, vous pouvez commencer à projeter le maillage de base sur le scan. Pour cela, nous utiliserons le nœud Optical Flow Wrapping. Il vous permet d'aligner la géométrie en fonction de la texture du scan. Dans le même temps, la texture résultante des émotions coïncidera complètement avec la texture du maillage de base, à l'exception des rides, des rides et d'autres changements. Toutes les irrégularités de la peau et des pores lors de l'utilisation de cette méthode restent en place.

image

Avant d'utiliser le flux optique, comme dans le premier cas, le nœud Select Polygons est utilisé:

image

Ainsi, les parties fixes de la tête resteront en place.

Vous pouvez également utiliser le nœud Sélectionner des points. Voici les points sur les parties mobiles du visage:

image

Ensuite, accédez aux paramètres de flux optique. Des caméras pouvant être ajustées sont apparues dans la fenêtre de Visual Editor autour du modèle.

image

En haut, il y a un menu déroulant avec lequel vous pouvez accéder à la vue depuis la caméra. Il y en a 13. Par défaut, vous devez les régler pour que le visage s'insère complètement dans le cadre.

image

Sur la recommandation des développeurs, je laisse presque tous les réglages par défaut à l'exception des paramètres finaux Résolution finale et Lissage du flux optique:

image

Après cela, vous pouvez cliquer sur Calculer et voir le résultat:

image

Une fois le maillage projeté exactement sur le scan, vous devez cuire la texture. cela se fait selon le même principe que dans la première partie de l'article:

image

Par conséquent, si vous combinez la texture résultante avec la texture du maillage de base, certains détails seront ajoutés, mais en même temps, les points de contrôle coïncideront:

image

Après cela, la texture et la géométrie résultante peuvent être enregistrées.

image

En conséquence, nous avons obtenu un maillage d'une nouvelle émotion avec une texture.

Partie 4


La méthode des formes Blend vous permet de «mélanger les émotions». Pour ce faire, chargez les maillages déjà reçus dans le nœud Formes de fusion.

image

J'ai chargé l'émotion neutre dans le premier nœud. En déplaçant les curseurs dans les paramètres du nœud, vous pouvez choisir la force à laquelle telle ou telle émotion sera exprimée. Pour que cette méthode fonctionne, les modèles doivent avoir la même topologie.

image

image

Résultat


Le processus ci-dessus n'est qu'une petite partie d'un travail très volumineux. Après avoir reçu les modèles de tête LowPoly, il était nécessaire de créer des cartes normales, de la rugosité, du sous-sol, etc., ainsi que de configurer le shader (dans notre cas, nous avons configuré le shader pour le rendu et pour le moteur). Les yeux, les vêtements et les cheveux ont également été créés séparément. Il convient également de noter que seules trois personnes ont effectué cette tâche. C'était notre première expérience dans la création d'un personnage très détaillé. Nous étions satisfaits du résultat, mais nous nous efforcerons d'en faire plus.

image

Source: https://habr.com/ru/post/fr471288/


All Articles