CSG

CSG est l’abréviation de Constructive Solid Geometry, et est un outil permettant de combiner des formes de base ou des maillages personnalisés pour créer des formes plus complexes. Dans les logiciels de modélisation 3D, le CSG est surtout connu sous le nom d” « opérateurs booléens ».

Le prototypage de niveau est l’une des principales utilisations du CSG dans Godot. Cette technique permet aux utilisateurs de créer des versions simples des formes les plus courantes en combinant des primitives. Les environnements intérieurs peuvent être créés en utilisant des primitives inversées.

../../_images/csg.gif

Introduction aux nœuds CSG

Comme les autres fonctionnalités de Godot, CSG est supporté sous forme de nœuds. Ce sont les nœuds CSG :

  • CSGBox
  • CSGCylinder (supporte aussi les cônes)
  • CSGSphere
  • CSGTorus
  • CSGPolygon
  • CSGMesh
  • CSGCombiner
../../_images/csg_nodes.png ../../_images/csg_mesh.png

Fonctionnalités des outils CSG

Chaque nœud CSG supporte 3 types d’opérations booléennes :

  • Union: La géométrie des deux primitives est fusionnée, la géométrie croisée est supprimée.
  • Intersection: Seule la géométrie d’intersection est conservée, le reste est supprimé.
  • Subtraction: La deuxième forme est soustraite de la première, laissant une bosse avec sa forme.
../../_images/csg_operation_menu.png ../../_images/csg_operation.png

CSGPolygon

Le nœud CSGPolygon extrude le long d’un polygone dessiné en 2D (en coordonnées X,Y) de la manière suivante :

  • Depth: Extrusion d’une quantité donnée.
  • Spin: Extrudée en tournant autour de son origine.
  • Path: Extrudé le long d’un nœud de chemin. Cette opération est communément appelée lofting.
../../_images/csg_poly_mode.png ../../_images/csg_poly.png

Note

Le mode Path doit être muni d’un nœud Chemin pour fonctionner. Dans le nœud Path, tracez le chemin et le polygone dans CSGPolygon sera extrudé le long du chemin donné.

Maillages personnalisés

N’importe quel mesh peut être utilisé pour CSGMesh ; le mesh peut être modélisé dans d’autres logiciels et importé dans Godot. Plusieurs matériaux sont pris en charge. Il y a quelques restrictions pour la géométrie :

  • Il doit-être fermer,
  • il ne doit pas s’auto-intersecter,
  • il ne doit pas contenir de faces internes,
  • chaque bord ne doit être relié qu’à deux autres faces.
../../_images/csg_custom_mesh.png

CSGCombiner

Le nœud CSGCombiner est une forme vide utilisée pour l’organisation. Il ne combinera que les nœuds enfants.

Ordre de traitement

Chaque nœud CSG traitera d’abord ses nœuds enfants et leurs opérations : union, intersection ou soustraction, dans l’ordre arborescence, et les appliquera à lui-même les unes après les autres.

Note

Dans un souci de performance, assurez-vous que la géométrie CSG reste relativement simple, car les mailles complexes peuvent prendre un certain temps à traiter. Si vous ajoutez des objets ensembles (tels qu’une table et d’autres objets trouvés régulièrement dans une pièce), créez-les comme des arbres CSG séparés. Forcer trop d’objets dans un même arbre finira par affecter les performances. N’utilisez des opérations binaires que là où vous en avez réellement besoin.

Prototypage d’un niveau

Nous allons prototyper une pièce pour pratiquer l’utilisation des outils du CSG.

Astuce

Travailler en projection Orthogonal donne une meilleure vue en combinant les formes CSG.

Notre niveau contiendra ces objets :

  • une pièce,
  • un lit,
  • une lampe,
  • un bureau,
  • une bibliothèque.

Créez une scène avec un nœud spatial comme nœud racine.

Astuce

L’éclairage par défaut de l’environnement n’offre pas un ombrage précis sous certains angles. Modifiez le mode d’affichage à l’aide de Display Overdraw dans le menu de la fenêtre 3D, ou ajoutez un nœud DirectionalLight pour vous aider à voir clairement.

../../_images/csg_overdraw.png

