SkeletonIK3D
Obsoleto: This class may be changed or removed in future versions.
Hereda: SkeletonModifier3D < Node3D < Node < Object
Un nodo usado para rotar todos los huesos de una cadena de huesos de Skeleton3D de tal manera que coloca el hueso final en una posición 3D deseada.
Descripción
SkeletonIK3D is used to rotate all bones of a Skeleton3D bone chain a way that places the end bone at a desired 3D position. A typical scenario for IK in games is to place a character's feet on the ground or a character's hands on a currently held object. SkeletonIK uses FabrikInverseKinematic internally to solve the bone chain and applies the results to the Skeleton3D bones_global_pose_override property for all affected bones in the chain. If fully applied, this overwrites any bone transform from Animations or bone custom poses set by users. The applied amount can be controlled with the SkeletonModifier3D.influence property.
# Apply IK effect automatically on every new frame (not the current)
skeleton_ik_node.start()
# Apply IK effect only on the current frame
skeleton_ik_node.start(true)
# Stop IK effect and reset bones_global_pose_override on Skeleton
skeleton_ik_node.stop()
# Apply full IK effect
skeleton_ik_node.set_influence(1.0)
# Apply half IK effect
skeleton_ik_node.set_influence(0.5)
# Apply zero IK effect (a value at or below 0.01 also removes bones_global_pose_override on Skeleton)
skeleton_ik_node.set_influence(0.0)
Propiedades
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Métodos
get_parent_skeleton() const |
|
void |
|
void |
stop() |
Descripciones de Propiedades
Obsoleto: Use SkeletonModifier3D.influence instead.
Valor de interpolación de cuánto se aplican los resultados de la IK a la cadena de huesos del esqueleto actual. Un valor de 1.0 sobreescribirá por completo todas las transformaciones de los huesos del esqueleto, mientras que un valor de 0.0 desactivará visualmente el SkeletonIK.
Vector3 magnet = Vector3(0, 0, 0) 🔗
Posición del objetivo secundario (el primero es la propiedad target o target_node) para la cadena de IK. Usa la posición del imán (objetivo polar) para controlar la flexión de la cadena de IK. Solo funciona si la cadena de huesos tiene más de 2 huesos. La posición del hueso central de la cadena se interpolará linealmente con la posición del imán.
Número de bucles de iteración utilizados por el solucionador de IK para producir resultados más precisos (y elegantes) en la cadena de huesos.
La distancia mínima entre el hueso y el objetivo. Si la distancia es inferior a este valor, el solucionador de IK detiene las iteraciones posteriores.
bool override_tip_basis = true 🔗
Si es true, sobrescribe la rotación del hueso de la punta con la rotación del target (o target_node si está definido).
StringName root_bone = &"" 🔗
void set_root_bone(value: StringName)
StringName get_root_bone()
El nombre del hueso raíz actual, el primer hueso de la cadena de IK.
Transform3D target = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗
void set_target_transform(value: Transform3D)
Transform3D get_target_transform()
Primer objetivo de la cadena de IK donde se coloca el hueso de la punta y, si override_tip_basis es true, cómo se rota el hueso de la punta. Si hay una ruta de target_node disponible, se utiliza la transformación del nodo en su lugar y se ignora esta propiedad.
NodePath target_node = NodePath("") 🔗
Nodo objetivo NodePath para la cadena de IK. Si está disponible, se utiliza el Transform3D actual del nodo en lugar de la propiedad target.
StringName tip_bone = &"" 🔗
void set_tip_bone(value: StringName)
StringName get_tip_bone()
El nombre del hueso de la punta actual, el último hueso de la cadena de IK colocado en la transformación de target (o target_node si está definido).
Si es true, instruye al solucionador de IK para que considere el objetivo magnético secundario (objetivo polar) al calcular la cadena de huesos. Usa la posición del imán (objetivo polar) para controlar la flexión de la cadena de IK.
Descripciones de Métodos
Skeleton3D get_parent_skeleton() const 🔗
Devuelve el nodo padre Skeleton3D que estaba presente cuando SkeletonIK entró en el árbol de escenas. Devuelve null si el nodo padre no era un nodo Skeleton3D cuando SkeletonIK3D entró en el árbol de escenas.
Devuelve true si SkeletonIK está aplicando efectos de IK en fotogramas continuos a los huesos del Skeleton3D. Devuelve false si SkeletonIK está detenido o si se usó start() con el parámetro one_time establecido en true.
void start(one_time: bool = false) 🔗
Comienza a aplicar efectos de IK en cada fotograma a los huesos del Skeleton3D, pero solo tendrá efecto a partir del siguiente fotograma. Si one_time es true, esto tendrá efecto inmediatamente pero también se reiniciará en el siguiente fotograma.
void stop() 🔗
Deja de aplicar efectos de IK en cada fotograma a los huesos del Skeleton3D y también llama a Skeleton3D.clear_bones_global_pose_override() para eliminar las sobrescrituras existentes en todos los huesos.