Introduction à la 3D

La création d’un jeu en 3D peut s’avérer difficile. Cette coordonnée Z supplémentaire fait que beaucoup des techniques courantes qui ont contribué à rendre les jeux 2D simples ne fonctionnent plus. Pour faciliter cette transition, il convient de mentionner que Godot utilise des API similaires pour la 2D et la 3D. La plupart des nœuds sont les mêmes et sont présents dans les versions 2D et 3D. En fait, cela vaut la peine de consulter le tutoriel sur le plateformer 3D, ou les tutoriels sur les personnages cinématiques 3D , qui sont presque identiques à leurs équivalents 2D.

En 3D, les mathématiques sont un peu plus complexes qu’en 2D, consulter l’entrée Vector math dans le wiki (qui a été spécialement créé pour les développeurs de jeux, pas pour les mathématiciens ou les ingénieurs) vous aidera à développer des jeux 3D efficacement.

Nœud spatial

ref:Node2D <class_Node2D> est le nœud de base pour la 2D. ref:Control <class_Control> est le nœud de base pour tout ce qui est GUI. Suivant ce raisonnement, le moteur 3D utilise le nœud Spatial pour tout ce qui est 3D.

../../_images/tuto_3d1.png

Les nœuds spatiaux ont une transformation locale, qui est relative au nœud parent (tant que le nœud parent est également de ou hérite du type Spatial). Cette transformation est accessible sous la forme d’une transformation 4x3 Transform, ou 3 Vector3 membres représentant la position, la rotation d’Euler (angles x,y et z) et l’échelle.

../../_images/tuto_3d2.png

Contenu 3D

Contrairement à la 2D, où le chargement du contenu de l’image et le dessin est simple, la 3D est un peu plus difficile. Le contenu doit être créé avec des outils 3D spéciaux (généralement appelés DCC) et exporté vers un format de fichier d’échange afin d’être importé dans Godot (les formats 3D ne sont pas aussi standardisés que les images).

Modèles créés par DCC

Il y a deux façons pour importer des modèles 3D dans Godot. La première et la plus courante est par Importation de scènes 3D, qui vous permet d’importer des scènes entières (telles qu’elles apparaissent dans le DCC), y compris des animations, des squelettages, des formes de mélange, etc.

La seconde façon est l’importation de fichiers.OBJ simples comme ressources de maillage, qui peuvent ensuite être placés dans un nœud MeshInstance pour affichage.

Géométrie générée

Il est possible de créer une géométrie personnalisée en utilisant directement la ressource ArrayMesh. Créez simplement vos tableaux et utilisez la fonction ArrayMesh.add_surface_from_arrays(). Une classe d’aide est également disponible, SurfaceTool, qui fournit une API et des aides plus simples pour indexer, générer des normales, des tangentes, etc.

Dans tous les cas, cette méthode est destinée à générer de la géométrie statique (modèles qui ne seront pas souvent mis à jour), car la création de tableaux de sommets et leur soumission à l’API 3D a un coût de performance significatif.

Géométrie immédiate

Si, à la place, il est nécessaire de générer une géométrie simple qui sera souvent mise à jour, Godot fournit un nœud spécial, ImmediateGeometry, qui fournit une API de style OpenGL 1.x en mode immédiat pour créer des points, lignes, triangles, etc.

2D en 3D

Alors que Godot dispose d’un puissant moteur 2D, de nombreux types de jeux utilisent la 2D dans un environnement 3D. En utilisant une caméra fixe (orthogonale ou en perspective) qui ne tourne pas, des nœuds tels que Sprite3D et AnimatedSprite3D peuvent être utilisés pour créer des jeux 2D qui tirent avantage du mélange avec des fonds 3D, d’une parallaxe plus réaliste, des effets de lumière / d’ombre, etc.

L’inconvénient est, bien sûr, la complexité et les performances réduites par rapport à la 2D simple, ainsi que le manque de référence de travail en pixels.

Environnement

Outre l’édition d’une scène, il est souvent fréquent d’éditer l’environnement. Godot fournit un nœud WorldEnvironment qui permet de changer la couleur de fond, le mode (comme dans, mettre une skybox), et appliquer plusieurs types d’effets post-traitement intégrés. Les environnements peuvent également être remplacées dans la caméra.

Fenêtre d’affichage 3D

L’édition des scènes 3D se fait dans l’onglet 3D. Cet onglet peut être sélectionné manuellement, mais il sera automatiquement activé lorsqu’un nœud spatial est sélectionné.

