reckfellENGINE

SoftBody3D

Деформируемое физическое тело на основе треугольного меша.

На этой странице
class SoftBody3DReckfellSharpНаследует MeshInstance3D

SoftBody3D симулирует точки и связи сетки. Он использует Mesh и закрепления вершин, а не обычный набор дочерних CollisionShape3D. В текущей реализации создаётся собственная изменяемая копия первой поверхности; проверьте топологию и индексы после импорта.

PointCount отражает число вершин первой поверхности и не является самостоятельным подтверждением готового физического пространства. Обращайтесь к точкам после добавления тела в мир. Закрепление, Layer/Mask и ParentCollisionIgnore решают разные задачи. Показанный пример проверен с ReckfellPhysics3D и Jolt Physics; произвольные импортированные ткани/контакты требуют своей проверки.

Рабочий пример.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

SoftBody3DКонструктор
# SoftBody3D
C#
public SoftBody3D();

Свойства13

CollisionLayerСвойство
# CollisionLayer
C#
public uint CollisionLayer { get; set; }

Физические слои это SoftBody3D в. Объекты столкновения могут существовать в одном или более из 32 различных слоев. SoftBody3D.CollisionMask. Примечание: Object A может обнаружить контакт с объектом B только в том случае, если объект B находится в любом из слоев объекта A сканирования. Слои и маски столкновений в документации для дополнительной информации.

CollisionMaskСвойство
# CollisionMask
C#
public uint CollisionMask { get; set; }

Физические слои это SoftBody3D сканирование. Объекты столкновения могут просканировать один или более из 32 различных слоев. SoftBody3D.CollisionLayer. Примечание: Object A может обнаружить контакт с объектом B только в том случае, если объект B находится в любом из слоев объекта A сканирования. Слои и маски столкновений в документации для дополнительной информации.

DampingCoefficientСвойство
# DampingCoefficient
C#
public float DampingCoefficient { get; set; }

Коэффициент демпфирования тела. Более высокие значения будут более заметно замедлять тело при приложении сил.

DisableModeСвойство
# DisableMode
C#
public SoftBody3D.DisableModeEnum DisableMode { get; set; }

Определяет поведение в физике, когда Entity.ProcessMode установлен в Entity.ProcessModeEnum.Disabled.

DragCoefficientСвойство
# DragCoefficient
C#
public float DragCoefficient { get; set; }

Коэффициент сопротивления тела. Более высокие значения увеличивают сопротивление воздуха этого тела. Примечание: Это значение в настоящее время не используется реализацией физики Reckfell по умолчанию.

LinearStiffnessСвойство
# LinearStiffness
C#
public float LinearStiffness { get; set; }

Коэффициент сопротивления изменению формы. Одинаковое значение не гарантирует одинаковый результат при иной топологии, шаге или backend. Начните с простой сетки и проверяйте деформацию/стоимость.

ParentCollisionIgnoreСвойство
# ParentCollisionIgnore
C#
public EntityPath ParentCollisionIgnore { get; set; }

Путь для исключения соответствующего родительского физического объекта из столкновений. Это не закрепление ткани к скелету и не общая замена Layer/Mask.

PointCountСвойство
# PointCount
C#
public int PointCount { get; }

Число вершин первой поверхности текущего Mesh. Само значение не подтверждает, что произвольное тело уже добавлено в физическое пространство или симуляция начала обновлять точки.

PressureCoefficientСвойство
# PressureCoefficient
C#
public float PressureCoefficient { get; set; }

Коэффициент давления этого мягкого тела. Имитирует нарастание давления изнутри этого тела. Более высокие значения увеличивают силу этого эффекта.

RayPickableСвойство
# RayPickable
C#
public bool RayPickable { get; set; }

Если true, SoftBody3D будет реагировать на RayCast3D.

ShrinkingFactorСвойство
# ShrinkingFactor
C#
public float ShrinkingFactor { get; set; }

Масштабирует оставшиеся длины ограничений ребер SoftBody3D. Положительные значения сжимают сетку, а отрицательные расширяют ее. Например, значение 0.1 сокращает края сетки на 10%, а -0.1 расширяет края на 10%. Примечание: SoftBody3D.ShrinkingFactor лучше всего использовать на поверхностных сетках с закрепленными точками.

SimulationPrecisionСвойство
# SimulationPrecision
C#
public int SimulationPrecision { get; set; }

Увеличение этого значения улучшит результаты моделирования, но может повлиять на производительность. Используйте с осторожностью.

TotalMassСвойство
# TotalMass
C#
public float TotalMass { get; set; }

Масса SoftBody3D.

Методы41

AddCollisionExceptionWithvoid
# AddCollisionExceptionWith
C#
public void AddCollisionExceptionWith(Entity body);

