reckfellENGINE

CsgShape3D

Базовый класс CSG.

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

Базовый класс CSG.

Это базовый класс РГС, который обеспечивает оперативную поддержку РГС различным узлам РГС в Reckfell. Performance: Узлы РГС предназначены только для прототипирования, поскольку они сопряжены со значительными затратами на функционирование процессора. Отдельные результаты по корневому узлу РГС могут быть выжаты в узлы со статическими ресурсами с меню редактора, которое появляется при выборе корневого узла РГС. Отдельные корневые узлы РГС также могут быть выжаты в статические ресурсы с помощью скриптов CsgShape3D.BakeStaticMesh для визуальной сетки или CsgShape3D.BakeCollisionShape для столкновения физики. Целые сцены узлов РГС могут быть выпечены до статической геометрии и экспортированы вместе с экспортером сцены редактора gITF: Сцена > Экспорт как... > glTF 2.0 Сцена...

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

Свойства9

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

Включает автоматическое сглаживание. Это отменяет любое сглаживание на узле CSG и вместо этого использует CsgShape3D.SmoothingAngle для вычисления нормалей на основе угла между гранями. Дочерние элементы узла CsgCombiner3D будут рассматриваться как единая сетка.

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

Вычислить касательные для формы CSG, что позволяет использовать карты нормалей и высот. Это применяется только к корневой форме, эта настройка игнорируется для любого дочернего элемента. Установка этого параметра на false может немного ускорить генерацию формы.

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

Слои физики, в которых находится эта область. Объекты, способные сталкиваться, могут существовать в любом из 32 различных слоев. Эти слои работают как система тегов и не являются визуальными. Сталкивающийся объект может использовать эти слои для выбора объектов, с которыми он может столкнуться, используя свойство collision_mask. Контакт обнаруживается, если объект A находится в любом из слоев, которые сканирует объект B, или объект B находится в любом слое, сканируемом объектом A. Для получения дополнительной информации см. Слои и маски столкновений в документации.

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

Слои физики этой формы CSG сканируют на предмет столкновений. Действует только если CsgShape3D.UseCollision равно true. Для получения дополнительной информации см. Слои и маски столкновений в документации.

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

Приоритет, используемый для решения столкновения при возникновении проникновения. Действует только если CsgShape3D.UseCollision равно true. Чем выше приоритет, тем ниже будет проникновение в объект. Это может быть использовано, например, для предотвращения прорыва игрока через границы уровня.

OperationСвойство
# Operation
C#
public CsgShape3D.OperationEnum Operation { get; set; }

Операция дочернего CSG-операнда относительно накопленного результата: Union, Intersection или Subtraction. Порядок детей имеет значение. Вычитание отдельного корня из другого корня не выполняется: операнды должны принадлежать одной CSG-композиции.

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

При включении автоматического сглаживания грани с углом между ними, превышающим указанное значение, будут сглаживаться, а грани с меньшим углом останутся острыми. Примечание: угол меньше 0,1 приведет к отключению всего сглаживания; это можно использовать для повышения производительности.

SnapСвойство · Устарело
# Snap
C#
public float Snap { get; set; }

Это свойство ничего не делает.

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

Включает физическую коллизию результата корневой CSG-композиции. Дочерние CSG-операнды не становятся отдельными телами. Геометрия и коллизия обновляются отложенно; BakeCollisionShape может создать ресурс и при false, но сам ресурс не добавляет тело в мир.

Методы26

BakeCollisionShapeConcavePolygonShape3D
# BakeCollisionShape
C#
public ConcavePolygonShape3D BakeCollisionShape();

Создаёт ресурс вогнутой формы по результату корневой CSG-композиции. Не требует включённого UseCollision, но требует готовых данных. Для реальной коллизии назначьте результат CollisionShape3D внутри StaticBody3D; не используйте такую форму как универсальную динамическую коллизию.

Возвращает ConcavePolygonShape3D

ConcavePolygonShape3D для корня либо null для дочернего операнда. Это отдельный ресурс от ArrayMesh; сохраняйте и назначайте их раздельно.

BakeStaticMeshArrayMesh
# BakeStaticMesh
C#
public ArrayMesh BakeStaticMesh();

Получает текущий меш корневой CSG-композиции после отложенного обновления. Не удаляет исходные Entity, не создаёт MeshInstance3D и не сохраняет файл. Возвращает ресурс текущего root mesh, а не обещанную независимую глубокую копию.

