BoneTwistDisperser3D
Наследует: SkeletonModifier3D < Node3D < Node < Object
Узел, который распространяет и распределяет скручивание дочерней кости на родительские кости.
Описание
Этот BoneTwistDisperser3D позволяет плавно интерполировать скручивание между несколькими костями, распределяя скручивание конечной кости на родительские кости. Это изменяет только скручивание, не изменяя глобальное положение каждого сустава.
Это полезно для плавного скручивания костей в сочетании с CopyTransformModifier3D и IK.
Примечание: Если извлеченное скручивание превышает 180 градусов, происходит переворачивание. Это аналогично ConvertTransformModifier3D.
Свойства
|
||
|
Методы
Перечисления
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 соответственно.