../../_images/tuto_3d3.png

Les contrôles de navigation de scène 3D par défaut sont similaires à ceux de Blender (visant à avoir une certaine cohérence dans le pipeline du logiciel libre…), mais des options sont incluses pour personnaliser les boutons de la souris et le comportement pour être similaire aux autres outils dans les paramètres de l’éditeur :

../../_images/tuto_3d4.png

Système de coordonnées

Godot utilise le système métrique pour tout. La physique 3D et d’autres domaines sont réglés pour cela, donc essayer d’utiliser une échelle différente est généralement une mauvaise idée (sauf si vous savez ce que vous faites).

Lorsque vous travaillez avec des ressources 3D, il est toujours préférable de travailler à la bonne échelle (réglez votre DCC sur métrique). Godot permet la mise à l’échelle post-importation et, bien que cela fonctionne dans la plupart des cas, dans de rares cas, il peut introduire des problèmes de précision en virgule flottante (et donc, des défauts ou artefacts) dans des zones délicates, comme le rendu ou la physique, alors assurez-vous que vos artistes travaillent toujours dans la bonne échelle !

La coordonnée Y est utilisée pour « haut », bien que pour la plupart des objets qui ont besoin d’être alignés (comme les lumières, les caméras, le collisionneur de capsules, les véhicules, etc.), l’axe Z est utilisé comme une direction « pointant vers ». Cette convention signifie en gros :

  • X est les côtés
  • Y est haut/bas
  • Z est avant/arrière

Espace et gadgets de manipulation

Le déplacement des objets dans la vue 3D se fait à l’aide des gadgets de manipulation. Chaque axe est représenté par une couleur : Rouge, Vert, Bleu représentent X,Y,Z respectivement. Cette convention s’applique également à la grille et aux autres gadgets (ainsi qu’au langage shader, à l’ordre des composants pour Vector3, Color, etc.).

../../_images/tuto_3d5.png

Quelques raccourcis clavier utiles :

  • To snap placement or rotation, press the « Ctrl » key while moving, scaling or rotating.
  • Pour centrer la vue sur l’objet sélectionné, appuyez sur la touche « f ».

Menu affichage

Les options d’affichage sont contrôlées par le menu « Affichage » dans la barre d’outils de la fenêtre d’affichage.

../../_images/tuto_3d6.png

Vous pouvez masquer les gadgets dans la vue 3D de l’éditeur via ce menu :

../../_images/tuto_3d6_1.png

Pour masquer un type spécifique de gadgets, vous pouvez les désactiver dans le menu « Affichage ».

../../_images/tuto_3d6_2.png

Environnement par défaut

Lorsqu’il est créé à partir du gestionnaire de projet, l’environnement 3D possède un ciel par défaut.

../../_images/tuto_3d8.png

Étant donné le fonctionnement du rendu physique, il est conseillé de toujours essayer de travailler avec un environnement par défaut afin de fournir une lumière indirecte et réfléchie à vos objets.

Caméras

Quel que soit le nombre d’objets placés dans l’espace 3D, rien ne sera affiché à moins qu’une Camera ne soit également ajoutée à la scène. Les caméras peuvent fonctionner dans des projections orthogonales ou perspective :

../../_images/tuto_3d10.png

Les caméras sont associées à une vue parent ou grand-parent (et ne s’affichent que dans cette vue). Comme la racine de l’arborescence de la scène est une fenêtre d’affichage, les caméras s’y affichent par défaut, mais si des fenêtres secondaires (en tant que cible de rendu ou image dans l’image) sont souhaitées, elles ont besoin de leurs propres caméras enfants pour les afficher.

../../_images/tuto_3d11.png

Lorsque vous avez affaire à plusieurs caméras, les règles suivantes s’appliquent à chaque fenêtre d’affichage :

  • Si aucune caméra n’est présente dans l’arbre de scène, la première qui y entre deviendra la caméra active. Les autres caméras entrant dans la scène seront ignorées (à moins qu’elles ne soient réglées sur current).
  • Si une caméra possède la propriété « current », elle sera utilisée indépendamment de toute autre caméra de la scène. Si la propriété est définie, elle devient active et remplace la caméra précédente.
  • Si une caméra active quitte l’arbre de scène, la première caméra en ordre arborescent prendra sa place.

Lumières

Il n’y a pas de limitation sur le nombre de lumières, ni sur les types de lumières, dans Godot. On peut en ajouter autant qu’on le souhaite (tant que les performances le permettent).