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...
SpringBoneSimulator3D
Hereda: SkeletonModifier3D < Node3D < Node < Object
Un SkeletonModifier3D para aplicar un bamboleo inercial a las cadenas de huesos.
Descripción
This SkeletonModifier3D can be used to wiggle hair, cloth, and tails. This modifier behaves differently from PhysicalBoneSimulator3D as it attempts to return the original pose after modification.
If you setup set_root_bone() and set_end_bone(), it is treated as one bone chain. Note that it does not support a branched chain like Y-shaped chains.
When a bone chain is created, an array is generated from the bones that exist in between and listed in the joint list.
Several properties can be applied to each joint, such as set_joint_stiffness(), set_joint_drag(), and set_joint_gravity().
For simplicity, you can set values to all joints at the same time by using a Curve. If you want to specify detailed values individually, set set_individual_config() to true.
For physical simulation, SpringBoneSimulator3D can have children as self-standing collisions that are not related to PhysicsServer3D, see also SpringBoneCollision3D.
Warning: A scaled SpringBoneSimulator3D will likely not behave as expected. Make sure that the parent Skeleton3D and its bones are not scaled.
Note: Most methods in this class take an index parameter. This parameter specifies which setting list entry to return if the IK has multiple entries (e.g. settings/<index>/root_bone_name).
Propiedades
|
||
|
||
|
Métodos
Enumeraciones
enum CenterFrom: 🔗
CenterFrom CENTER_FROM_WORLD_ORIGIN = 0
El origen del mundo se define como centro.
CenterFrom CENTER_FROM_NODE = 1
El Node3D especificado por set_center_node() se define como centro.
Si no se encuentra Node3D, el Skeleton3D padre se trata como centro.
CenterFrom CENTER_FROM_BONE = 2
El origen de la pose del hueso del Skeleton3D padre especificado por set_center_bone() se define como centro.
Si no se encuentra Node3D, el Skeleton3D padre se trata como centro.
Descripciones de Propiedades
Vector3 external_force = Vector3(0, 0, 0) 🔗
La fuerza constante que siempre afecta a los huesos. Es igual al resultado cuando el Skeleton3D padre se mueve a esta velocidad en la dirección opuesta.
Esto es útil para efectos como el viento y la antigravedad.
bool mutable_bone_axes = true 🔗
If true, the solver retrieves the bone axis from the bone pose every frame.
If false, the solver retrieves the bone axis from the bone rest and caches it, which increases performance slightly, but position changes in the bone pose made before processing this SpringBoneSimulator3D are ignored.
El número de configuraciones.
Descripciones de Métodos
bool are_all_child_collisions_enabled(index: int) const 🔗
Devuelve true si todos los SpringBoneCollision3D hijo están contenidos en la lista de colisiones en index en la configuración.
void clear_collisions(index: int) 🔗
Limpia todas las colisiones de la lista de colisiones en index en la configuración cuando are_all_child_collisions_enabled() es false.
void clear_exclude_collisions(index: int) 🔗
Limpia todas las colisiones excluidas de la lista de colisiones en index en la configuración cuando are_all_child_collisions_enabled() es true.
void clear_settings() 🔗
Limpia todos los ajustes.
int get_center_bone(index: int) const 🔗
Devuelve el índice del hueso central de la cadena de huesos.
String get_center_bone_name(index: int) const 🔗
Devuelve el nombre del hueso central de la cadena de huesos.
CenterFrom get_center_from(index: int) const 🔗
Devuelve de dónde se origina el centro en la cadena de huesos.
NodePath get_center_node(index: int) const 🔗
Devuelve la ruta del nodo central de la cadena de huesos.
int get_collision_count(index: int) const 🔗
Devuelve el número de colisiones de la lista de colisiones de la cadena de huesos cuando are_all_child_collisions_enabled() es false.
NodePath get_collision_path(index: int, collision: int) const 🔗
Devuelve la ruta del nodo del SpringBoneCollision3D en el índice collision de la lista de colisiones de la cadena de huesos cuando are_all_child_collisions_enabled() es false.
float get_drag(index: int) const 🔗
Devuelve la curva de amortiguación de la fuerza de arrastre de la cadena de huesos.
Curve get_drag_damping_curve(index: int) const 🔗
Devuelve la curva de amortiguación de la fuerza de arrastre de la cadena de huesos.
int get_end_bone(index: int) const 🔗
Devuelve el índice del hueso final de la cadena de huesos.
BoneDirection get_end_bone_direction(index: int) const 🔗
Returns the tail direction of the end bone of the bone chain when is_end_bone_extended() is true.
float get_end_bone_length(index: int) const 🔗
Returns the end bone tail length of the bone chain when is_end_bone_extended() is true.
String get_end_bone_name(index: int) const 🔗
Devuelve el nombre del hueso final de la cadena de huesos.
int get_exclude_collision_count(index: int) const 🔗
Devuelve el número de colisiones excluidas de la lista de colisiones excluidas de la cadena de huesos cuando are_all_child_collisions_enabled() es true.
NodePath get_exclude_collision_path(index: int, collision: int) const 🔗
Devuelve la ruta del nodo del SpringBoneCollision3D en el índice collision de la lista de colisiones excluidas de la cadena de huesos cuando are_all_child_collisions_enabled() es true.
float get_gravity(index: int) const 🔗
Devuelve la cantidad de gravedad de la cadena de huesos.
Curve get_gravity_damping_curve(index: int) const 🔗
Devuelve la curva de amortiguación de la cantidad de gravedad de la cadena de huesos.
Vector3 get_gravity_direction(index: int) const 🔗
Devuelve la dirección de la gravedad de la cadena de huesos.
int get_joint_bone(index: int, joint: int) const 🔗
Devuelve el índice del hueso en la articulación joint de la lista de articulaciones de la cadena de huesos.
String get_joint_bone_name(index: int, joint: int) const 🔗
Devuelve el nombre del hueso en la articulación joint de la lista de articulaciones de la cadena de huesos.
int get_joint_count(index: int) const 🔗
Devuelve el número de articulaciones de la lista de articulaciones de la cadena de huesos.
float get_joint_drag(index: int, joint: int) const 🔗
Devuelve la fuerza de arrastre en la articulación joint de la lista de articulaciones de la cadena de huesos.
float get_joint_gravity(index: int, joint: int) const 🔗
Devuelve la cantidad de gravedad en la articulación joint de la lista de articulaciones de la cadena de huesos.
Vector3 get_joint_gravity_direction(index: int, joint: int) const 🔗
Devuelve la dirección de la gravedad en la articulación joint de la lista de articulaciones de la cadena de huesos.
float get_joint_radius(index: int, joint: int) const 🔗
Devuelve el radio en joint en la lista de articulaciones de la cadena de huesos.
RotationAxis get_joint_rotation_axis(index: int, joint: int) const 🔗
Devuelve el eje de rotación en joint en la lista de articulaciones de la cadena de huesos.
Vector3 get_joint_rotation_axis_vector(index: int, joint: int) const 🔗
Devuelve el vector del eje de rotación para la articulación especificada en la cadena de huesos. Este vector representa el eje alrededor del cual la articulación puede rotar. Se determina en función del eje de rotación establecido para la articulación.
Si get_joint_rotation_axis() es SkeletonModifier3D.ROTATION_AXIS_ALL, este método devuelve Vector3(0, 0, 0).
float get_joint_stiffness(index: int, joint: int) const 🔗
Devuelve la fuerza de rigidez en joint en la lista de articulaciones de la cadena de huesos.
float get_radius(index: int) const 🔗
Devuelve el radio de la articulación de la cadena de huesos.
Curve get_radius_damping_curve(index: int) const 🔗
Devuelve la curva de amortiguación del radio de la articulación de la cadena de huesos.
int get_root_bone(index: int) const 🔗
Devuelve el índice del hueso raíz de la cadena de huesos.
String get_root_bone_name(index: int) const 🔗
Devuelve el nombre del hueso raíz de la cadena de huesos.
RotationAxis get_rotation_axis(index: int) const 🔗
Devuelve el eje de rotación de la cadena de huesos.
Vector3 get_rotation_axis_vector(index: int) const 🔗
Returns the rotation axis vector of the bone chain. This vector represents the axis around which the bone chain can rotate. It is determined based on the rotation axis set for the bone chain.
If get_rotation_axis() is SkeletonModifier3D.ROTATION_AXIS_ALL, this method returns Vector3(0, 0, 0).
float get_stiffness(index: int) const 🔗
Devuelve la fuerza de rigidez de la cadena de huesos.
Curve get_stiffness_damping_curve(index: int) const 🔗
Devuelve la curva de amortiguación de la fuerza de rigidez de la cadena de huesos.
bool is_config_individual(index: int) const 🔗
Devuelve true si la configuración puede ser editada individualmente para cada articulación.
bool is_end_bone_extended(index: int) const 🔗
Returns true if the end bone is extended to have a tail.
void reset() 🔗
Restablece un estado de simulación con respecto a la pose actual del hueso.
Es útil para evitar que el resultado de la simulación se vuelva violento. Por ejemplo, llamar a esto inmediatamente después de una llamada a AnimationPlayer.play() sin un desvanecimiento, o dentro de la anterior SkeletonModifier3D.modification_processed señal si su condición cambia significativamente.
void set_center_bone(index: int, bone: int) 🔗
Sets the center bone index of the bone chain.
void set_center_bone_name(index: int, bone_name: String) 🔗
Sets the center bone name of the bone chain.
void set_center_from(index: int, center_from: CenterFrom) 🔗
Establece de dónde se origina el centro en la cadena de huesos.
El movimiento del hueso se calcula en función de la diferencia en la distancia relativa entre el centro y el hueso en los fotogramas anterior y siguiente.
Por ejemplo, si el Skeleton3D padre se utiliza como centro, se considera que los huesos no se han movido si el Skeleton3D se mueve en el mundo.
En este caso, solo se considera que un cambio en la pose del hueso es un movimiento del hueso.
void set_center_node(index: int, node_path: NodePath) 🔗
Establece la ruta del nodo central de la cadena de huesos.
void set_collision_count(index: int, count: int) 🔗
Establece el número de colisiones en la lista de colisiones en index en la configuración cuando are_all_child_collisions_enabled() es false.
void set_collision_path(index: int, collision: int, node_path: NodePath) 🔗
Establece la ruta del nodo del SpringBoneCollision3D en collision en la lista de colisiones de la cadena de huesos cuando are_all_child_collisions_enabled() es false.
void set_drag(index: int, drag: float) 🔗
Sets the drag force of the bone chain. The greater the value, the more suppressed the wiggling.
The value is scaled by set_drag_damping_curve() and cached in each joint setting in the joint list.
void set_drag_damping_curve(index: int, curve: Curve) 🔗
Establece la curva de amortiguación de la fuerza de arrastre de la cadena de huesos.
void set_enable_all_child_collisions(index: int, enabled: bool) 🔗
Si enabled es true, todos los SpringBoneCollision3D hijo están colisionando y set_exclude_collision_path() está habilitado como una lista de exclusión en index en la configuración.
Si enabled es false, debes registrar manualmente todas las colisiones válidas con set_collision_path().
void set_end_bone(index: int, bone: int) 🔗
Establece el índice del hueso final de la cadena de huesos.
void set_end_bone_direction(index: int, bone_direction: BoneDirection) 🔗
Establece la dirección de la cola del hueso final de la cadena de huesos cuando is_end_bone_extended() es true.
void set_end_bone_length(index: int, length: float) 🔗
Establece la longitud de la cola del hueso final de la cadena de huesos cuando is_end_bone_extended() es true.
void set_end_bone_name(index: int, bone_name: String) 🔗
Establece el nombre del hueso final de la cadena de huesos.
Nota: El hueso final debe ser el hueso raíz o un hijo del hueso raíz. Si son iguales, la cola debe extenderse mediante set_extend_end_bone() para hacer que el hueso se sacuda.
void set_exclude_collision_count(index: int, count: int) 🔗
Establece el número de colisiones excluidas en la lista de colisiones excluidas en index en la configuración cuando are_all_child_collisions_enabled() es true.
void set_exclude_collision_path(index: int, collision: int, node_path: NodePath) 🔗
Establece la ruta del nodo del SpringBoneCollision3D en collision en la lista de colisiones excluidas de la cadena de huesos cuando are_all_child_collisions_enabled() es true.
void set_extend_end_bone(index: int, enabled: bool) 🔗
Si enabled es true, el hueso final se extiende para tener una cola.
La configuración de la cola extendida se asigna al último elemento de la lista de articulaciones. En otras palabras, si estableces enabled en false, la configuración del último elemento de la lista de articulaciones no tiene efecto en el resultado simulado.
void set_gravity(index: int, gravity: float) 🔗
Establece la cantidad de gravedad de la cadena de huesos. Este valor no es una aceleración, sino una velocidad constante de movimiento en set_gravity_direction().
Si gravity no es 0, la pose modificada no volverá a la pose original, ya que siempre se ve afectada por la gravedad.
El valor se escala mediante set_gravity_damping_curve() y se almacena en caché en cada ajuste de articulación en la lista de articulaciones.
void set_gravity_damping_curve(index: int, curve: Curve) 🔗
Establece la curva de amortiguación de la cantidad de gravedad de la cadena de huesos.
void set_gravity_direction(index: int, gravity_direction: Vector3) 🔗
Establece la dirección de la gravedad de la cadena de huesos. Este valor se normaliza internamente y luego se multiplica por set_gravity().
El valor se almacena en caché en cada ajuste de articulación en la lista de articulaciones.
void set_individual_config(index: int, enabled: bool) 🔗
Si enabled es true, la configuración se puede editar individualmente para cada articulación.
void set_joint_drag(index: int, joint: int, drag: float) 🔗
Establece la fuerza de arrastre en joint en la lista de articulaciones de la cadena de huesos cuando is_config_individual() es true.
void set_joint_gravity(index: int, joint: int, gravity: float) 🔗
Establece la cantidad de gravedad en joint en la lista de articulaciones de la cadena de huesos cuando is_config_individual() es true.
void set_joint_gravity_direction(index: int, joint: int, gravity_direction: Vector3) 🔗
Establece la dirección de la gravedad en joint en la lista de articulaciones de la cadena de huesos cuando is_config_individual() es true.
void set_joint_radius(index: int, joint: int, radius: float) 🔗
Establece el radio de la articulación en joint en la lista de articulaciones de la cadena de huesos cuando is_config_individual() es true.
void set_joint_rotation_axis(index: int, joint: int, axis: RotationAxis) 🔗
Sets the rotation axis at joint in the bone chain's joint list when is_config_individual() is true.
The axes are based on the reference pose's space, if axis is SkeletonModifier3D.ROTATION_AXIS_CUSTOM, you can specify any axis.
In here, the reference pose is the bone pose immediately before the simulation.
Note: The rotation axis and the forward vector shouldn't be colinear to avoid unintended rotation since SpringBoneSimulator3D does not factor in twisting forces.
void set_joint_rotation_axis_vector(index: int, joint: int, vector: Vector3) 🔗
Establece el vector del eje de rotación para la articulación especificada en la cadena de huesos.
Este vector se normaliza mediante un proceso interno y representa el eje alrededor del cual puede rotar la cadena de huesos.
Si la longitud del vector es 0, se considera sinónimo de SkeletonModifier3D.ROTATION_AXIS_ALL.
void set_joint_stiffness(index: int, joint: int, stiffness: float) 🔗
Establece la fuerza de rigidez en joint en la lista de articulaciones de la cadena de huesos cuando is_config_individual() es true.
void set_radius(index: int, radius: float) 🔗
Establece el radio de la articulación de la cadena de huesos. Se utiliza para mover y deslizar con el SpringBoneCollision3D en la lista de colisiones.
El valor se escala mediante set_radius_damping_curve() y se almacena en caché en cada ajuste de articulación en la lista de articulaciones.
void set_radius_damping_curve(index: int, curve: Curve) 🔗
Establece la curva de amortiguación del radio de la articulación de la cadena de huesos.
void set_root_bone(index: int, bone: int) 🔗
Establece el índice del hueso raíz de la cadena de huesos.
void set_root_bone_name(index: int, bone_name: String) 🔗
Establece el nombre del hueso raíz de la cadena de huesos.
void set_rotation_axis(index: int, axis: RotationAxis) 🔗
Sets the rotation axis of the bone chain. If set to a specific axis, it acts like a hinge joint. The value is cached in each joint setting in the joint list.
The axes are based on the reference pose's space, if axis is SkeletonModifier3D.ROTATION_AXIS_CUSTOM, you can specify any axis.
In here, the reference pose is the bone pose immediately before the simulation.
Note: The rotation axis vector and the forward vector shouldn't be colinear to avoid unintended rotation since SpringBoneSimulator3D does not factor in twisting forces.
void set_rotation_axis_vector(index: int, vector: Vector3) 🔗
Sets the rotation axis vector of the bone chain. The value is cached in each joint setting in the joint list.
This vector is normalized by an internal process and represents the axis around which the bone chain can rotate.
If the vector length is 0, it is considered synonymous with SkeletonModifier3D.ROTATION_AXIS_ALL.
void set_stiffness(index: int, stiffness: float) 🔗
Establece la fuerza de rigidez de la cadena de huesos. Cuanto mayor sea el valor, más rápido se recuperará a su pose inicial.
Si stiffness es 0, la pose modificada no volverá a la pose original.
El valor se escala mediante set_stiffness_damping_curve() y se guarda en caché en cada ajuste de articulación en la lista de articulaciones.
void set_stiffness_damping_curve(index: int, curve: Curve) 🔗
Establece la curva de amortiguación de la fuerza de rigidez de la cadena de huesos.