La RT3D (l’affichage 3D temps réel, celui des jeux vidéos où tout est calculé au fur et à mesure avant d’être affiché) nécessite d’imposer quelques limites afin de ne pas trop surcharger la carte vidéo.
Et voilà une première pour moi : créer l’objet de mon choix tout en respectant un cahier des charges RT3D.
En l’occurrence, je devais m’en tenir aux points suivants :
- 1 seul objet d’une taille comprise entre 10 centimètres et 2 mètres ;
- cet objet devait être inanimé afin de ne pas créer de travail supplémentaire ;
- il pouvait ressembler à quelque chose de connu, mais ne devait pas en être une copie conforme ;
- Côté 3D, il ne devait pas faire plus de 5000 triangles ;
- le format 3D devait être .max .fbx ou .uasset ;
- 1 carte de texture de 1024*1024 pixels maximum ;
- 1 carte de normales de mêmes dimensions ;
- toutes les coordonnées UVW de l’objet devaient être enregistrées et valables.
Partant de ça, je me suis mis au travail… et vite aperçu que modéliser pour la RT3D est un travail fait de compromis permanents !
Quand on travaille tranquille dans son coin pour faire de l’image fixe pré-calculée, on se fout royalement du nombre de points/arêtes/polygones de nos créations, idem pour les textures qui peuvent peser un âne mort sans qu’on s’en soucie le moins du monde, le temps de calcul de l’image peut se mesure en minutes par image sans qu’on en ressente une particulière frustration, seule compte la qualité finale de l’image unique.
Sauf que, pour la RT3D, c’est plusieurs images qui doivent être calculées et affichées chaque seconde. Et ça, ça change grandement la donne.
J’ai jeté mon dévolu sur la boussole qui orne le bandeau du forum Myst Aventure :
Vu de plus près, les matières ressortent bien, les arêtes sont adoucies et accrochent la lumière, on sent bien le relief, bref c’était parfait pour une image fixe pas très grande :
Oui, mais,
- l’objet pèse un peu moins de 22 000 quadrangles,soit près de 44 000 triangles ;
- les images utilisées pour les différentes textures mesurent dans les 2 000 * 2 000 pixels et pèsent entre 3 et 13 méga-octets chacune ;
- certaines texture font appel aux matières procédurales de Cinema 4D ;
- il est composée d’une dizaine de sous-objets qu’il va falloir rassembler et fusionner ;
- certains détails ne sont pas super-beaux vus de près ;
- etc, etc, etc.
Pour passer ce modèle en RT3D, il va falloir rogner sur tout, et faire des compromis, plein. Et aussi apprendre des techniques que je ne pratiquais pas jusqu’ici, dont la conformation de textures. Ce dernier point risque d’être chaud, car bien qu’ayant suivi une formation by Maître Fluffy sur le sujet, je n’y entends toujours rien et BodyPaint me rebute autant qu’aux premiers jours.
Il était évident, par contre, que le résultat ne pourrait en aucun cas être aussi beau que l’original. Tout serait affaire d’arbitrage entre l’aspect visuel et le poids.
La démarche
À priori, ça paraissait assez simple :
- réduire et adapter le polycount de chaque sous-objet jusqu’à trouver le meilleur compromis visuel, tout en restant en dessous de 5000 triangles ;
- conformer les textures de chaque sous objet pour n’avoir qu’une texture « image » pour chacun d’eux ;
- rassembler et fusionner le tout en 1 seul objet ;
- exporter ensuite cet objet dans un des formats requis.
Première étape : comment réduire le polycount de plus de 43 000 à moins de 5 000 ?
J’ai commencé par regarder ce qui pesait le plus lourd et, sans surprise, les dents autour de la boussolle pesaient à elles seules plus que le budget total. Mais pas que. Les lettres des cardinaux aussi valaient leur pesant de pixels !
Pour le reste, pas de grosse inquiétude, ça restait (plus ou moins) raisonnable.
Les dents étaient bâties à partir d’1 cylindre à 80 côtés avec extrusion d’1 côté sur 2, le tout dans un HN. Si je voulais garder un peu de biseau sur les angles, 1 seule solution : réduire drastiquement leur nombre. De plus, elles s’avéraient peu esthétiques vues de près. La mod initiale se prêtant mal à ce genre d’opération, j’ai refait le maillage de A à Z en hard pour passer de 40 dents à 28 et de 17 000 à 900 triangles, c’est bien mais c’est déjà 17% du budget qui s’envolent…
Les lettres : là, pas moyen d’y échapper, les splines extrudées avec biseaux, c’est beau mais beaucoup trop lourd ! Une seule solution viable : supprimer purement et simplement ces maillages et intégrer les lettres directement dans le fichier matière du fond. Amaigrissement immédiat de 2 600 triangles à 0 ! C’est moins joli mais très efficace.
L’aiguille était constituée d’1 cylindre, de 2 cônes aplatis et d’1 hémisphère pour un poids de près de 2300 triangles.
Elle a été refaite pour descendre à 14 triangles, elles était plus jolie avant avec des biseaux qui accrochaient mieux la lumière, mais tant pis.
Le fond qui reçoit l’image de la rose des vents a peu maigri, passant d’un disque à 48 triangles à 1 plan 4 triangles. Les zones plates comme celle-ci sont faciles à fabriquer, ce sont les courbes et angles qui font grimper les polycounts.
Les vis ont été plus problématiques, maillage relativement dense et tout en courbes sur des zones petites. Comme le résultat final devait de toute façon être triangulé, j’ai opté pour :
- un booléen entre une demi-spère et un parallelépipède (le maillage résultant est souvent immonde, mais là, on s’en fout) ;
- nettoyage du maillage et fusion des triangles jusqu’à ce que le visuel se dégrade un peu en gros plan (et reste acceptable à moyenne distance) ;
- duplication à 7 exemplaires sur le pourtour du boîtier (7 car ça casse la symétrie et c’est, pour moi, plus joli à l’oeil et aussi parce que ça fait toujours 1 de moins que l’original) ;
- Fusion du tout en un seul objet.
Les pièces qui, finalement, m’ont posé le plus de problèmes sont le boîtier en fer rouillé, la bague en cuivre sertissant le verre et le verre lui-même. Les formes sont simples, là n’était pas le souci, mais faites de courbes très visibles. La réduction de segments de rotation de ces pièce faisait très vite apparaître leur facettage, leur donnant de suite un aspect anguleux des plus moches. J’ai tâtonné un bon moment pour trouver les bons compromis (72 segments et 680 triangles pour le boîtier, 50 segments et 900 triangles pour la bague, 72 segments et 730 triangles pour le verre).
Au final, la cure a été violente, efficace en terme de maillage 3D, mais aussi visuellement destructrice :
Restait à s’intéresser aux textures…
À suivre.
Il arrive quand l’épisode 2 ?
Tu fais ton Georges Lucas, à mettre 15 ans entre chaque épisode ?