GpuParticlesCollisionSdf3D
Запеченная знаковая форма столкновения частиц в трехмерном поле расстояний, влияющая на узлы GPUParticles3D.
Запеченная знаковая форма столкновения частиц в трехмерном поле расстояний, влияющая на узлы GpuParticles3D.
Запеченная форма столкновения частиц со знаком поля расстояний 3D, влияющая на узлы GpuParticles3D.
Знаковые поля расстояний (SDF) позволяют эффективно представлять приблизительные формы столкновений для выпуклых и вогнутых объектов любой формы. Это более гибко, чем GpuParticlesCollisionHeightField3D, но требует этапа запекания.
Запекание: Текстуру поля расстояний со знаком можно запечь, выбрав узел GpuParticlesCollisionSdf3D в редакторе, а затем нажав Запечь SDF в верхней части 3D-окна просмотра. Любые видимые MeshInstance3D в пределах GpuParticlesCollisionSdf3D.Size будут учитываться при запекании, независимо от их GeometryInstance3D.GIMode.
Примечание: Запекание GpuParticlesCollisionSdf3D.Texture GpuParticlesCollisionSdf3D возможно только в редакторе, так как нет метода запекания, доступного для использования в экспортированных проектах. Однако все еще возможно загружать предварительно запеченные Texture3D в его свойство GpuParticlesCollisionSdf3D.Texture в экспортированном проекте.
Примечание: ParticleProcessMaterial.CollisionMode должен быть ParticleProcessMaterial.CollisionModeEnum.Rigid или ParticleProcessMaterial.CollisionModeEnum.HideOnContact в материале процесса GpuParticles3D, чтобы столкновение работало.
Примечание: Столкновение частиц влияет только на GpuParticles3D, а не на CpuParticles3D.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
GpuParticlesCollisionSdf3DКонструктор
public GpuParticlesCollisionSdf3D();Свойства5
BakeMaskСвойство
public uint BakeMask { get; set; }Render-слои геометрии для процесса запекания SDF. Не маска источников частиц CullMask. Изменение выбора/геометрии требует проверки и повторной генерации поля, а не только присваивания маски.
ResolutionСвойство
public GpuParticlesCollisionSdf3D.ResolutionEnum Resolution { get; set; }Разрешение запекания, используемое для поля расстояния со знаком GpuParticlesCollisionSdf3D.Texture. Текстуру необходимо запечь снова, чтобы изменения свойства GpuParticlesCollisionSdf3D.Resolution вступили в силу. Более высокие разрешения имеют большую стоимость производительности и требуют больше времени для запекания. Более высокие разрешения также приводят к более крупным запеченным текстурам, что приводит к увеличению требований к VRAM и пространству хранения. Чтобы улучшить производительность и сократить время запекания, используйте наименьшее возможное разрешение для объекта столкновения которое вы представляете.
SizeСвойство
public Vector3 Size { get; set; }Полные локальные размеры SDF-области, не половинные extents. Для реакции нужны соответствующие данные Texture и поддерживаемый рендеринг. Смена Size не равна перезапеканию геометрии.
TextureСвойство
public Texture3D Texture { get; set; }3D-данные поля расстояний для столкновений. Не видимый albedo и не игровой CollisionShape. Проверяйте наличие/актуальность сгенерированных данных; изменение мешей не переписывает текстуру автоматически.
ThicknessСвойство
public float Thickness { get; set; }Толщина формы столкновения. В отличие от других коллайдеров частиц, GpuParticlesCollisionSdf3D на самом деле полый внутри. GpuParticlesCollisionSdf3D.Thickness можно увеличить, чтобы предотвратить туннелирование частиц через форму столкновения на высоких скоростях или при перемещении GpuParticlesCollisionSdf3D.
Методы12
GetBakeMaskuint
public uint GetBakeMask();uintGetBakeMaskValuebool
public bool GetBakeMaskValue(int layerNumber);Возвращает, включен ли указанный слой GpuParticlesCollisionSdf3D.BakeMask, учитывая layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
boolGetResolutionGpuParticlesCollisionSdf3D.ResolutionEnum
public GpuParticlesCollisionSdf3D.ResolutionEnum GetResolution();GpuParticlesCollisionSdf3D.ResolutionEnumGetSizeVector3
public Vector3 GetSize();Vector3GetTextureTexture3D
public Texture3D GetTexture();Texture3DGetThicknessfloat
public float GetThickness();floatSetBakeMaskvoid
public void SetBakeMask(uint mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | uint | — |
SetBakeMaskValuevoid
public void SetBakeMaskValue(int layerNumber, bool value);На основе value включает или отключает указанный слой в GpuParticlesCollisionSdf3D.BakeMask, учитывая layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
SetResolutionvoid
public void SetResolution(GpuParticlesCollisionSdf3D.ResolutionEnum resolution);| Имя | Тип | По умолчанию |
|---|---|---|
resolution | GpuParticlesCollisionSdf3D.ResolutionEnum | — |
SetSizevoid
public void SetSize(Vector3 size);| Имя | Тип | По умолчанию |
|---|---|---|
size | Vector3 | — |
SetTexturevoid
public void SetTexture(Texture3D texture);| Имя | Тип | По умолчанию |
|---|---|---|
texture | Texture3D | — |
SetThicknessvoid
public void SetThickness(float thickness);| Имя | Тип | По умолчанию |
|---|---|---|
thickness | float | — |
GpuParticlesCollisionSdf3D.ResolutionEnum
| Значение | Описание |
|---|---|
Max = 6 | Представляет размер перечисления |
Resolution128 = 3 | Запекаем поле расстояний со знаком 128×128×128.
|
Resolution16 = 0 | Запекаем поле расстояний со знаком 16×16×16. Это самый быстрый вариант, но и наименее точный. |
Resolution256 = 4 | Запекаем знаковое поле расстояний размером 256×256×256. |
Resolution32 = 1 | Запекаем поле расстояний со знаком 32×32×32. |
Resolution512 = 5 | Выпекаем поле расстояний со знаком 512×512×512. Это самый медленный вариант, но и самый точный. |
Resolution64 = 2 | Запекаем знаковое поле расстояний размером 64×64×64. |