Skeleton3D
Hereda: Node3D < Node < Object
Un nodo que contiene una jerarquía de huesos, usado para crear una animación esquelética 3D.
Descripción
Skeleton3D provides an interface for managing a hierarchy of bones, including pose, rest and animation (see Animation). It can also use ragdoll physics.
The overall transform of a bone with respect to the skeleton is determined by bone pose. Bone rest defines the initial transform of the bone pose.
Note that "global pose" below refers to the overall transform of the bone with respect to skeleton, so it is not the actual global/world transform of the bone.
Tutoriales
Propiedades
|
||
|
||
|
||
|
Métodos
Señales
bone_enabled_changed(bone_idx: int) 🔗
Emitida cuando el hueso en el índice bone_idx es activado/desactivado con set_bone_enabled(). Usa is_bone_enabled() para comprobar el nuevo valor.
bone_list_changed() 🔗
Emitida cuando la lista de huesos cambia, como al llamar a add_bone(), set_bone_parent(), unparent_bone_and_rest(), o clear_bones().
pose_updated() 🔗
Emitida cuando la pose es actualizada.
Nota: Durante el proceso de actualización, esta señal no se dispara, por lo que la modificación por SkeletonModifier3D no es detectada.
rest_updated() 🔗
Emitida cuando el resto se actualiza.
show_rest_only_changed() 🔗
Emitida cuando el valor de show_rest_only cambia.
skeleton_updated() 🔗
Emitida cuando la pose final ha sido calculada y será aplicada a la piel en el proceso de actualización.
Esto significa que todo el procesamiento de SkeletonModifier3D está completo. Para detectar la finalización del procesamiento de cada SkeletonModifier3D, usa la señal SkeletonModifier3D.modification_processed.
Enumeraciones
enum ModifierCallbackModeProcess: 🔗
ModifierCallbackModeProcess MODIFIER_CALLBACK_MODE_PROCESS_PHYSICS = 0
Set a flag to process modification during physics frames (see Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS).
ModifierCallbackModeProcess MODIFIER_CALLBACK_MODE_PROCESS_IDLE = 1
Set a flag to process modification during process frames (see Node.NOTIFICATION_INTERNAL_PROCESS).
ModifierCallbackModeProcess MODIFIER_CALLBACK_MODE_PROCESS_MANUAL = 2
No procesar la modificación. Utiliza advance() para procesar la modificación manualmente.
Constantes
NOTIFICATION_UPDATE_SKELETON = 50 🔗
Notificación recibida cuando la pose de este esqueleto necesita ser actualizada. En ese caso, esto es llamado solo una vez por fotograma en un proceso diferido.
Descripciones de Propiedades
bool animate_physical_bones = true 🔗
Obsoleto: Esta propiedad podría ser modificada o eliminada en versiones futuras.
Si sigues el flujo de trabajo recomendado y tienes explícitamente un PhysicalBoneSimulator3D como hijo de Skeleton3D, puedes controlar si se ve afectado por el raycasting sin ejecutar physical_bones_start_simulation(), mediante su SkeletonModifier3D.active.
Sin embargo, para configuraciones antiguas (obsoletas), Skeleton3D tiene un PhysicalBoneSimulator3D virtual interno para compatibilidad. Esta propiedad controla el SkeletonModifier3D.active del PhysicalBoneSimulator3D virtual interno.
ModifierCallbackModeProcess modifier_callback_mode_process = 1 🔗
void set_modifier_callback_mode_process(value: ModifierCallbackModeProcess)
ModifierCallbackModeProcess get_modifier_callback_mode_process()
Establece el tiempo de procesamiento para el Modificador.
Multiplica la animación de la pista de posición 3D.
Nota: A menos que este valor sea 1.0, el valor clave en la animación no coincidirá con el valor de posición real.
Si es true, fuerza a los huesos a estar en su pose de reposo por defecto, independientemente de sus valores. En el editor, esto también impide que los huesos sean editados.
Descripciones de Métodos
Adds a new bone with the given name. Returns the new bone's index, or -1 if this method fails.
Note: Bone names should be unique, non empty, and cannot include the : and / characters.
Manually advance the child SkeletonModifier3Ds by the specified time (in seconds).
Note: The delta is temporarily accumulated in the Skeleton3D, and the deferred process uses the accumulated value to process the modification.
void clear_bones() 🔗
Limpia todos los huesos de este esqueleto.
void clear_bones_global_pose_override() 🔗
Obsoleto: Este método podría ser modificado o eliminado en versiones futuras.
Elimina la sobrescritura de la pose global en todos los huesos del esqueleto.
Skin create_skin_from_rest_transforms() 🔗
There is currently no description for this method. Please help us by contributing one!
int find_bone(name: String) const 🔗
Devuelve el índice del hueso que coincide con name como su nombre. Devuelve -1 si no existe ningún hueso con este nombre.
void force_update_all_bone_transforms() 🔗
Obsoleto: This method should only be called internally.
Fuerza la actualización de las transformaciones/poses para todos los huesos del esqueleto.
void force_update_bone_child_transform(bone_idx: int) 🔗
Fuerza la actualización de la transformación del hueso en bone_idx y de todos sus hijos.
PackedInt32Array get_bone_children(bone_idx: int) const 🔗
Devuelve un array que contiene los índices de hueso de todos los nodos hijos del hueso proporcionado, bone_idx.
Devuelve la cantidad de huesos del esqueleto.
Transform3D get_bone_global_pose(bone_idx: int) const 🔗
Devuelve la transformación general del hueso especificado, con respecto al esqueleto. Al ser relativa al marco del esqueleto, esta no es la transformación "global" real del hueso.
Nota: Esta es la pose global que estableces en el esqueleto durante el proceso, la pose global final puede ser anulada por modificadores en el proceso diferido. Si quieres acceder a la pose global final, usa SkeletonModifier3D.modification_processed.
Transform3D get_bone_global_pose_no_override(bone_idx: int) const 🔗
Obsoleto: Este método podría ser modificado o eliminado en versiones futuras.
Devuelve la transformación general del hueso especificado, con respecto al esqueleto, pero sin ninguna sobrescritura de pose global. Al ser relativa al marco del esqueleto, esta no es la transformación "global" real del hueso.
Transform3D get_bone_global_pose_override(bone_idx: int) const 🔗
Obsoleto: Este método podría ser modificado o eliminado en versiones futuras.
Returns the global pose override transform for bone_idx.
Transform3D get_bone_global_rest(bone_idx: int) const 🔗
Devuelve la transformación de reposo global para bone_idx.
Variant get_bone_meta(bone_idx: int, key: StringName) const 🔗
Returns the metadata with the given key for the bone at index bone_idx.
Array[StringName] get_bone_meta_list(bone_idx: int) const 🔗
Devuelve la lista de todas las claves de metadatos para el hueso en el índice bone_idx.
String get_bone_name(bone_idx: int) const 🔗
Devuelve el nombre del hueso en el índice bone_idx.
int get_bone_parent(bone_idx: int) const 🔗
Returns the bone index which is the parent of the bone at bone_idx. If -1, then bone has no parent.
Note: The parent bone returned will always be less than bone_idx.
Transform3D get_bone_pose(bone_idx: int) const 🔗
Returns the pose transform of the specified bone.
Note: This is the pose you set to the skeleton in the process, the final pose can get overridden by modifiers in the deferred process, if you want to access the final pose, use SkeletonModifier3D.modification_processed.
Vector3 get_bone_pose_position(bone_idx: int) const 🔗
Returns the pose position of the bone at bone_idx. The returned Vector3 is in the local coordinate space of the Skeleton3D node.
Quaternion get_bone_pose_rotation(bone_idx: int) const 🔗
Devuelve la rotación de pose del hueso en bone_idx. El Quaternion devuelto es local al hueso con respecto a la rotación de cualquier hueso padre.
Vector3 get_bone_pose_scale(bone_idx: int) const 🔗
Returns the pose scale of the bone at bone_idx.
Transform3D get_bone_rest(bone_idx: int) const 🔗
Returns the rest transform for a bone bone_idx.
StringName get_concatenated_bone_names() const 🔗
Returns all bone names concatenated with commas (,) as a single StringName.
It is useful to set it as a hint for the enum property.
PackedInt32Array get_parentless_bones() const 🔗
Devuelve un array con todos los huesos que no tienen padre. Otra forma de verlo es que devuelve los índices de todos los huesos que no son dependientes o modificados por otros huesos del esqueleto.
Devuelve el número de veces que la jerarquía de huesos ha cambiado dentro de este esqueleto, incluyendo los cambios de nombre.
La versión del Skeleton no se serializa: úsese sólo dentro de una única instancia de Skeleton3D.
Útil para invalidar cachés en solucionadores de IK y otros nodos que procesan huesos.
bool has_bone_meta(bone_idx: int, key: StringName) const 🔗
Returns true if the bone at index bone_idx has metadata with the given key.
bool is_bone_enabled(bone_idx: int) const 🔗
Returns whether the bone pose for the bone at bone_idx is enabled.
void localize_rests() 🔗
Returns all bones in the skeleton to their rest poses.
void physical_bones_add_collision_exception(exception: RID) 🔗
Obsoleto: Este método podría ser modificado o eliminado en versiones futuras.
Añade una excepción de colisión al hueso físico.
Funciona igual que el nodo RigidBody3D.
void physical_bones_remove_collision_exception(exception: RID) 🔗
Obsoleto: Este método podría ser modificado o eliminado en versiones futuras.
Elimina una excepción de colisión al hueso físico.
Funciona igual que el nodo RigidBody3D.
void physical_bones_start_simulation(bones: Array[StringName] = []) 🔗
Obsoleto: Este método podría ser modificado o eliminado en versiones futuras.
Indica a los nodos PhysicalBone3D en el esqueleto que comiencen a simular y reaccionar al mundo de la física.
Opcionalmente, se puede pasar una lista de nombres de huesos, permitiendo que solo se simulen los huesos pasados.
void physical_bones_stop_simulation() 🔗
Obsoleto: Este método podría ser modificado o eliminado en versiones futuras.
Indica a los nodos PhysicalBone3D en el esqueleto que dejen de simular.
SkinReference register_skin(skin: Skin) 🔗
Vincula la Skin dada al Skeleton.
void reset_bone_pose(bone_idx: int) 🔗
Sets the bone pose to rest for bone_idx.
void reset_bone_poses() 🔗
Restablece todas las poses de los huesos.
void set_bone_enabled(bone_idx: int, enabled: bool = true) 🔗
Disables the pose for the bone at bone_idx if false, enables the bone pose if true.
void set_bone_global_pose(bone_idx: int, pose: Transform3D) 🔗
Sets the global pose transform, pose, for the bone at bone_idx.
Note: If other bone poses have been changed, this method executes a dirty poses recalculation and will cause performance to deteriorate. If you know that multiple global poses will be applied, consider using set_bone_pose() with precalculation.
void set_bone_global_pose_override(bone_idx: int, pose: Transform3D, amount: float, persistent: bool = false) 🔗
Obsoleto: Este método podría ser modificado o eliminado en versiones futuras.
Sets the global pose transform, pose, for the bone at bone_idx.
amount is the interpolation strength that will be used when applying the pose, and persistent determines if the applied pose will remain.
Note: The pose transform needs to be a global pose! To convert a world transform from a Node3D to a global bone pose, multiply the Transform3D.affine_inverse() of the node's Node3D.global_transform by the desired world transform.
void set_bone_meta(bone_idx: int, key: StringName, value: Variant) 🔗
Establece los metadatos con la key dada en value para el hueso en el índice bone_idx.
void set_bone_name(bone_idx: int, name: String) 🔗
Establece el nombre del hueso, name, para el hueso en el índice bone_idx.
void set_bone_parent(bone_idx: int, parent_idx: int) 🔗
Establece el índice de hueso parent_idx como el padre del hueso en bone_idx. Si es -1, el hueso no tiene padre.
Nota: parent_idx debe ser menor que bone_idx.
void set_bone_pose(bone_idx: int, pose: Transform3D) 🔗
Establece la transformación de pose, pose, para el hueso en el índice bone_idx.
void set_bone_pose_position(bone_idx: int, position: Vector3) 🔗
Establece la posición de la pose del hueso en el índice bone_idx a position. position es un Vector3 que describe una posición local al nodo Skeleton3D.
void set_bone_pose_rotation(bone_idx: int, rotation: Quaternion) 🔗
Establece la rotación de la pose del hueso en el índice bone_idx a rotation. rotation es un Quaternion que describe una rotación en el espacio de coordenadas local del hueso con respecto a la rotación de cualquier hueso padre.
void set_bone_pose_scale(bone_idx: int, scale: Vector3) 🔗
Establece la escala de la pose del hueso en el índice bone_idx a scale.
void set_bone_rest(bone_idx: int, rest: Transform3D) 🔗
Establece la transformación de reposo para el hueso en el índice bone_idx.
void unparent_bone_and_rest(bone_idx: int) 🔗
Desemparenta el hueso en el índice bone_idx y establece su posición de reposo a la de su padre antes de ser desemparentado.