Chaque joueur de mon jeu est généré de façon procédurale. Ce soir, j'ai commencé par le teint de peau.
- Rien n'est stocké dans la sauvegarde. Toute l'apparence d'un joueur est dérivée de son ID unique, donc le même footballeur a exactement la même tête sur toutes les machines, à chaque session, pour toujours.
- Neuf profils régionaux, pondérés selon une répartition approximative du football mondial, et chacun est une plage continue, pas un ensemble fixe de nuances. Pas deux joueurs n'ont le même teint.
- Sur les MetaHuman, la couleur de peau est intégrée à la texture, donc il n'y a pas de curseur de teinte. Je pilote plutôt l'étape d'ajustement post-bake du matériau, sur le corps et sur les quatre niveaux de détail du visage. Oubliez-en un, et le joueur change de couleur quand la caméra recule.
- Le même système génère déjà la couleur des cheveux, celle des yeux, la coiffure, la pilosité faciale, la taille et la carrure. La peau était simplement la première caractéristique reliée au mesh. Les morphs du visage arrivent ensuite : 24 blend shapes pour les pommettes, la mâchoire, le nez et les arcades.
Chaque caractéristique puise dans son propre flux aléatoire. Ça a l'air pointilleux, mais avec un seul flux partagé, ajouter un seul nouveau morph target décalerait le teint et les cheveux de tous les joueurs du jour au lendemain. Tout l'effectif aurait l'air d'inconnus, et ça ne ressemblerait même pas à un bug.
Grâce à la génération déterministe, je ne stocke jamais un visage. Juste l'ID dont il est issu. Une sauvegarde qui aurait dû contenir quarante mille visages n'en contient aucun, et la régénération est gratuite et survit aux changements de version.
Livré : apparence déterministe à partir de l'ID joueur · teint appliqué au corps + à tous les LOD du visage
Cet article a été traduit de l'anglais avec l'aide de l'IA. Lire l'original