SpringBoneSimulator3D
Eredita: SkeletonModifier3D < Node3D < Node < Object
Uno SkeletonModifier3D per applicare un'oscillazione inerziale alle catene d'ossa.
Descrizione
Questo SkeletonModifier3D può essere utilizzato per muovere 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.
Proprietà
|
||
|
Metodi
Enumerazioni
enum BoneDirection: 🔗
BoneDirection BONE_DIRECTION_PLUS_X = 0
Valore enumerato per l'asse +X.
BoneDirection BONE_DIRECTION_MINUS_X = 1
Valore enumerato per l'asse -X.
BoneDirection BONE_DIRECTION_PLUS_Y = 2
Valore enumerato per l'asse +Y.
BoneDirection BONE_DIRECTION_MINUS_Y = 3
Valore enumerato per l'asse -Y.
BoneDirection BONE_DIRECTION_PLUS_Z = 4
Valore enumerato per l'asse +Z.
BoneDirection BONE_DIRECTION_MINUS_Z = 5
Valore enumerato per l'asse -X.
BoneDirection BONE_DIRECTION_FROM_PARENT = 6
Valore enumerato per l'asse da un osso padre all'osso figlio.
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.
enum RotationAxis: 🔗
RotationAxis ROTATION_AXIS_X = 0
Valore enumerato per la rotazione dell'asse X.
RotationAxis ROTATION_AXIS_Y = 1
Valore enumerato per la rotazione dell'asse Y.
RotationAxis ROTATION_AXIS_Z = 2
Valore enumerato per la rotazione dell'asse Z.
RotationAxis ROTATION_AXIS_ALL = 3
Valore enumerato per la rotazione senza vincoli.
RotationAxis ROTATION_AXIS_CUSTOM = 4
Valore enumerato per un'asse facoltativo di rotazione. Vedi anche set_joint_rotation_axis_vector().
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à.
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 🔗
Restituisce la direzione della coda dell'osso finale della catena d'ossa quando is_end_bone_extended() è true.
float get_end_bone_length(index: int) const 🔗
Restituisce la lunghezza della coda dell'osso finale della catena d'ossa quando is_end_bone_extended() è 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 🔗
Restituisce il vettore dell'asse di rotazione per l'articolazione specificata nella catena d'ossa. Questo vettore rappresenta l'asse attorno al quale l'articolazione può ruotare. È determinato in base all'asse di rotazione impostato per l'articolazione.
Se get_joint_rotation_axis() è ROTATION_AXIS_ALL, questo metodo restituisce 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 🔗
Restituisce il vettore dell'asse di rotazione della catena d'ossa. Questo vettore rappresenta l'asse attorno al quale l'articolazione può ruotare. È determinato in base all'asse di rotazione impostato per la catenna d'ossa.
Se get_rotation_axis() è ROTATION_AXIS_ALL, questo metodo restituisce 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 🔗
Restituisce true se l'osso finale è prolungato per avere la coda.
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 la coda.
La configurazione della coda allungata viene assegnata all'ultimo elemento nella lista delle articolazioni.
In altre parole, se imposti enabled è 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 di Skeleton3D.get_bone_rest(). Se axis è ROTATION_AXIS_CUSTOM, è possibile specificare qualsiasi asse.
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) 🔗
Imposta il vettore dell'asse di rotazione per l'articolazione specificata nella catena d'ossa.
Questo vettore è normalizzato da un processo interno e rappresenta l'asse attorno al quale la catena d'ossa può ruotare.
Se la lunghezza del vettore è 0, è considerato come sinonimo di 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 di Skeleton3D.get_bone_rest(); se axis è ROTATION_AXIS_CUSTOM, è possibile specificare qualsiasi asse.
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) 🔗
Imposta il vettore dell'asse di rotazione della catena d'ossa. Il valore è memorizzato nella cache di ogni impostazione di articolazione nella lista di articolazioni.
Questo vettore è normalizzato da un processo interno e rappresenta l'asse attorno al quale la catena d'ossa può ruotare.
Se la lunghezza del vettore è 0, è considerato come sinonimo di 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.