Créez une CSGBox et nommez-la room, activez Invert Faces et modifiez les dimensions de votre pièce.

../../_images/csg_room.png ../../_images/csg_room_invert.png

Ensuite, créez un CSGCombiner et nommez-le ``desk”“.

Un bureau a une surface et 4 pieds :

  • Créez 1 nœud enfant CSGBox en mode Union pour la surface et ajustez les dimensions.
  • Créez 4 nœuds enfants CSGBox en mode Union pour les jambes et ajustez les dimensions.

Ajustez leur emplacement pour ressembler à un bureau.

../../_images/csg_desk.png

Note

Les nœuds CSG à l’intérieur d’un CSGCombiner ne traiteront leur fonctionnement qu’à l’intérieur du combiner. Par conséquent, les CSGCombiners sont utilisés pour organiser les nœuds CSG.

Créez un CSGCombiner et nommez-le « lit ».

Notre lit se compose de 3 parties : le lit, le matelas et un oreiller. Créez une CSGBox et ajustez sa dimension pour le lit. Créez une autre CSGBox et ajustez sa dimension pour le matelas.

../../_images/csg_bed_mat.png

Nous allons créer un autre CSGCombiner appelé pillow comme enfant de bed. L’arbre de scène devrait ressembler à ceci :

../../_images/csg_bed_tree.png

Nous allons combiner 3 nœuds CSGSphere en mode Union pour former un oreiller. Mettre à l’échelle l’axe Y des sphères et activer Smooth Faces.

../../_images/csg_pillow_smooth.png

Sélectionnez le nœud  » oreiller  » et passez en mode Subtraction ; les sphères combinées perceront un trou dans le matelas.

../../_images/csg_pillow_hole.png

Essayez de reparenter le nœud pillow au nœud racine Spatial ; le trou disparaîtra.

Note

Il s’agit d’illustrer l’effet de l’ordre de traitement du CSG. Étant donné que le nœud racine n’est pas un nœud CSG, les nœuds CSGCombiner sont la fin des opérations; Cela montre l’utilisation de CSGCombiner pour organiser la scène CSG.

Défaire le re-parent après avoir observé l’effet. Le lit que vous avez construit devrait ressembler à ceci :

../../_images/csg_bed.png

Créez un CSGCombiner et nommez-le lamp.

Une lampe se compose de 3 parties : le pied, le poteau et l’abat-jour. Créez un CSGCylinder, activez l’option Cone et faites-en le socle. Créez un autre cylindre CSGC et ajustez les dimensions pour l’utiliser comme poteau.

../../_images/csg_lamp_pole_stand.png

Nous utiliserons un CSGPolygon pour l’abat-jour. Utilisez le mode Spin pour le CSGPolygon et dessinez un trapezoid en Front View (pavé numérique 1) ; cette forme s’extrude autour de l’origine et forme l’abat-jour.

../../_images/csg_lamp_spin.png ../../_images/csg_lamp_polygon.png ../../_images/csg_lamp_extrude.png

Ajustez l’emplacement des 3 pièces pour qu’il ressemble à une lampe.

../../_images/csg_lamp.png

Créez un CSGCombiner et nommez-le bookshelf.

Nous utiliserons 3 nœuds CSGBox pour la bibliothèque. Créez une CSGBox et ajustez ses dimensions ; ce sera la taille de la bibliothèque.

../../_images/csg_shelf_big.png

Dupliquez la CSGBox et raccourcissez les dimensions de chaque axe et changez le mode en Subtraction.

../../_images/csg_shelf_subtract.png ../../_images/csg_shelf_subtract_menu.png

Vous avez presque construit une étagère. Créez une CSGBox supplémentaire pour diviser l’étagère en deux niveaux.

../../_images/csg_shelf.png

Positionner les meubles dans la chambre comme vous le souhaitez et votre scène de rassembler à cela :

../../_images/csg_room_result.png

Vous avez réussi à prototyper un niveau de pièce avec les outils CSG de Godot. Les outils CSG peuvent être utilisés pour concevoir toutes sortes de niveaux, comme un labyrinthe ou une ville ; explorez ses limites lorsque vous concevez votre jeu.