Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
CSGShape3D
Hérite de : GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Hérité par : CSGCombiner3D, CSGPrimitive3D
La classe de base CSG.
Description
C'est la classe de base CSG qui fournit le support des opérations CSG aux différents nœuds CSG dans Godot.
Performance : Les nœuds CSG ne sont destinés qu'au prototypage car ils ont un coût de performance CPU important. Envisagez de pré-calculer les résultats de l'opération CSG finale en géométrie statique qui remplace les nœuds CSG.
Les résultats de nœud racine CSG individuels peuvent être pré-calculés vers des nœuds avec des ressources statiques avec le menu de l'éditeur qui apparaît quand un nœud racine CSG est sélectionné.
Les nœuds racine CSG individuels peuvent également être pré-calculés vers des ressources statiques avec des scripts en appelant bake_static_mesh() pour le maillage visuel ou bake_collision_shape() pour la collision physique.
Des scènes entières de nœuds CSG peuvent être pré-calculées vers de la géométrie statique et exportées avec l'exporteur de scène glTF de l'éditeur : Scène > Exporter en tant que.. > Scène glTF 2.0
Tutoriels
Propriétés
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Méthodes
get_collision_layer_value(layer_number: int) const |
|
get_collision_mask_value(layer_number: int) const |
|
get_meshes() const |
|
is_root_shape() const |
|
void |
set_collision_layer_value(layer_number: int, value: bool) |
void |
set_collision_mask_value(layer_number: int, value: bool) |
Énumérations
enum Operation: 🔗
Operation OPERATION_UNION = 0
La géométrie des deux primitives est fusionnée, la géométrie croisée est supprimée.
Operation OPERATION_INTERSECTION = 1
Il ne reste que la géométrie d'intersection, le reste est supprimé.
Operation OPERATION_SUBTRACTION = 2
La deuxième forme est soustraite à la première, laissant une bosse avec sa forme.
Descriptions des propriétés
Enables automatic smoothing. This overrides any smoothing on the CSG node and instead uses smoothing_angle to calculate normals based on the angle between faces.
Children of a CSGCombiner3D node will be treated as a single mesh.
bool calculate_tangents = true 🔗
Calculate tangents for the CSG shape which allows the use of normal and height maps. This is only applied on the root shape, this setting is ignored on any child. Setting this to false can speed up shape generation slightly.
Le calque physique de cette zone.
Les objets de collision peuvent exister dans l'un des 32 calques différentes. Ces calques fonctionnent comme un système de marquage, et ne sont pas visuels. Un objet de collision peut utiliser ces calques pour sélectionner avec quels objets il peut entrer en collision, en utilisant la propriété collision_mask.
Un contact est détecté si l'objet A est dans l'un des calques que l'objet B observe, ou si l'objet B est dans tous les calques observés par l'objet A. Voir Calques et masques de collision dans la documentation pour plus d'informations.
Les couche de physique que cette forme CSG scanne pour les collisions. Seulement effectif si use_collision vaut true. Voir Niveaux et masques de collisions dans la documentation pour plus d'informations.
float collision_priority = 1.0 🔗
La priorité utilisée pour résoudre la collision lors de la pénétration. Seulement effectif si use_collision vaut true. Plus la priorité est élevée, plus la pénétration dans l'objet sera faible. Cela peut par exemple être utilisé pour empêcher le joueur de franchir les limites d'un niveau.
L'opération effectuée sur cette forme. Ceci est ignoré pour le premier nœud enfant CSG puisque l'opération est entre ce nœud et l'enfant précédent de ce nœud parent.
float smoothing_angle = 50.0 🔗
When autosmooth is enabled, faces with an angle between them greater than this will be smoothed, while faces with a smaller angle will remain sharp.
Note: An angle lower than 0.1 will cause all smoothing to be disabled, this can be used to increase performance.
Obsolète : The CSG library no longer uses snapping.
Cette propriété ne fait rien.
Ajoute une forme de collision au moteur de physique pour notre forme CSG. Cela agira toujours comme un corps statique. Notez que la forme de collision est encore active même si la forme CSG elle-même est cachée. Voir aussi collision_mask et collision_priority.
Descriptions des méthodes
ConcavePolygonShape3D bake_collision_shape() 🔗
Renvoie une ConcavePolygonShape3D physique calculée du résultat de l'opération CSG de ce nœud. Renvoie une forme vide si le nœud n'est pas un nœud racine CSG ou n'a pas de géométrie valide.
Performance : Si l'opération CSG aboutit à une géométrie très détaillée avec de nombreuses faces, les performances de la physique seront très faibles. Les formes concaves ne devraient en général être utilisées que pour la géométrie de niveau statique et non avec des objets dynamiques qui se déplacent.
Note : Les mises à jour des données de maillage CSG sont différées, ce qui signifie qu'elles sont mises à jour avec un délai d'un trame rendue. Pour éviter d'obtenir une forme vide ou des données de maillage périmées, assurez-vous d'appeler await get_tree().process_frame avant d'utiliser bake_collision_shape() dans Node._ready() ou après avoir modifié des propriétés du CSGShape3D.
ArrayMesh bake_static_mesh() 🔗
Renvoie un ArrayMesh statique calculé du résultat de l'opération CSG de ce nœud. Les matériaux des nœuds CSG impliqués sont ajoutés en tant que surfaces de maillage supplémentaires. Renvoie un maillage vide si le nœud n'est pas un nœud racine CSG ou n'a pas de géométrie valide.
Note : Les mises à jour des données de maillage CSG sont différées, ce qui signifie qu'elles sont mises à jour avec un délai d'un trame rendue. Pour éviter d'obtenir un maillage vide ou des données de maillage périmées, assurez-vous d'appeler await get_tree().process_frame avant d'utiliser bake_static_mesh() dans Node._ready() ou après avoir modifié des propriétés du CSGShape3D.
bool get_collision_layer_value(layer_number: int) const 🔗
Renvoie si la couche spécifiée du collision_layer est activée, étant donné un numéro de couche layer_number entre 1 et 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Renvoie si la couche spécifiée du collision_mask est activée, étant donné un numéro de couche layer_number entre 1 et 32.
Renvoie un Array avec deux éléments, le premier est la Transform3D de ce nœud et le second est le Mesh racine de ce nœud. Fonctionne seulement lorsque ce nœud est la forme racine.
Note : Les mises à jour des données de maillage CSG sont différées, ce qui signifie qu'elles sont mises à jour avec un délai d'une trame rendue. Pour éviter d'obtenir une forme vide ou des données de maillage périmées, assurez-vous d'appeler await get_tree().process_frame avant d'utiliser get_meshes() dans Node._ready() ou après avoir modifié des propriétés du CSGShape3D.
Renvoie true s’il s’agit d’une forme racine et est donc l’objet rendu.
void set_collision_layer_value(layer_number: int, value: bool) 🔗
Selon value, active ou désactive la couche spécifiée dans le collision_layer, étant donné un numéro de couche layer_number entre 1 et 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
Selon value, active ou désactive la couche spécifiée dans le collision_mask, étant donné un numéro de couche layer_number entre 1 et 32.