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
Eredita: SkeletonModifier3D < Node3D < Node < Object
Uno SkeletonModifier3D per applicare un'oscillazione inerziale alle catene d'ossa.
Descrizione
Questo SkeletonModifier3D può servire per far oscillare capelli, stoffa e code. Questo modificatore si comporta in modo diverso da PhysicalBoneSimulator3D in quanto tenta di restituire la posa originale dopo la modifica.
Se si configurano set_root_bone() e set_end_bone(), viene trattato come una catena di ossa. Nota che non supporta una catena ramificata come le catene a forma di Y.
Quando viene creata una catena di ossa, viene generato un array dalle ossa che esistono nel mezzo ed elencato nella lista delle articolazioni.
A ciascuna articolazione è possibile applicare diverse proprietà, come set_joint_stiffness(), set_joint_drag() e set_joint_gravity().
Per semplicità, è possibile impostare i valori per tutte le articolazioni allo stesso tempo utilizzando una Curve. Se si desidera specificare valori dettagliati individualmente, imposta set_individual_config() su true.
Per la simulazione della fisica, SpringBoneSimulator3D può avere figli come collisioni autonome che non sono correlate al PhysicsServer3D, vedi anche SpringBoneCollision3D.
Attenzione: Uno SpringBoneSimulator3D ridimensionato probabilmente non si comporterà come previsto. Assicurarsi che lo Skeleton3D genitore e le sue ossa non siano ridimensionati.
Nota: La maggior parte dei metodi di questa classe accetta un parametro index. Questo parametro specifica quale voce nell'elenco delle impostazioni restituire, se l'IK ha più voci (ad esempio, settings/<index>/root_bone_name).
Proprietà
|
||
|
||
|
Metodi
Enumerazioni
enum CenterFrom: 🔗
CenterFrom CENTER_FROM_WORLD_ORIGIN = 0
L'origine del mondo è definita come centro.
CenterFrom CENTER_FROM_NODE = 1
Il Node3D specificato da set_center_node() è definito come centro.
Se il Node3D non viene trovato, il Skeleton3D genitore è trattato come centro.
CenterFrom CENTER_FROM_BONE = 2
L'origine della posa d'osso dello Skeleton3D genitore specificato da set_center_bone() è definito come centro.
Se il Node3D non viene trovato, lo Skeleton3D genitore è trattato come centro.
Descrizioni delle proprietà
Vector3 external_force = Vector3(0, 0, 0) 🔗
La forza costante che influenza sempre le ossa. È uguale al risultato quando lo Skeleton3D genitore si muove a questa velocità nella direzione opposta.
Questo è utile per effetti come il vento e l'antigravità.
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.
Il numero di impostazioni.
Descrizioni dei metodi
bool are_all_child_collisions_enabled(index: int) const 🔗
Restituisce true se tutti i figli SpringBoneCollision3D sono contenuti nella lista di collisioni all'indice index nelle impostazioni.
void clear_collisions(index: int) 🔗
Cancella tutte le collisioni dalla lista delle collisioni all'indice index nelle impostazioni quando are_all_child_collisions_enabled() è false.
void clear_exclude_collisions(index: int) 🔗
Cancella tutte le collisioni escluse dalla lista delle collisioni all'indice index nelle impostazioni quando are_all_child_collisions_enabled() è false.
void clear_settings() 🔗
Cancella tutte le impostazioni.
int get_center_bone(index: int) const 🔗
Restituisce il percorso di nodo centrale della catena d'ossa.
String get_center_bone_name(index: int) const 🔗
Restituisce il nome dell'osso centrale della catena d'ossa.
CenterFrom get_center_from(index: int) const 🔗
Restituisce l'origine del centro nella catena d'ossa.
NodePath get_center_node(index: int) const 🔗
Restituisce il percorso di nodo centrale della catena d'ossa.
int get_collision_count(index: int) const 🔗
Restituisce il numero di collisioni della lista delle collisioni della catena d'ossa quando are_all_child_collisions_enabled() è false.
NodePath get_collision_path(index: int, collision: int) const 🔗
Restituisce il percorso di nodo del SpringBoneCollision3D in collision nella lista delle collisioni della catena d'ossa quando are_all_child_collisions_enabled() è false.
float get_drag(index: int) const 🔗
Restituisce la curva di smorzamento per la forza di resistenza della catena d'ossa.
Curve get_drag_damping_curve(index: int) const 🔗
Restituisce la curva di smorzamento per la forza di resistenza della catena d'ossa.
int get_end_bone(index: int) const 🔗
Restituisce l'indice dell'osso finale della catena d'ossa.
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 🔗
Restituisce il nome dell'osso finale della coda d'ossa.
int get_exclude_collision_count(index: int) const 🔗
Restituisce il numero di collisioni escluse della lista delle collisioni escluse della catena d'ossa quando are_all_child_collisions_enabled() è true.
NodePath get_exclude_collision_path(index: int, collision: int) const 🔗
Restituisce il percorso di nodo del SpringBoneCollision3D in collision nella lista di esclusioni delle collisioni della catena d'ossa quando are_all_child_collisions_enabled() è true.
float get_gravity(index: int) const 🔗
Restituisce la quantità di gravità della catena d'ossa.
Curve get_gravity_damping_curve(index: int) const 🔗
Restituisce la curva di smorzamento per la quantità di gravità della catena d'ossa.
Vector3 get_gravity_direction(index: int) const 🔗
Restituisce la direzione di gravità della catena d'ossa.
int get_joint_bone(index: int, joint: int) const 🔗
Restituisce l'indice dell'osso in joint nella lista delle articolazioni della catena d'ossa.
String get_joint_bone_name(index: int, joint: int) const 🔗
Restituisce il nome dell'osso in joint nella lista delle articolazioni della catena d'ossa.
int get_joint_count(index: int) const 🔗
Restituisce il numero di articolazioni nella lista delle articolazioni della catena d'ossa.
float get_joint_drag(index: int, joint: int) const 🔗
Restituisce la forza di resistenza in joint nella lista delle articolazioni della catena d'ossa.
float get_joint_gravity(index: int, joint: int) const 🔗
Restituisce la quantità di gravità in joint nella lista delle articolazioni della catena d'ossa.
Vector3 get_joint_gravity_direction(index: int, joint: int) const 🔗
Restituisce la direzione di gravità in joint nella lista delle articolazioni della catena d'ossa.
float get_joint_radius(index: int, joint: int) const 🔗
Restituisce il raggio in joint nella lista delle articolazioni della catena d'ossa.
RotationAxis get_joint_rotation_axis(index: int, joint: int) const 🔗
Restituisce l'asse di rotazione in joint nella lista delle articolazioni della catena d'ossa.
Vector3 get_joint_rotation_axis_vector(index: int, joint: int) const 🔗
Returns the rotation axis vector for the specified joint in the bone chain. This vector represents the axis around which the joint can rotate. It is determined based on the rotation axis set for the joint.
If get_joint_rotation_axis() is SkeletonModifier3D.ROTATION_AXIS_ALL, this method returns Vector3(0, 0, 0).
float get_joint_stiffness(index: int, joint: int) const 🔗
Restituisce la forza di rigidità in joint nella lista delle articolazioni della catena d'ossa.
float get_radius(index: int) const 🔗
Restituisce il raggio di un'articolazione della catena d'ossa.
Curve get_radius_damping_curve(index: int) const 🔗
Restituisce la curva di smorzamento per il raggio di un'articolazione della catena d'ossa.
int get_root_bone(index: int) const 🔗
Restituisce l'indice dell'osso radice della catena d'ossa.
String get_root_bone_name(index: int) const 🔗
Restituisce il nome dell'osso radice della catena d'ossa.
RotationAxis get_rotation_axis(index: int) const 🔗
Restituisce l'asse di rotazione della catena d'ossa.
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 🔗
Restituisce la forza di rigidità della catena d'ossa.
Curve get_stiffness_damping_curve(index: int) const 🔗
Restituisce la curva di smorzamento per la forza di rigidità della catena d'ossa.
bool is_config_individual(index: int) const 🔗
Restituisce true se la configurazione può essere modificata individualmente per ogni articolazione.
bool is_end_bone_extended(index: int) const 🔗
Returns true if the end bone is extended to have a tail.
void reset() 🔗
Reimposta uno stato di simulazione rispetto alla posa d'ossa attuale.
È utile per evitare che il risultato della simulazione diventi brusco. Ad esempio, chiamandolo subito dopo una chiamata a AnimationPlayer.play() senza dissolvenza, o all'interno del precedente segnale SkeletonModifier3D.modification_processed se la sua condizione cambia in modo significativo.
void set_center_bone(index: int, bone: int) 🔗
Imposta l'indice dell'osso centrale della catena d'ossa.
void set_center_bone_name(index: int, bone_name: String) 🔗
Imposta il nome dell'osso centrale della catena d'ossa.
void set_center_from(index: int, center_from: CenterFrom) 🔗
Imposta l'origine del centro nella catena d'ossa.
Il movimento delle ossa viene calcolato in base alla differenza nella distanza relativa tra centro e osso nei frame precedenti e successivi.
Ad esempio, se lo Skeleton3D genitore è utilizzato come centro, le ossa sono considerate come non mosse se lo Skeleton3D si muove nel mondo.
In questo caso, solo un cambiamento nella posa dell'osso viene considerato un movimento d'osso.
void set_center_node(index: int, node_path: NodePath) 🔗
Imposta il percorso di nodo centrale della catena d'ossa.
void set_collision_count(index: int, count: int) 🔗
Imposta il numero di collisioni nella lista delle collisioni all'indice index nelle impostazioni quando are_all_child_collisions_enabled() è false.
void set_collision_path(index: int, collision: int, node_path: NodePath) 🔗
Imposta il percorso di nodo del SpringBoneCollision3D in collision nella lista di collisioni della catena d'ossa quando are_all_child_collisions_enabled() è false.
void set_drag(index: int, drag: float) 🔗
Restituisce la forza di resistenza della catena d'ossa. Maggiore è il valore, più soppresse sono le oscillazioni.
Questo valore viene ridimensionato da set_drag_damping_curve() e memorizzato nella cache in ogni impostazione d'articolazione nella lista delle articolazioni.
void set_drag_damping_curve(index: int, curve: Curve) 🔗
Imposta la curva di smorzamento per la forza di resistenza della catena d'ossa.
void set_enable_all_child_collisions(index: int, enabled: bool) 🔗
Se enabled è true, tutti i SpringBoneCollision3D figlio sono in collisione e set_exclude_collision_path() è abilitato come lista di esclusione all'indice index nelle impostazioni.
Se enabled è false, è necessario registrare manualmente tutte le collisioni valide con set_collision_path().
void set_end_bone(index: int, bone: int) 🔗
Imposta l'indice dell'osso finale della catena d'ossa.
void set_end_bone_direction(index: int, bone_direction: BoneDirection) 🔗
Imposta la direzione della coda dell'osso finale della catena d'ossa quando is_end_bone_extended() è true.
void set_end_bone_length(index: int, length: float) 🔗
Imposta la lunghezza della coda dell'osso finale della catena d'ossa quando is_end_bone_extended() è true.
void set_end_bone_name(index: int, bone_name: String) 🔗
Imposta il nome dell'osso finale della coda d'ossa.
Nota: L'osso finale deve essere l'osso radice o un figlio dell'osso radice. Se sono uguali, la coda deve essere estesa con set_extend_end_bone() per far oscillare l'osso.
void set_exclude_collision_count(index: int, count: int) 🔗
Imposta il numero di collisioni escluse nell'elenco delle collisioni escluse in index nelle impostazioni quando are_all_child_collisions_enabled() è true.
void set_exclude_collision_path(index: int, collision: int, node_path: NodePath) 🔗
Imposta il percorso di nodo del SpringBoneCollision3D in collision nella lista di esclusioni delle collisioni della catena d'ossa quando are_all_child_collisions_enabled() è true.
void set_extend_end_bone(index: int, enabled: bool) 🔗
Se enabled è true, l'osso finale è allungato per avere una coda.
La configurazione della coda allungata è assegnata all'ultimo elemento nella lista delle articolazioni. In altre parole, se enabled è impostato su false, la configurazione dell'ultimo elemento nella lista delle articolazioni non ha alcun effetto nel risultato simulato.
void set_gravity(index: int, gravity: float) 🔗
Imposta la quantità di gravità della catena d'ossa. Questo valore non è un'accelerazione, ma una velocità costante di movimento in set_gravity_direction().
Se gravity non è 0, la posa modificata non tornerà alla posa originale poiché è sempre influenzata dalla gravità.
Questo valore viene ridimensionato da set_gravity_damping_curve() e memorizzato nella cache in ogni impostazione d'articolazione nella lista delle articolazioni.
void set_gravity_damping_curve(index: int, curve: Curve) 🔗
Imposta la curva di smorzamento per la quantità di gravità della catena d'ossa.
void set_gravity_direction(index: int, gravity_direction: Vector3) 🔗
Imposta la direzione di gravità della catena d'ossa. Questo valore viene normalizzato internamente e poi moltiplicato per set_gravity().
Il valore viene memorizzato nella cache in ogni impostazione d'articolazione nella lista delle articolazioni.
void set_individual_config(index: int, enabled: bool) 🔗
Se enabled è true, la configurazione può essere modificata individualmente per ogni articolazione.
void set_joint_drag(index: int, joint: int, drag: float) 🔗
Imposta la forza di resistenza in joint nella lista delle articolazioni della catena d'ossa quando is_config_individual() è true.
void set_joint_gravity(index: int, joint: int, gravity: float) 🔗
Imposta la quantità di gravità in joint nella lista delle articolazioni della catena d'ossa quando is_config_individual() è true.
void set_joint_gravity_direction(index: int, joint: int, gravity_direction: Vector3) 🔗
Imposta la direzione di gravità in joint nella lista delle articolazioni della catena d'ossa quando is_config_individual() è true.
void set_joint_radius(index: int, joint: int, radius: float) 🔗
Imposta il raggio dell'articolazione in joint nella lista delle articolazioni della catena d'ossa quando is_config_individual() è true.
void set_joint_rotation_axis(index: int, joint: int, axis: RotationAxis) 🔗
Imposta l'asse di rotazione dell'articolazione joint nell'elenco delle articolazioni della catena d'ossa quando is_config_individual() è true.
Gli assi si basano sullo spazio della posa di riferimento. Se axis è SkeletonModifier3D.ROTATION_AXIS_CUSTOM, è possibile specificare qualsiasi asse.
Qui, la posa di riferimento è la posa dell'osso immediatamente prima della simulazione.
Nota: L'asse di rotazione e il vettore in avanti non dovrebbero essere collineari per evitare rotazioni indesiderate poiché SpringBoneSimulator3D non tiene conto delle forze di torsione.
void set_joint_rotation_axis_vector(index: int, joint: int, vector: Vector3) 🔗
Sets the rotation axis vector for the specified joint in the bone chain.
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_joint_stiffness(index: int, joint: int, stiffness: float) 🔗
Imposta la forza di rigidità in joint nella lista delle articolazioni della catena d'ossa quando is_config_individual() è true.
void set_radius(index: int, radius: float) 🔗
Imposta il raggio di un'articolazione della catena d'ossa. È utilizzato per muovere e scorrere con il SpringBoneCollision3D nella lista di collisioni.
Il valore è ridimensionato da set_radius_damping_curve() e memorizzato nella cache in ogni impostazione d'articolazione nella lista delle articolazioni.
void set_radius_damping_curve(index: int, curve: Curve) 🔗
Imposta la curva di smorzamento per il raggio di un'articolazione della catena d'ossa.
void set_root_bone(index: int, bone: int) 🔗
Imposta l'indice dell'osso radice della catena d'ossa.
void set_root_bone_name(index: int, bone_name: String) 🔗
Imposta il nome dell'osso radice della catena d'ossa.
void set_rotation_axis(index: int, axis: RotationAxis) 🔗
Imposta l'asse di rotazione della catena d'ossa. Se impostato su un'asse specifico, si comporta come un giunto a cerniera. Questo valore viene memorizzato nella cache in ogni impostazione d'articolazione nella lista delle articolazioni.
Gli assi si basano sullo spazio della posa di riferimento. Se axis è SkeletonModifier3D.ROTATION_AXIS_CUSTOM, è possibile specificare qualsiasi asse.
Qui, la posa di riferimento è la posa dell'osso immediatamente prima della simulazione.
Nota: L'asse di rotazione e il vettore in avanti non dovrebbero essere collineari per evitare rotazioni indesiderate poiché SpringBoneSimulator3D non tiene conto delle forze di torsione.
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) 🔗
Restituisce la forza di rigidità della catena d'ossa. Maggiore è il valore, più velocemente recupera la sua posa originale.
Se stiffness è 0, la posa modificata non tornerà alla posa originale.
Questo valore viene ridimensionato da set_stiffness_damping_curve() e memorizzato nella cache in ogni impostazione d'articolazione nella lista delle articolazioni.
void set_stiffness_damping_curve(index: int, curve: Curve) 🔗
Imposta la curva di smorzamento per la forza di rigidità della catena d'ossa.