Les jeux en 3D qui fonctionnent bien sur le plus grand nombre d'appareils commencent par des graphismes en 3D conçus pour exploiter au mieux les processeurs graphiques. Ce guide présente les optimisations et les bonnes pratiques à suivre pour les assets 3D sur mobile afin d'améliorer les performances de votre jeu et de réduire la consommation d'énergie.
Définition de la géométrie
La géométrie, ou maillage polygonal, est un ensemble de sommets, d'arêtes et de faces qui forment un objet 3D. Il peut s'agir d'une voiture, d'une arme, d'un environnement, d'un personnage ou de tout autre élément visuel d'un jeu.
Figure 1. Sommets, arêtes et triangles d'un cube.
La géométrie est constituée des éléments suivants :
Vertices (Sommets) : points définissant la structure d'un objet dans l'espace 3D.
Edges (Arêtes) : deux sommets reliés par une ligne droite.
Triangle : trois sommets reliés entre eux par trois arêtes forment un triangle. On parle parfois de polygone ou de face. Dans les logiciels 3D tels que 3ds Max, Maya ou Blender, vous travaillez généralement avec des quads. Les quads sont des polygones à quatre côtés qui sont plus faciles à modifier et à utiliser. Lors de leur rendu, ces polygones sont représentés à l'écran sous forme de triangles.
Consultez les sections suivantes pour en savoir plus sur la géométrie :
Utilisation des triangles et des polygones
Cette section présente les bonnes pratiques à suivre lors de l'utilisation de triangles et de polygones. Elle comprend les recommandations suivantes :
- Réduire le nombre de triangles
- Utiliser des triangles dans les zones importantes
- Supprimer les microtriangles
- Éviter les triangles longs et fins
Réduire le nombre de triangles
Si vous incluez trop de triangles, les performances du jeu en pâtiront.
Utilisez le moins de triangles possibles. Nous vous conseillons d'en utiliser juste assez pour obtenir la qualité souhaitée. Lorsque vous créez du contenu pour un jeu mobile, pensez à l'impact sur les performances. Le traitement des sommets est coûteux. Moins il y a de sommets, meilleures sont les performances globales du jeu. En outre, moins vous utilisez de triangles, moins le jeu nécessite de puissance en termes de GPU et plus l'éventail des appareils sur lesquels il peut s'exécuter est large.
L'image suivante montre que vous pouvez réduire le nombre de triangles tout en maintenant la qualité :
Figure 2. Comparaison de deux objets constitués d'un nombre de triangles différent et qui ont la même apparence en mode ombré. Dans l'objet de gauche, les arêtes qui ne contribuent pas à la silhouette ont été supprimées.
Sur les plates-formes mobiles, le nombre maximal de sommets d'un maillage individuel est généralement de 65 535. Pour garantir une compatibilité maximale, vous devez rester en dessous de ce nombre.
Cette limite est due au fait que les GPU ne sont compatibles qu'avec les index 16 bits, qui peuvent représenter une plage de 0 à 65 535 sommets. La plupart des GPU modernes, mais pas tous, sont compatibles avec les index 32 bits, qui représentent une plage de 0 à 4 294 967 295 sommets. Si vous dépassez la plage acceptée lorsque vous utilisez des index 16 bits, des problèmes de rendu de la géométrie se produisent.
Visualisez et testez toujours le jeu sur les appareils auxquels vous le destinez plutôt que sur un écran d'ordinateur. Certains modèles au niveau de détail élevé peuvent ne pas s'afficher correctement ou peuvent même être totalement invisibles sur un appareil mobile.
Nous vous recommandons d'utiliser plus de triangles sur les objets de premier plan et moins sur les objets d'arrière-plan. Les jeux offrant un point de vue de caméra statique sont ceux qui bénéficient le plus de cette adaptation du nombre de triangles. L'exemple suivant montre une utilisation appropriée des détails sur différents objets.
Figure 3. Cet exemple montre le niveau élevé de détail des objets de premier plan par rapport aux objets d'arrière-plan.
Le nombre maximal de triangles à utiliser pour un modèle dépend de l'appareil et du contenu. S'il y a d'autres objets à l'écran, utilisez moins de triangles pour chaque modèle. S'il n'y a que deux ou trois objets, ceux-ci peuvent inclure plus de triangles.
L'exemple suivant montre deux modèles issus de démos différentes. La démo Circuit VR ne comporte qu'un seul robot. Comme il n'y a qu'un seul objet, le modèle de robot utilise un nombre de triangles élevé. L'autre modèle provient de la démo Armies. Chacune des images de cette démo contient des centaines de soldats, par conséquent chaque soldat utilise un nombre limité de triangles.
Figure 4. Comparaison du nombre de triangles dans deux cas d'utilisation différents. À gauche, le robot Circuit VR comporte 11 000 triangles. À droite, le soldat Armies en comporte 360.
Exemple d'utilisation de triangles
L'illustration suivante indique le nombre de triangles utilisés dans la démo technique Armies.
Dans la démo Armies, qui est une démo technique pour mobile de 64 bits créée dans Unity, la caméra est statique avec de nombreux personnages animés. Au total, chaque image restitue environ 210 000 triangles. Ce nombre de triangles permet à la démo de s'exécuter de manière stable à environ 30 images par seconde (FPS).
Figure 5. Exemple de rendu de la démo technique The Armies qui indique le nombre de triangles utilisés.
Les plus gros objets de la scène, les tours à canon, comportent environ 3 000 triangles, car ils occupent une grande partie de l'écran.
Les personnages utilisent environ 360 triangles chacun. Comme ils sont très nombreux et qu'ils ne sont vus que de loin, ils n'utilisent pas beaucoup de triangles, ce qui convient au point de vue de la caméra.
Figure 6. Vue des soldats constitués d'un nombre limité de triangles dans la démo technique Armies.
Utiliser des triangles dans les zones importantes
Les sommets sont très coûteux sur les plates-formes mobiles. Pour préserver votre budget de traitement, placez les sommets dans des zones qui contribuent à la qualité visuelle du jeu. Les petits détails d'un objet 3D peuvent ne pas être visibles sur l'écran final du jeu. Les tous petits détails peuvent être invisibles en raison de la petite taille de l'écran et de l'emplacement des objets 3D.
Au lieu de vous concentrer sur des détails précis, privilégiez les formes les plus grandes qui dessinent la silhouette. L'image suivante est un exemple d'accent mis sur la silhouette :
Figure 7. Le contour rouge autour du robot représente sa silhouette.
Nous vous recommandons d'utiliser moins de triangles dans les zones rarement visibles du point de vue de la caméra (par exemple, le bas d'une voiture ou le dos d'une armoire). Si une partie d'un objet n'a jamais vocation à être vue, supprimez-la.
Toute suppression d'une partie d'un objet doit être effectuée avec précaution, car elle peut limiter la possibilité de réutilisation de l'objet. Par exemple, en cas de suppression de la partie inférieure du maillage d'une table, l'utilisateur remarquera la section supprimée s'il retourne la table.
Ne modélisez pas les petits détails avec des maillages triangulaires à haute densité. Pour les détails les plus fins, utilisez des textures et des cartes de normales. L'exemple suivant montre le même maillage avec et sans carte de normales.
Figure 8. Comparaison d'un modèle avec et sans application d'une carte de normales.
Supprimer les microtriangles
Les microtriangles sont de tous petits triangles qui ne contribuent pas à l'aspect visuel final d'une scène.
Tous les objets 3D constitués d'un grand nombre de polygones sont confrontés à des problèmes de microtriangles lorsqu'ils sont éloignés de la caméra. Il n'existe aucune définition officielle, mais le terme "microtriangles" désigne généralement les triangles de moins de 1 à 10 pixels contenus dans l'image finale. L'utilisation de microtriangles est déconseillée, car le GPU doit tous les traiter, même s'ils ne contribuent pas au rendu de l'image finale.
Les microtriangles sont dus à deux facteurs :
- Détails trop petits et constitués de nombreux triangles
- Objets éloignés de la caméra et constitués de nombreux triangles
Figure 9. Effet de la distance sur les microtriangles.
Dans la figure 9, le robot situé au premier plan ne comporte pas de microtriangles, contrairement au robot situé à l'arrière-plan, sachant que chaque triangle ne fait que 1 à 10 pixels.
Figure 10. Comparaison des microtriangles sur des modèles ultra détaillés. La plupart des triangles de l'encadré sont trop petits pour être visibles sur les écrans de téléphone.
Pour un objet éloigné de la caméra, utilisez le niveau de détail (LOD). Cela permet de réduire la complexité de l'objet et de le simplifier. Le résultat est un objet moins dense en termes de triangles.
Ne modélisez pas les détails constitués de nombreux triangles. Pour ce type de détails fins, utilisez des textures et des cartes de normales. Vous pouvez fusionner les sommets et les détails des triangles qui sont trop petits et ne contribuent pas au rendu de l'image finale.
Il est important de réduire le nombre de microtriangles, car ils peuvent affecter la bande passante de la mémoire. Plus le nombre de triangles est élevé, plus le volume de données à envoyer au GPU est important. Sur un appareil mobile, cela peut nuire à l'autonomie de la batterie. Une consommation d'énergie accrue peut entraîner un étranglement thermique et limiter les performances maximales du GPU.
Éviter les triangles longs et fins
Il s'agit de triangles qui, au moment de leur rendu dans l'image finale, sont inférieurs à 10 pixels dans une dimension et s'étendent sur une grande partie de l'écran. Les triangles longs et fins sont généralement plus coûteux à traiter que les autres triangles.
Dans l'illustration ci-dessous, le biseau du pilier comporte un triangle long et fin lorsqu'il est vu de loin. Ces biseaux ne sont pas un problème vus de près.
Figure 11. Le biseau du pilier est un triangle long et fin.
Dans la mesure du possible, nous vous recommandons de supprimer les triangles longs et fins de tous les objets.
Sur les objets brillants, les triangles longs et fins peuvent provoquer des scintillements lorsque la caméra se déplace. Le niveau de détail (LOD) permet de supprimer les triangles longs et fins lorsqu'un objet est éloigné de la caméra.
Si possible, essayez d'obtenir des triangles équilatéraux ou qui s'en rapprochent. Cela confère aux triangles plus de surface et moins d'arête. Les triangles longs et fins sont généralement moins performants que les triangles de plus grande taille. Pour en savoir plus sur la surface des triangles, consultez Triangulation.
Niveau de détail
Le terme "niveau de détail (LOD)" fait référence à une technique qui réduit la complexité à mesure que les objets s'éloignent de l'observateur. La forme la plus courante de LOD implique plusieurs versions d'un maillage, avec des sommets de moins en moins nombreux. Le LOD permet non seulement de réduire le nombre de sommets à traiter, mais aussi d'éviter le problème des microtriangles. Le rendu est également plus esthétique pour les objets placés plus loin dans la scène.
Dans la mesure du possible, nous vous recommandons d'utiliser le LOD. Concentrez-vous sur la silhouette de l'objet. Il est préférable de se concentrer sur les surfaces planes à cibler pour la réduction des sommets. L'image suivante illustre l'utilisation du LOD sur un modèle de robot.
Figure 12. Comparaison du nombre de sommets utilisés lorsque le LOD change.
Sur la figure 12, il est difficile de voir de loin la différence entre le même objet constitué de 200 ou 2 000 triangles. Un objet constitué d'un grand nombre de triangles est plus coûteux en termes de ressources, mais son apparence n'est pas meilleure lorsqu'il est vu de loin.
Figure 13. Comparaison de modèles éloignés constitués d'un nombre différent de triangles.
Le concept de LOD s'applique également à la complexité des nuanceurs et à la résolution des textures. À un niveau LOD inférieur, différents matériaux peuvent être utilisés avec des nuanceurs plus simples et moins de textures. Vous devez également vous assurer que les textures comportent des mipmaps, afin que des niveaux de texture de résolution inférieure soient appliqués aux objets éloignés. Ces mesures amélioreront les performances, avec pour contrepartie une augmentation de la taille de vos données.
Nous vous recommandons de ne pas utiliser le LOD pour les jeux dans lesquels la caméra et les objets sont statiques. Le LOD est surtout intéressant pour les objets qui se rapprochent et s'éloignent de la caméra. Il ne présente aucun avantage pour les objets statiques puisqu'ils ne se déplacent pas.
Figure 14. Scène de caméra statique de la démo technique Armies qui n'utilise pas le LOD.
Ratios de LOD
Utilisez un ratio cohérent lorsque vous réduisez le nombre de triangles pour le LOD. Nous vous recommandons de réduire le nombre de triangles de 50 % par niveau.
N'utilisez pas le LOD sur des objets simples. Les objets comportant déjà un nombre de triangles réduit ne tirent aucun bénéfice du LOD. L'exemple suivant, extrait de la démo technique The Armies montre à quoi ressemble le jeu avec une image statique et des objets constitués d'un nombre réduit de triangles.
Figure 15. Comparaison entre les modèles à mesure que le LOD diminue.
Vérifiez que les niveaux LOD changent en fonction des distances appropriées de la caméra. Basez votre analyse sur la façon dont ils sont utilisés dans le jeu.
Figure 16. Comparaison de l'apparence d'un modèle 3D LOD de près et à la distance prévue.
Il n'existe pas de chiffre précis sur le nombre idéal de niveaux LOD à appliquer à un objet. Cela dépend de la taille de l'objet et de son importance. Par exemple, un personnage dans un jeu d'action ou une voiture dans un jeu de course peut comporter plus de niveaux LOD qu'un petit objet d'arrière-plan comme un arbre.
N'oubliez pas que plus le nombre de niveaux LOD est élevé, plus le traitement par le processeur est coûteux. Le processeur a besoin d'une puissance de traitement supérieure pour déterminer quel LOD afficher. Les LOD ont également un coût en termes de mémoire, ce qui augmente la taille des fichiers et l'utilisation de la VRAM. La création et la vérification des modèles LOD prennent également plus de temps.
Il existe deux façons de créer des maillages LOD : manuellement et automatiquement.
- Vous pouvez créer manuellement des maillages LOD avec n'importe quel logiciel 3D.
- Pour ce faire, supprimez les boucles d'arêtes ou réduisez le nombre de sommets sur l'objet 3D.
- Cette méthode permet au concepteur de bénéficier d'un maximum de contrôle sur le produit final, mais elle peut prendre plus de temps.
- Les maillages LOD peuvent être créés automatiquement.
- Vous pouvez utiliser un modificateur dans un package 3D, comme ProOptimizer dans 3ds Max ou Generate LOD Meshes dans Maya.
- Vous pouvez utiliser un logiciel de génération de LOD tel que Simplygon ou InstaLOD.
- Certains moteurs de jeu disposent d'une fonctionnalité de génération automatique de LOD qui permet de créer et d'appliquer des maillages LOD.
Bonnes pratiques
D'autres techniques permettent de réduire les ressources nécessaires à votre jeu tout en préservant la fidélité graphique.
Groupes de lissage ou normales de sommet personnalisées
Utilisez des groupes de lissage ou des normales de sommet personnalisées pour définir la dureté d'une arête et modifier l'apparence d'un modèle. Un groupe de lissage permet de créer un ombrage plus convaincant sur une direction artistique low poly. Un groupe de lissage affecte également le fractionnement des îlots UV et la qualité des cartes de normales lors du processus de baking.
Figure 17. Comparaison d'un modèle avec et sans groupe de lissage.
Si vous implémentez un groupe de lissage sur un modèle 3D, celui-ci doit être exporté à partir du logiciel 3D et importé dans le moteur.
Topologie du maillage
Lorsque vous créez un composant 3D, assurez-vous que sa topologie est bien ordonnée. Une topologie propre est essentielle pour les personnages et autres objets qui s'animent et changent. La topologie n'a pas besoin d'être parfaite. N'oubliez pas que les utilisateurs finaux ne verront pas la maquette fonctionnelle, et que les textures et les matériaux auront un impact plus important sur l'apparence du modèle.
Figure 18. Topologie, maquette fonctionnelle et version finale d'un rocher de la démo technique Armies.
Exagération des formes
Vous pouvez exagérer certaines formes pour faciliter l'interprétation de vos modèles. Tout dépend du type et du style de votre jeu. Comme les écrans des appareils mobiles sont petits, il peut être difficile de capturer certaines formes de très petite taille. L'exagération de ces formes peut aider les utilisateurs à les voir, même de loin.
Par exemple, vous pouvez créer des personnages avec de grandes mains pour qu'ils soient plus faciles à voir.
Figure 19. Exemple de modèle aux proportions exagérées pour une meilleure visibilité.