Outils du site

fr:godot_modelisation

Modélisation d’objets 3D pour le client Godot

WIP - Rédaction en cours — YannK 2019/10/09 10:43

Nous utilisons le logiciel Blender pour la modélisation, les captures d’écran et les indications sont fournies pour ce logiciel.

De nombreux termes techniques sont conservés en anglais, pour faciliter la recherche de documentation sur Internet, celle-ci étant presque exclusivement écrite dans cette langue.

Modélisation ''hard surface''

Nous envisageons de partir sur une chaîne de production de type medium poly : nous ne faisons qu’un objet, dont nous éditons les Normals afin de ne pas avoir à baker celles-ci depuis une version high-poly sur la version low-poly avec une topologie optimisée.

Pour l’instant, Godot ne les supportant pas encore (c’est prévu sur leur Roadmap toutefois), nous n’avons pas de Decals appliquées sur le modèle, mais c’est envisagé à terme afin de permettre l’ajout de détails.

Le but est d’employer des matériaux avec des textures standards dans le client, qui se déploient indépendamment des UV. Le dépliage des UVs ne servira qu’à calculer des effets, en se basant sur les textures de type Curvature et World Position map qui devront être fournies pour chaque objet. La définition de celles-ci sera à adapter en fonction de la taille de l’objet et il est possible qu’à terme les deux soient combinées en une seule image avec RGB pour la World Position map et Alpha pour la Curvature.

Modélisation de l’objet 3D

Organisation de la hiérarchie des objets

Le but est de conserver le plus possible l’objet éditable de façon non destructive, pour permettre à la fois la retouche aisée et l’adaptation à de nouvelles demandes, de nouvelles contraintes. Comme le client exigera des cartes graphiques récentes (Godot se basant sur OpenGL3, et en cours de portage sous Vulkan), il ne faut pas trop se compliquer la tâche avec le Vertex count. Supprimer les Edges redondants suffira, en ayant suffisamment de courbes pour soutenir la forme de l’objet à sa taille de rendu vu depuis 1 m ou 2.

Nous prendrons le modèle travel_box.blend du dépôt des sources d’assets comme base d’étude pour cet article.

Le modèle est organisé de façon hiérarchique claire : dans l’Outliner tous les éléments sont rassemblés dans une Collection au nom de l’asset. Il faut veiller à bien nommer aussi les Mesh Data Blocks pour être certain qu’on s’y retrouve, en leur donnant le même nom que l’objet en lui-même. En cas de partage du Data Block, cela évitera de se perdre.

Au sein de la Collection, les objets sont parentés entre eux pour faciliter le déplacement et la compréhension des blocs à éventuellement rendre animés dans le client. Ici nous avons le travel_box_lid qui est parenté au travel_box_bottom et chacun de leurs éléments parentés à ceux-ci afin de permettre d’ouvrir le couvercle de façon cohérente.

Si jamais vous avez utilisé des Booleans, des formes intermédiaires, ou tout autre objet qui ne doit pas être intégré au modèle final, veillez à les placer dans d’autres Collections, bien distinctes de celle qui porte le nom de l’asset à exporter.

L’usage des ''Modifiers''

Les objets ont leurs Modifiers non appliqués, pour permettre l’édition et la retouche ultérieures. N’hésitez pas à recourir le plus possible à ceux-ci, ils garantissent un workflow non destructif qui fait gagner beaucoup de temps.

Il est juste essentiel de placer en bas de la liste, soit en dernier à appliquer sur l’objet les trois Modifiers suivants (dans cet ordre) :

  • Generate > Bevel

Nous recommandons d’appliquer des Bevels, de façon à éviter les angles trop aigus irréalistes. Un seul segment suffit, de très petite ampleur (1mm est en général suffisant).

Peu importe la façon dont vous les appliquez. Sur le modèle, les grands blocs ont eu une Limit method de type Angle, de 25° chacun, et les serrures ont eu des ajustements de type Bevel Weight sur les segments concernés, avec donc une application de Limit method de type Weight.

  • Modify > Weighted normals

Une fois l’objet muni de ses Bevels, il faut faire en sorte que les Normales soient correctes au niveau des Faces. Nous allons donc appliquer les paramètres suivants : Weigthing Mode > Face Area, avec un Weight de 100. En général ces paramètres suffisent si les Bevels sont corrects.

Il faut penser à mettre l’objet en Shade Smooth et à activer dans l’Editor > Context > Object Data > Normal Maps : Auto Smooth. Couplé aux Bevels, cela permet d’avoir un objet dont les normals seront visuellement correctes. N’hésitez pas à jouer avec le Bevel weight des Edges qui posent souci si vous constatez des artefacts visuels.

Le but est d’avoir un objet en Solid view qui soit visuellement correct au niveau des angles et des reflets de plans. Vous pouvez appliquer une MatCap brillante le temps de vérifier que tout est ok, cela aide bien à pointer les défauts de Normals.

  • Generate > Triangulate

Vu que le moteur de jeu triangulera toutes les faces, il vaut mieux contrôler cette étape afin de s’assurer que les normals ne seront pas faussées. Le paramètre important à cocher est Keep Normals qui devrait garantir la consistance du résultat.

Baking des textures liées à fournir

Texturage de l’objet

Export vers le client Godot

Vérifier Scale et Rotation, à 0

fr/godot_modelisation.txt · Dernière modification: 2019/10/09 11:00 par YannK