Добавляет тело в список тел, с которыми данное тело не может столкнуться.

Параметры
ИмяТипПо умолчанию
bodyEntity—
ApplyCentralForcevoid
# ApplyCentralForce
C#
public void ApplyCentralForce(Vector3 force);

Распределяет и применяет силу ко всем точкам. Сила зависит от времени и должна применяться при каждом обновлении физики.

Параметры
ИмяТипПо умолчанию
forceVector3—
ApplyCentralImpulsevoid
# ApplyCentralImpulse
C#
public void ApplyCentralImpulse(Vector3 impulse);

Распределяет и применяет импульс ко всем точкам. Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").

Параметры
ИмяТипПо умолчанию
impulseVector3—
ApplyForcevoid
# ApplyForce
C#
public void ApplyForce(int pointIndex, Vector3 force);

Прикладывает силу к точке. Сила зависит от времени и должна применяться при каждом обновлении физики.

Параметры
ИмяТипПо умолчанию
pointIndexint—
forceVector3—
ApplyImpulsevoid
# ApplyImpulse
C#
public void ApplyImpulse(int pointIndex, Vector3 impulse);

Применяет импульс к точке. Импульс не зависит от времени! Применение импульса в каждом кадре приведет к силе, зависящей от частоты кадров. По этой причине его следует использовать только при моделировании одноразовых ударов (в противном случае используйте функции "_force").

Параметры
ИмяТипПо умолчанию
pointIndexint—
impulseVector3—
GetCollisionExceptionsReckfell.Collections.Array<PhysicsBody3D>
# GetCollisionExceptions
C#
public Reckfell.Collections.Array<PhysicsBody3D> GetCollisionExceptions();

Возвращает массив узлов, которые были добавлены как исключения столкновений для этого тела.

Возвращает Reckfell.Collections.Array<PhysicsBody3D>
GetCollisionLayeruint
# GetCollisionLayer
C#
public uint GetCollisionLayer();
Возвращает uint
GetCollisionLayerValuebool
# GetCollisionLayerValue
C#
public bool GetCollisionLayerValue(int layerNumber);

Возвращает, включен ли указанный слой SoftBody3D.CollisionLayer, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetCollisionMaskuint
# GetCollisionMask
C#
public uint GetCollisionMask();
Возвращает uint
GetCollisionMaskValuebool
# GetCollisionMaskValue
C#
public bool GetCollisionMaskValue(int layerNumber);

Возвращает, включен ли указанный слой SoftBody3D.CollisionMask, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetDampingCoefficientfloat
# GetDampingCoefficient
C#
public float GetDampingCoefficient();
Возвращает float
GetDisableModeSoftBody3D.DisableModeEnum
# GetDisableMode
C#
public SoftBody3D.DisableModeEnum GetDisableMode();
Возвращает SoftBody3D.DisableModeEnum
GetDragCoefficientfloat
# GetDragCoefficient
C#
public float GetDragCoefficient();
Возвращает float
GetLinearStiffnessfloat
# GetLinearStiffness
C#
public float GetLinearStiffness();
Возвращает float
GetParentCollisionIgnoreEntityPath
# GetParentCollisionIgnore
C#
public EntityPath GetParentCollisionIgnore();
Возвращает EntityPath
GetPhysicsRidRid
# GetPhysicsRid
C#
public Rid GetPhysicsRid();

Возвращает внутренний Rid, используемый PhysicsServer3D для этого тела.

Возвращает Rid
GetPointCountint
# GetPointCount
C#
public int GetPointCount();
Возвращает int
GetPointTransformVector3
# GetPointTransform
C#
public Vector3 GetPointTransform(int pointIndex);

Возвращает мировую позицию физической точки, несмотря на слово Transform в имени. Проверьте индекс и наличие тела в физическом мире; результат не является обычным transform сущности.

Параметры
ИмяТипПо умолчанию
pointIndexint—
Возвращает Vector3
GetPressureCoefficientfloat
# GetPressureCoefficient
C#
public float GetPressureCoefficient();
Возвращает float
GetShrinkingFactorfloat
# GetShrinkingFactor
C#
public float GetShrinkingFactor();
Возвращает float
GetSimulationPrecisionint
# GetSimulationPrecision
C#
public int GetSimulationPrecision();
Возвращает int
GetTotalMassfloat
# GetTotalMass
C#
public float GetTotalMass();
Возвращает float
IsPointPinnedbool
# IsPointPinned
C#
public bool IsPointPinned(int pointIndex);

Возвращает true, если вершина установлена в закрепленное состояние.

Параметры
ИмяТипПо умолчанию
pointIndexint—
Возвращает bool
IsRayPickablebool
# IsRayPickable
C#
public bool IsRayPickable();
Возвращает bool
RemoveCollisionExceptionWithvoid
# RemoveCollisionExceptionWith
C#
public void RemoveCollisionExceptionWith(Entity body);

