:github_url: hide .. _class_SkeletonModifier3D: SkeletonModifier3D ================== **Hereda:** :ref:`Node3D` **<** :ref:`Node` **<** :ref:`Object` **Heredado por:** :ref:`BoneConstraint3D`, :ref:`BoneTwistDisperser3D`, :ref:`IKModifier3D`, :ref:`LimitAngularVelocityModifier3D`, :ref:`LookAtModifier3D`, :ref:`ModifierBoneTarget3D`, :ref:`PhysicalBoneSimulator3D`, :ref:`RetargetModifier3D`, :ref:`SkeletonIK3D`, :ref:`SpringBoneSimulator3D`, :ref:`XRBodyModifier3D`, :ref:`XRHandModifier3D` Un nodo que puede modificar los huesos de un Skeleton3D. .. rst-class:: classref-introduction-group Descripción ---------------------- **SkeletonModifier3D** recupera un :ref:`Skeleton3D` objetivo al tener un padre :ref:`Skeleton3D`. Si hay un :ref:`AnimationMixer`, una modificación siempre se realiza después del proceso de reproducción del :ref:`AnimationMixer`. Este nodo debe utilizarse para implementar solucionadores IK personalizados, restricciones o física de esqueletos. .. rst-class:: classref-introduction-group Tutoriales -------------------- - `Design of the Skeleton Modifier 3D `__ .. rst-class:: classref-reftable-group Propiedades ---------------------- .. table:: :widths: auto +---------------------------+---------------------------------------------------------------+----------+ | :ref:`bool` | :ref:`active` | ``true`` | +---------------------------+---------------------------------------------------------------+----------+ | :ref:`float` | :ref:`influence` | ``1.0`` | +---------------------------+---------------------------------------------------------------+----------+ .. rst-class:: classref-reftable-group Métodos -------------- .. table:: :widths: auto +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_process_modification`\ (\ ) |virtual| | +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_process_modification_with_delta`\ (\ delta\: :ref:`float`\ ) |virtual| | +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_skeleton_changed`\ (\ old_skeleton\: :ref:`Skeleton3D`, new_skeleton\: :ref:`Skeleton3D`\ ) |virtual| | +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_validate_bone_names`\ (\ ) |virtual| | +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Skeleton3D` | :ref:`get_skeleton`\ (\ ) |const| | +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Señales -------------- .. _class_SkeletonModifier3D_signal_modification_processed: .. rst-class:: classref-signal **modification_processed**\ (\ ) :ref:`🔗` Notifica cuando la modificación ha terminado. \ **Nota:** Si quieres obtener la pose del hueso modificada por el modificador, debes usar :ref:`Skeleton3D.get_bone_pose()` o :ref:`Skeleton3D.get_bone_global_pose()` en el momento en que esta señal es emitida. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Enumeraciones -------------------------- .. _enum_SkeletonModifier3D_BoneAxis: .. rst-class:: classref-enumeration enum **BoneAxis**: :ref:`🔗` .. _class_SkeletonModifier3D_constant_BONE_AXIS_PLUS_X: .. rst-class:: classref-enumeration-constant :ref:`BoneAxis` **BONE_AXIS_PLUS_X** = ``0`` Valor enumerado para el eje +X. .. _class_SkeletonModifier3D_constant_BONE_AXIS_MINUS_X: .. rst-class:: classref-enumeration-constant :ref:`BoneAxis` **BONE_AXIS_MINUS_X** = ``1`` Valor enumerado para el eje -X. .. _class_SkeletonModifier3D_constant_BONE_AXIS_PLUS_Y: .. rst-class:: classref-enumeration-constant :ref:`BoneAxis` **BONE_AXIS_PLUS_Y** = ``2`` Valor enumerado para el eje +Y. .. _class_SkeletonModifier3D_constant_BONE_AXIS_MINUS_Y: .. rst-class:: classref-enumeration-constant :ref:`BoneAxis` **BONE_AXIS_MINUS_Y** = ``3`` Valor enumerado para el eje -Y. .. _class_SkeletonModifier3D_constant_BONE_AXIS_PLUS_Z: .. rst-class:: classref-enumeration-constant :ref:`BoneAxis` **BONE_AXIS_PLUS_Z** = ``4`` Valor enumerado para el eje +Z. .. _class_SkeletonModifier3D_constant_BONE_AXIS_MINUS_Z: .. rst-class:: classref-enumeration-constant :ref:`BoneAxis` **BONE_AXIS_MINUS_Z** = ``5`` Valor enumerado para el eje -Z. .. rst-class:: classref-item-separator ---- .. _enum_SkeletonModifier3D_BoneDirection: .. rst-class:: classref-enumeration enum **BoneDirection**: :ref:`🔗` .. _class_SkeletonModifier3D_constant_BONE_DIRECTION_PLUS_X: .. rst-class:: classref-enumeration-constant :ref:`BoneDirection` **BONE_DIRECTION_PLUS_X** = ``0`` Valor enumerado para el eje +X. .. _class_SkeletonModifier3D_constant_BONE_DIRECTION_MINUS_X: .. rst-class:: classref-enumeration-constant :ref:`BoneDirection` **BONE_DIRECTION_MINUS_X** = ``1`` Valor enumerado para el eje -X. .. _class_SkeletonModifier3D_constant_BONE_DIRECTION_PLUS_Y: .. rst-class:: classref-enumeration-constant :ref:`BoneDirection` **BONE_DIRECTION_PLUS_Y** = ``2`` Valor enumerado para el eje +Y. .. _class_SkeletonModifier3D_constant_BONE_DIRECTION_MINUS_Y: .. rst-class:: classref-enumeration-constant :ref:`BoneDirection` **BONE_DIRECTION_MINUS_Y** = ``3`` Valor enumerado para el eje -Y. .. _class_SkeletonModifier3D_constant_BONE_DIRECTION_PLUS_Z: .. rst-class:: classref-enumeration-constant :ref:`BoneDirection` **BONE_DIRECTION_PLUS_Z** = ``4`` Valor enumerado para el eje +Z. .. _class_SkeletonModifier3D_constant_BONE_DIRECTION_MINUS_Z: .. rst-class:: classref-enumeration-constant :ref:`BoneDirection` **BONE_DIRECTION_MINUS_Z** = ``5`` Valor enumerado para el eje -Z. .. _class_SkeletonModifier3D_constant_BONE_DIRECTION_FROM_PARENT: .. rst-class:: classref-enumeration-constant :ref:`BoneDirection` **BONE_DIRECTION_FROM_PARENT** = ``6`` Valor enumerado para el eje desde un hueso padre hasta el hueso hijo. .. rst-class:: classref-item-separator ---- .. _enum_SkeletonModifier3D_SecondaryDirection: .. rst-class:: classref-enumeration enum **SecondaryDirection**: :ref:`🔗` .. _class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_NONE: .. rst-class:: classref-enumeration-constant :ref:`SecondaryDirection` **SECONDARY_DIRECTION_NONE** = ``0`` Enumerated value for the case when the axis is undefined. .. _class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_PLUS_X: .. rst-class:: classref-enumeration-constant :ref:`SecondaryDirection` **SECONDARY_DIRECTION_PLUS_X** = ``1`` Valor enumerado para el eje +X. .. _class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_MINUS_X: .. rst-class:: classref-enumeration-constant :ref:`SecondaryDirection` **SECONDARY_DIRECTION_MINUS_X** = ``2`` Valor enumerado para el eje -X. .. _class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_PLUS_Y: .. rst-class:: classref-enumeration-constant :ref:`SecondaryDirection` **SECONDARY_DIRECTION_PLUS_Y** = ``3`` Valor enumerado para el eje +Y. .. _class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_MINUS_Y: .. rst-class:: classref-enumeration-constant :ref:`SecondaryDirection` **SECONDARY_DIRECTION_MINUS_Y** = ``4`` Valor enumerado para el eje -Y. .. _class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_PLUS_Z: .. rst-class:: classref-enumeration-constant :ref:`SecondaryDirection` **SECONDARY_DIRECTION_PLUS_Z** = ``5`` Valor enumerado para el eje +Z. .. _class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_MINUS_Z: .. rst-class:: classref-enumeration-constant :ref:`SecondaryDirection` **SECONDARY_DIRECTION_MINUS_Z** = ``6`` Valor enumerado para el eje -Z. .. _class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_CUSTOM: .. rst-class:: classref-enumeration-constant :ref:`SecondaryDirection` **SECONDARY_DIRECTION_CUSTOM** = ``7`` Enumerated value for an optional axis. .. rst-class:: classref-item-separator ---- .. _enum_SkeletonModifier3D_RotationAxis: .. rst-class:: classref-enumeration enum **RotationAxis**: :ref:`🔗` .. _class_SkeletonModifier3D_constant_ROTATION_AXIS_X: .. rst-class:: classref-enumeration-constant :ref:`RotationAxis` **ROTATION_AXIS_X** = ``0`` Valor enumerado para la rotación del eje X. .. _class_SkeletonModifier3D_constant_ROTATION_AXIS_Y: .. rst-class:: classref-enumeration-constant :ref:`RotationAxis` **ROTATION_AXIS_Y** = ``1`` Valor enumerado para la rotación del eje Y. .. _class_SkeletonModifier3D_constant_ROTATION_AXIS_Z: .. rst-class:: classref-enumeration-constant :ref:`RotationAxis` **ROTATION_AXIS_Z** = ``2`` Valor enumerado para la rotación del eje Z. .. _class_SkeletonModifier3D_constant_ROTATION_AXIS_ALL: .. rst-class:: classref-enumeration-constant :ref:`RotationAxis` **ROTATION_AXIS_ALL** = ``3`` Valor enumerado para la rotación sin restricciones. .. _class_SkeletonModifier3D_constant_ROTATION_AXIS_CUSTOM: .. rst-class:: classref-enumeration-constant :ref:`RotationAxis` **ROTATION_AXIS_CUSTOM** = ``4`` Enumerated value for an optional rotation axis. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Descripciones de Propiedades -------------------------------------------------------- .. _class_SkeletonModifier3D_property_active: .. rst-class:: classref-property :ref:`bool` **active** = ``true`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_active**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_active**\ (\ ) Si es ``true``, el **SkeletonModifier3D** se procesará. .. rst-class:: classref-item-separator ---- .. _class_SkeletonModifier3D_property_influence: .. rst-class:: classref-property :ref:`float` **influence** = ``1.0`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_influence**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_influence**\ (\ ) Establece la influencia de la modificación. \ **Nota:** Este valor es usado por :ref:`Skeleton3D` para mezclar, así que el **SkeletonModifier3D** siempre debería aplicar solo el 100% del resultado sin interpolación. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Descripciones de Métodos ------------------------------------------------ .. _class_SkeletonModifier3D_private_method__process_modification: .. rst-class:: classref-method |void| **_process_modification**\ (\ ) |virtual| :ref:`🔗` **Obsoleto:** Use :ref:`_process_modification_with_delta()` instead. Sobrescribe este método virtual para implementar un modificador de esqueleto personalizado. Deberías hacer cosas como obtener la pose actual del :ref:`Skeleton3D` y aplicar la pose aquí. \ :ref:`_process_modification()` no debe aplicar :ref:`influence` a las poses de los huesos porque el :ref:`Skeleton3D` aplica automáticamente la influencia a todas las poses de los huesos establecidas por el modificador. .. rst-class:: classref-item-separator ---- .. _class_SkeletonModifier3D_private_method__process_modification_with_delta: .. rst-class:: classref-method |void| **_process_modification_with_delta**\ (\ delta\: :ref:`float`\ ) |virtual| :ref:`🔗` Sobrescribe este método virtual para implementar un modificador de esqueleto personalizado. Deberías hacer cosas como obtener la pose actual del :ref:`Skeleton3D` y aplicar la pose aquí. \ :ref:`_process_modification_with_delta()` no debe aplicar :ref:`influence` a las poses de los huesos porque el :ref:`Skeleton3D` aplica automáticamente la influencia a todas las poses de los huesos establecidas por el modificador. \ ``delta`` se pasa desde el :ref:`Skeleton3D` padre. Véase también :ref:`Skeleton3D.advance()`. .. rst-class:: classref-item-separator ---- .. _class_SkeletonModifier3D_private_method__skeleton_changed: .. rst-class:: classref-method |void| **_skeleton_changed**\ (\ old_skeleton\: :ref:`Skeleton3D`, new_skeleton\: :ref:`Skeleton3D`\ ) |virtual| :ref:`🔗` Se llama a este método cuando el esqueleto cambia. .. rst-class:: classref-item-separator ---- .. _class_SkeletonModifier3D_private_method__validate_bone_names: .. rst-class:: classref-method |void| **_validate_bone_names**\ (\ ) |virtual| :ref:`🔗` Called when bone names and indices need to be validated, such as when entering the scene tree or changing skeleton. .. rst-class:: classref-item-separator ---- .. _class_SkeletonModifier3D_method_get_skeleton: .. rst-class:: classref-method :ref:`Skeleton3D` **get_skeleton**\ (\ ) |const| :ref:`🔗` Returns the parent :ref:`Skeleton3D` node if it exists. Otherwise, returns ``null``. .. |virtual| replace:: :abbr:`virtual (Normalmente, este método debería ser sobreescrito por el usuario para que tenga algún efecto.)` .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)` .. |const| replace:: :abbr:`const (Este método no tiene efectos secundarios. No modifica ninguna de las variables miembro de la instancia.)` .. |vararg| replace:: :abbr:`vararg (Este método permite agregar cualquier número de argumentos después de los descritos aquí.)` .. |constructor| replace:: :abbr:`constructor (Este método se utiliza para construir un tipo.)` .. |static| replace:: :abbr:`static (Este método no necesita una instancia para ser llamado, por lo que puede llamarse directamente utilizando el nombre de la clase.)` .. |operator| replace:: :abbr:`operator (Este método describe un operador válido para usar con este tipo como operando izquierdo.)` .. |bitfield| replace:: :abbr:`BitField (Este valor es un entero compuesto como una máscara de bits de las siguientes banderas.)` .. |void| replace:: :abbr:`void (Sin valor de retorno.)`