Возвращает ArrayMesh

ArrayMesh корня либо null у дочернего операнда или до готовности root mesh. После создания/изменения CSG дождитесь обновления; перед ResourceSaver проверьте результат.

GetCollisionLayeruint
# GetCollisionLayer
C#
public uint GetCollisionLayer();
Возвращает uint
GetCollisionLayerValuebool
# GetCollisionLayerValue
C#
public bool GetCollisionLayerValue(int layerNumber);

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

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

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

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetCollisionPriorityfloat
# GetCollisionPriority
C#
public float GetCollisionPriority();
Возвращает float
GetMeshesReckfell.Collections.Array
# GetMeshes
C#
public Reckfell.Collections.Array GetMeshes();

Возвращает Reckfell.Collections.Array с двумя элементами, первый из которых — Transform3D этого узла, а второй — корень Mesh этого узла. Работает только в том случае, если этот узел является корневой формой. Примечание: Обновления данных сетки CSG откладываются, что означает, что они обновляются с задержкой в один отрисованный кадр. Чтобы избежать получения пустой формы или устаревших данных сетки, обязательно вызовите await get_tree().process_frame перед использованием CsgShape3D.GetMeshes в Entity.Ready или после изменения свойств в CsgShape3D.

Возвращает Reckfell.Collections.Array
GetOperationCsgShape3D.OperationEnum
# GetOperation
C#
public CsgShape3D.OperationEnum GetOperation();
Возвращает CsgShape3D.OperationEnum
GetSmoothingAnglefloat
# GetSmoothingAngle
C#
public float GetSmoothingAngle();
Возвращает float
GetSnapfloat
# GetSnap
C#
public float GetSnap();
Возвращает float
IsAutosmoothbool
# IsAutosmooth
C#
public bool IsAutosmooth();
Возвращает bool
IsCalculatingTangentsbool
# IsCalculatingTangents
C#
public bool IsCalculatingTangents();
Возвращает bool
IsRootShapebool
# IsRootShape
C#
public bool IsRootShape();

Проверяет, формирует ли эта Entity самостоятельный CSG-результат. Корень определяется иерархией CSG, а не названием объекта. Bake-методы предназначены для этого корня.

Возвращает bool

true у корня композиции; false у CSG-операнда внутри другого CSG-объекта.

IsUsingCollisionbool
# IsUsingCollision
C#
public bool IsUsingCollision();
Возвращает bool
SetAutosmoothvoid
# SetAutosmooth
C#
public void SetAutosmooth(bool autosmooth);
Параметры
ИмяТипПо умолчанию
autosmoothbool—
SetCalculateTangentsvoid
# SetCalculateTangents
C#
public void SetCalculateTangents(bool enabled);
Параметры
ИмяТипПо умолчанию
enabledbool—
SetCollisionLayervoid
# SetCollisionLayer
C#
public void SetCollisionLayer(uint layer);
Параметры
ИмяТипПо умолчанию
layeruint—
SetCollisionLayerValuevoid
# SetCollisionLayerValue
C#
public void SetCollisionLayerValue(int layerNumber, bool value);

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

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

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

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetCollisionPriorityvoid
# SetCollisionPriority
C#
public void SetCollisionPriority(float priority);
Параметры
ИмяТипПо умолчанию
priorityfloat—
SetOperationvoid
# SetOperation
C#
public void SetOperation(CsgShape3D.OperationEnum operation);
Параметры
ИмяТипПо умолчанию
operationCsgShape3D.OperationEnum—
SetSmoothingAnglevoid
# SetSmoothingAngle
C#
public void SetSmoothingAngle(float smoothingAngle);
Параметры
ИмяТипПо умолчанию
smoothingAnglefloat—
SetSnapvoid
# SetSnap
C#
public void SetSnap(float snap);
Параметры
ИмяТипПо умолчанию
snapfloat—
SetUseCollisionvoid
# SetUseCollision
C#
public void SetUseCollision(bool operation);
Параметры
ИмяТипПо умолчанию
operationbool—

CsgShape3D.OperationEnum

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

Остается только пересекающаяся геометрия, остальное удаляется.

Subtraction = 2

Вторая форма вычитается из первой, оставляя вмятину на ее форме.

Union = 0

Геометрия обоих примитивов объединяется, пересекающаяся геометрия удаляется.

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

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

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

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