Удаляет тело из списка тел, с которыми данное тело не может столкнуться.

Параметры
ИмяТипПо умолчанию
bodyEntity—
SetCollisionLayervoid
# SetCollisionLayer
C#
public void SetCollisionLayer(uint collisionLayer);
Параметры
ИмяТипПо умолчанию
collisionLayeruint—
SetCollisionLayerValuevoid
# SetCollisionLayerValue
C#
public void SetCollisionLayerValue(int layerNumber, bool value);

На основе value включает или отключает указанный слой в SoftBody3D.CollisionLayer, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetCollisionMaskvoid
# SetCollisionMask
C#
public void SetCollisionMask(uint collisionMask);
Параметры
ИмяТипПо умолчанию
collisionMaskuint—
SetCollisionMaskValuevoid
# SetCollisionMaskValue
C#
public void SetCollisionMaskValue(int layerNumber, bool value);

На основе value включает или отключает указанный слой в SoftBody3D.CollisionMask при заданном layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetDampingCoefficientvoid
# SetDampingCoefficient
C#
public void SetDampingCoefficient(float dampingCoefficient);
Параметры
ИмяТипПо умолчанию
dampingCoefficientfloat—
SetDisableModevoid
# SetDisableMode
C#
public void SetDisableMode(SoftBody3D.DisableModeEnum mode);
Параметры
ИмяТипПо умолчанию
modeSoftBody3D.DisableModeEnum—
SetDragCoefficientvoid
# SetDragCoefficient
C#
public void SetDragCoefficient(float dragCoefficient);
Параметры
ИмяТипПо умолчанию
dragCoefficientfloat—
SetLinearStiffnessvoid
# SetLinearStiffness
C#
public void SetLinearStiffness(float linearStiffness);
Параметры
ИмяТипПо умолчанию
linearStiffnessfloat—
SetParentCollisionIgnorevoid
# SetParentCollisionIgnore
C#
public void SetParentCollisionIgnore(EntityPath parentCollisionIgnore);
Параметры
ИмяТипПо умолчанию
parentCollisionIgnoreEntityPath—
SetPointPinned2 перегрузки
# SetPointPinned · 1/2
C#
public void SetPointPinned(int pointIndex, bool pinned, EntityPath attachmentPath);

Закрепляет/освобождает точку по индексу; attachmentPath задаёт необязательную сущность привязки. Проверьте диапазон и топологию меша. Индексы могут измениться после переимпорта/оптимизации; закрепление не заменяет фильтры коллизий.

Параметры
ИмяТипПо умолчанию
pointIndexint—
pinnedbool—
attachmentPathEntityPath—
# SetPointPinned · 2/2
C#
public void SetPointPinned(int pointIndex, bool pinned, EntityPath attachmentPath = null, int insertAt = -1);

Закрепляет/освобождает точку по индексу; attachmentPath задаёт необязательную сущность привязки. Проверьте диапазон и топологию меша. Индексы могут измениться после переимпорта/оптимизации; закрепление не заменяет фильтры коллизий.

Параметры
ИмяТипПо умолчанию
pointIndexint—
pinnedbool—
attachmentPathEntityPathnull
insertAtint-1
SetPressureCoefficientvoid
# SetPressureCoefficient
C#
public void SetPressureCoefficient(float pressureCoefficient);
Параметры
ИмяТипПо умолчанию
pressureCoefficientfloat—
SetRayPickablevoid
# SetRayPickable
C#
public void SetRayPickable(bool rayPickable);
Параметры
ИмяТипПо умолчанию
rayPickablebool—
SetShrinkingFactorvoid
# SetShrinkingFactor
C#
public void SetShrinkingFactor(float shrinkingFactor);
Параметры
ИмяТипПо умолчанию
shrinkingFactorfloat—
SetSimulationPrecisionvoid
# SetSimulationPrecision
C#
public void SetSimulationPrecision(int simulationPrecision);
Параметры
ИмяТипПо умолчанию
simulationPrecisionint—
SetTotalMassvoid
# SetTotalMass
C#
public void SetTotalMass(float mass);
Параметры
ИмяТипПо умолчанию
massfloat—

SoftBody3D.DisableModeEnum

ЗначениеОписание
KeepActive = 1

Если Entity.ProcessMode установлен в Entity.ProcessModeEnum.Disabled, это не влияет на физическую симуляцию.

Remove = 0

Когда Entity.ProcessMode установлен в Entity.ProcessModeEnum.Disabled, объект SoftBody3D удаляется из физического моделирования, чтобы остановить все физические взаимодействия с ним. Автоматически добавляется обратно в физическое моделирование, когда Entity обрабатывается снова.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.