SpringBoneSimulator3D
Hereda: SkeletonModifier3D < Node3D < Node < Object
Un SkeletonModifier3D para aplicar un bamboleo inercial a las cadenas de huesos.
Descripción
Este SkeletonModifier3D puede usarse para menear el pelo, la ropa y las colas.Este modificador se comporta de forma diferente a PhysicalBoneSimulator3D, ya que intenta devolver la pose original después de la modificación.
Si configuras set_root_bone() y set_end_bone(), se tratará como una cadena de huesos. Ten en cuenta que no admite una cadena ramificada como las cadenas en forma de Y.
Cuando se crea una cadena de huesos, se genera un array a partir de los huesos que existen entre ellos y se enumeran en la lista de articulaciones.
Se pueden aplicar varias propiedades a cada articulación, como set_joint_stiffness(), set_joint_drag() y set_joint_gravity().
Para simplificar, puedes establecer valores para todas las articulaciones al mismo tiempo utilizando una Curve. Si deseas especificar valores detallados individualmente, establece set_individual_config() a true.
Para la simulación física, SpringBoneSimulator3D puede tener hijos como colisiones independientes que no están relacionadas con PhysicsServer3D, véase también SpringBoneCollision3D.
Advertencia: Un SpringBoneSimulator3D escalado probablemente no se comportará como se espera. Asegúrate de que el Skeleton3D padre y sus huesos no estén escalados.
Propiedades
|
||
|
Métodos
Enumeraciones
enum BoneDirection: 🔗
BoneDirection BONE_DIRECTION_PLUS_X = 0
Valor enumerado para el eje +X.
BoneDirection BONE_DIRECTION_MINUS_X = 1
Valor enumerado para el eje -X.
BoneDirection BONE_DIRECTION_PLUS_Y = 2
Valor enumerado para el eje +Y.
BoneDirection BONE_DIRECTION_MINUS_Y = 3
Valor enumerado para el eje -Y.
BoneDirection BONE_DIRECTION_PLUS_Z = 4
Valor enumerado para el eje +Z.
BoneDirection BONE_DIRECTION_MINUS_Z = 5
Valor enumerado para el eje -Z.
BoneDirection BONE_DIRECTION_FROM_PARENT = 6
Valor enumerado para el eje desde un hueso padre hasta el hueso hijo.
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.
enum RotationAxis: 🔗
RotationAxis ROTATION_AXIS_X = 0
Valor enumerado para la rotación del eje X.
RotationAxis ROTATION_AXIS_Y = 1
Valor enumerado para la rotación del eje Y.
RotationAxis ROTATION_AXIS_Z = 2
Valor enumerado para la rotación del eje Z.
RotationAxis ROTATION_AXIS_ALL = 3
Valor enumerado para la rotación sin restricciones.
RotationAxis ROTATION_AXIS_CUSTOM = 4
Valor enumerado para un eje de rotación opcional. Véase también set_joint_rotation_axis_vector().
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.
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 🔗
Devuelve la dirección de la cola del hueso final de la cadena de huesos cuando is_end_bone_extended() es true.
float get_end_bone_length(index: int) const 🔗
Devuelve la longitud de la cola del hueso final de la cadena de huesos cuando is_end_bone_extended() es 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 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 🔗
Devuelve el vector del eje de rotación de la cadena de huesos. Este vector representa el eje alrededor del cual la cadena de huesos puede rotar. Se determina en función del eje de rotación establecido para la cadena de huesos.
Si get_rotation_axis() es ROTATION_AXIS_ALL, este método devuelve 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 🔗
Devuelve true si el hueso final se extiende para tener la cola.
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 la cola.
La configuración de la cola extendida se asigna al último elemento de la lista de articulaciones.
En otras palabras, si estableces enabled como false, la configuración del último elemento de la lista de articulaciones no tiene ningún 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) 🔗
Establece el eje de rotación en joint en la lista de articulaciones de la cadena de huesos cuando is_config_individual() es true.
Los ejes se basan en el espacio de Skeleton3D.get_bone_rest(), si axis es ROTATION_AXIS_CUSTOM, puedes especificar cualquier eje.
Nota: El eje de rotación y el vector frontal no deben ser colineales para evitar una rotación no intencionada, ya que SpringBoneSimulator3D no tiene en cuenta las fuerzas de torsión.
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 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) 🔗
Establece el eje de rotación de la cadena de huesos. Si se establece en un eje específico, actúa como una articulación de bisagra. El valor se guarda en caché en cada ajuste de articulación en la lista de articulaciones.
Los ejes se basan en el espacio de Skeleton3D.get_bone_rest(), si axis es ROTATION_AXIS_CUSTOM, puedes especificar cualquier eje.
Nota: El vector del eje de rotación y el vector delantero no deben ser colineales para evitar una rotación no intencionada, ya que SpringBoneSimulator3D no tiene en cuenta las fuerzas de torsión.
void set_rotation_axis_vector(index: int, vector: Vector3) 🔗
Establece el vector del eje de rotación de la cadena de huesos. El valor se guarda en caché en cada ajuste de articulación en la lista de articulaciones.
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 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.