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
Hereda: GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
Heredado por: CSGCombiner3D, CSGPrimitive3D
La clase base del CSG.
Descripción
Esta es la clase base de CSG que proporciona soporte para operaciones CSG a los diversos nodos CSG en Godot.
Rendimiento: Los nodos CSG están destinados únicamente al prototipado, ya que tienen un coste de rendimiento de CPU significativo. Considera hornear (bake) los resultados finales de las operaciones CSG en geometría estática que reemplace a los nodos CSG.
Los resultados de nodos raíz CSG individuales pueden hornearse a nodos con recursos estáticos mediante el menú del editor que aparece cuando se selecciona un nodo raíz CSG.
Los nodos raíz CSG individuales también pueden hornearse a recursos estáticos mediante scripts llamando a bake_static_mesh() para la malla visual o a bake_collision_shape() para la colisión física.
Escenas enteras de nodos CSG pueden hornearse a geometría estática y exportarse con el exportador de escenas glTF del editor: Escena > Exportar como... > Escena glTF 2.0...
Tutoriales
Propiedades
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Métodos
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) |
Enumeraciones
enum Operation: 🔗
Operation OPERATION_UNION = 0
La geometría de ambas primitivas se fusiona, la geometría que se interseca se elimina.
Operation OPERATION_INTERSECTION = 1
Solo queda la geometría de intersección, el resto se elimina.
Operation OPERATION_SUBTRACTION = 2
La segunda forma se resta de la primera, dejando una depresión con su forma.
Descripciones de Propiedades
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 🔗
Calcula las tangentes para la forma CSG, lo que permite el uso de mapas de normales y de altura. Esto solo se aplica a la forma raíz; este ajuste se ignora en cualquier hijo. Establecer esto en false puede acelerar ligeramente la generación de la forma.
The physics layers this area is in.
Collidable objects can exist in any of 32 different layers. These layers work like a tagging system, and are not visual. A collidable can use these layers to select with which objects it can collide, using the collision_mask property.
A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. See Collision layers and masks in the documentation for more information.
Las capas de física en las que esta forma CSG busca colisiones. Solo es efectivo si use_collision es true. Consulta Capas y máscaras de colisión en la documentación para más información.
float collision_priority = 1.0 🔗
La prioridad utilizada para resolver colisiones cuando ocurre una penetración. Solo es efectiva si use_collision es true. Cuanto mayor sea la prioridad, menor será la penetración en el objeto. Esto se puede utilizar, por ejemplo, para evitar que el jugador atraviese los límites de un nivel.
La operación que se realiza en esta forma. Esto se ignora para el primer nodo hijo de CSG ya que la operación es entre este nodo y el hijo previo a este nodo padre.
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.
Obsoleto: The CSG library no longer uses snapping.
Esta propiedad no hace nada.
Adds a collision shape to the physics engine for our CSG shape. This will always act like a static body. Note that the collision shape is still active even if the CSG shape itself is hidden. See also collision_mask and collision_priority.
Descripciones de Métodos
ConcavePolygonShape3D bake_collision_shape() 🔗
Returns a baked physics ConcavePolygonShape3D of this node's CSG operation result. Returns an empty shape if the node is not a CSG root node or has no valid geometry.
Performance: If the CSG operation results in a very detailed geometry with many faces physics performance will be very slow. Concave shapes should in general only be used for static level geometry and not with dynamic objects that are moving.
Note: CSG mesh data updates are deferred, which means they are updated with a delay of one rendered frame. To avoid getting an empty shape or outdated mesh data, make sure to call await get_tree().process_frame before using bake_collision_shape() in Node._ready() or after changing properties on the CSGShape3D.
ArrayMesh bake_static_mesh() 🔗
Devuelve una ArrayMesh estática procesada con baking con el resultado de la operación CSG de este nodo. Los materiales de los nodos CSG involucrados se añaden como superficies de malla adicionales. Devuelve una malla vacía si el nodo no es un nodo raíz CSG o no tiene una geometría válida.
Nota: Las actualizaciones de los datos de malla CSG se aplazan, lo que significa que se actualizan con un retraso de un frame renderizado. Para evitar obtener una malla vacía o datos de malla desactualizados, asegúrate de llamar a await get_tree().process_frame antes de utilizar el bake_static_mesh() en Node._ready() o después de modificar las propiedades de CSGShape3D.
bool get_collision_layer_value(layer_number: int) const 🔗
Devuelve si la capa especificada de collision_layer está habilitada o no, dado un layer_number entre 1 y 32.
bool get_collision_mask_value(layer_number: int) const 🔗
Devuelve si la capa especificada de collision_mask está habilitada o no, dado un layer_number entre 1 y 32.
Retorna un Array con 2 elementos, el primero es el Transform3D de este nodo y el segundo es el Mesh raíz de este nodo. Solo funciona cuando este nodo es la forma raíz.
Nota: Las actualizaciones de los datos de mesh de CSG son diferidas, lo que significa que se actualizan con un delay de un frame renderizado. Para evitar obtener una forma vacía o datos de mesh desactualizados, asegúrate de llamar a await get_tree().process_frame antes de usar get_meshes() en Node._ready() o después de cambiar propiedades en el CSGShape3D.
Devuelve true si se trata de una forma de raíz y por lo tanto es el objeto que se renderiza.
void set_collision_layer_value(layer_number: int, value: bool) 🔗
Basado en value, habilita o deshabilita la capa especificada en collision_layer, dado un layer_number entre 1 y 32.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
Basado en value, habilita o deshabilita la capa especificada en collision_mask, dado un layer_number entre 1 y 32.