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...
BoneTwistDisperser3D
Наследует: SkeletonModifier3D < Node3D < Node < Object
Узел, который распространяет и распределяет скручивание дочерней кости на родительские кости.
Описание
Класс BoneTwistDisperser3D обеспечивает плавную интерполяцию скручивания между несколькими костями, распределяя скручивание конечной кости по родительским. При этом изменяется только скручивание, без изменения глобальной позиции каждого сустава.
Это полезно для плавного скручивания костей в сочетании с CopyTransformModifier3D и IK.
Примечание: Если извлечённое скручивание превышает 180 градусов, происходит переворот. Это поведение аналогично ConvertTransformModifier3D.
Примечание: Большинство методов этого класса принимают параметр index. Он указывает, какую запись из списка настроек следует возвращать, если IK содержит несколько записей (например, settings/<index>/root_bone_name).
Свойства
|
||
|
Методы
Перечисления
enum DisperseMode: 🔗
DisperseMode DISPERSE_MODE_EVEN = 0
Назначьте значения таким образом, чтобы они монотонно возрастали от 0.0 до 1.0, обеспечивая при этом равенство всех весов. Например, для пяти суставов значения будут 0.2, 0.4, 0.6, 0.8 и 1.0, начиная с корневой кости.
DisperseMode DISPERSE_MODE_WEIGHTED = 1
Назначьте значения таким образом, чтобы они монотонно возрастали от 0.0 до 1.0 в зависимости от длины костей между суставными сегментами. См. также set_weight_position().
DisperseMode DISPERSE_MODE_CUSTOM = 2
Вы можете присваивать произвольные значения списку суставов. См. также set_joint_twist_amount().
Когда is_end_bone_extended() имеет значение false, дочерний элемент опорной кости существует исключительно для определения оси скручивания, поэтому его пользовательское значение абсолютно никак не влияет на результат.
Описания свойств
bool mutable_bone_axes = true 🔗
Если true, решатель извлекает ось кости из положения кости каждый кадр.
Если false, решатель извлекает ось кости из положения кости и кэширует её.
Количество настроек.
Описания метода
void clear_settings() 🔗
Очищает все настройки.
Curve get_damping_curve(index: int) const 🔗
Возвращает кривую затухания, когда get_disperse_mode() равен DISPERSE_MODE_CUSTOM.
DisperseMode get_disperse_mode(index: int) const 🔗
Возвращает значение, указывающее, следует ли использовать автоматическое присвоение суммы или разрешить ручное присвоение.
int get_end_bone(index: int) const 🔗
Возвращает индекс конечной кости цепочки костей.
BoneDirection get_end_bone_direction(index: int) const 🔗
Возвращает направление хвоста конечной кости цепочки костей, когда is_end_bone_extended() имеет значение true.
String get_end_bone_name(index: int) const 🔗
Возвращает имя конечной кости цепочки костей.
int get_joint_bone(index: int, joint: int) const 🔗
Возвращает индекс кости в joint в списке суставов цепочки костей.
String get_joint_bone_name(index: int, joint: int) const 🔗
Возвращает имя кости в joint в списке суставов цепочки костей.
int get_joint_count(index: int) const 🔗
Возвращает количество суставов в списке суставов цепочки костей.
float get_joint_twist_amount(index: int, joint: int) const 🔗
Возвращает величину скручивания в joint в списке суставов цепочки костей, когда get_disperse_mode() имеет значение DISPERSE_MODE_CUSTOM.
int get_reference_bone(index: int) const 🔗
Возвращает опорную кость для извлечения скручивания в настройке по адресу index.
Эта кость является либо концом цепочки, либо ее родительской, в зависимости от is_end_bone_extended().
String get_reference_bone_name(index: int) const 🔗
Возвращает имя опорной кости для извлечения значения скручивания в настройке по адресу index.
Эта кость является либо концом цепочки, либо ее родительской костью, в зависимости от is_end_bone_extended().
int get_root_bone(index: int) const 🔗
Возвращает индекс корневой кости цепочки костей.
String get_root_bone_name(index: int) const 🔗
Возвращает имя корневой кости цепочки костей.
Quaternion get_twist_from(index: int) const 🔗
Возвращает вращение в произвольное состояние перед поворотом для текущей позы кости, чтобы извлечь поворот, когда is_twist_from_rest() имеет значение false.
float get_weight_position(index: int) const 🔗
Возвращает позицию, в которой следует разделить сегмент между суставами для присвоения весов, когда get_disperse_mode() равен DISPERSE_MODE_WEIGHTED.
bool is_end_bone_extended(index: int) const 🔗
Возвращает true, если конечная кость удлинена и имеет хвост.
bool is_twist_from_rest(index: int) const 🔗
Возвращает true, если величина скручивания вычисляется как разница между состоянием покоя кости и текущим положением кости.
void set_damping_curve(index: int, curve: Curve) 🔗
Устанавливает кривую затухания, когда get_disperse_mode() имеет значение DISPERSE_MODE_CUSTOM.
void set_disperse_mode(index: int, disperse_mode: DisperseMode) 🔗
Определяет, следует ли использовать автоматическое присвоение сумм или разрешить ручное присвоение.
void set_end_bone(index: int, bone: int) 🔗
Устанавливает индекс конечной кости в костной цепи.
void set_end_bone_direction(index: int, bone_direction: BoneDirection) 🔗
Устанавливает направление хвоста конечной кости цепочки костей, когда is_end_bone_extended() имеет значение true.
void set_end_bone_name(index: int, bone_name: String) 🔗
Задает имя конечной кости цепочки костей.
Примечание: Конечная кость должна быть дочерней по отношению к корневой кости.
void set_extend_end_bone(index: int, enabled: bool) 🔗
Если enabled равно true, конечная кость удлиняется, образуя хвост.
Если enabled равно false, get_reference_bone() становится родительским элементом для конечной кости и использует вектор к конечной кости в качестве оси скручивания.
void set_joint_twist_amount(index: int, joint: int, twist_amount: float) 🔗
Устанавливает величину скручивания в joint в списке суставов цепочки костей, когда get_disperse_mode() имеет значение DISPERSE_MODE_CUSTOM.
void set_root_bone(index: int, bone: int) 🔗
Устанавливает индекс корневой кости цепочки костей.
void set_root_bone_name(index: int, bone_name: String) 🔗
Задает имя корневой кости цепочки костей.
void set_twist_from(index: int, from: Quaternion) 🔗
Устанавливает вращение в произвольное состояние перед скручиванием для текущей позы кости, чтобы извлечь скручивание, когда is_twist_from_rest() равен false.
Другими словами, вызвав set_twist_from() с помощью SkeletonModifier3D.modification_processed конкретного SkeletonModifier3D, вы можете извлечь только скручивания, сгенерированные модификаторами, обработанными после, но до этого BoneTwistDisperser3D.
void set_twist_from_rest(index: int, enabled: bool) 🔗
Если enabled равно true, то величина скручивания вычисляется как разница между положением кости в состоянии покоя и текущим положением кости.
Если enabled равно false, то величина скручивания вычисляется как разница между get_twist_from() и текущим положением кости. См. также set_twist_from().
void set_weight_position(index: int, weight_position: float) 🔗
Задает положение, в котором следует разделить сегмент между суставами для присвоения весов, когда get_disperse_mode() равен DISPERSE_MODE_WEIGHTED.
Например, если weight_position равен 0.5, и между тремя суставами существуют два костных сегмента длиной 1.0, каждому суставу присваиваются веса от корня до конца в соотношениях 0.5, 1.0 и 0.5. Тогда значения становятся 0.25, 0.75 и 1.0 соответственно.