CSGPolygon3D

Наследует: CSGPrimitive3D < CSGShape3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object

Выдавливает 2D-многоугольник для создания 3D-сетки.

Описание

Массив 2D-точек выдавливается для быстрого и легкого создания различных 3D-сеток. См. также CSGMesh3D для использования 3D-сеток в качестве узлов CSG.

Примечание: Узлы CSG предназначены для использования при прототипировании уровней. Создание узлов CSG требует значительных затрат ресурсов ЦП по сравнению с созданием MeshInstance3D с PrimitiveMesh. Перемещение узла CSG в пределах другого узла CSG также требует значительных затрат ресурсов ЦП, поэтому его следует избегать во время игры.

Обучающие материалы

Свойства

float

depth

1.0

Material

material

Mode

mode

0

bool

path_continuous_u

float

path_interval

PathIntervalType

path_interval_type

bool

path_joined

bool

path_local

NodePath

path_node

PathRotation

path_rotation

bool

path_rotation_accurate

float

path_simplify_angle

float

path_u_distance

PackedVector2Array

polygon

PackedVector2Array(0, 0, 0, 1, 1, 1, 1, 0)

bool

smooth_faces

false

float

spin_degrees

int

spin_sides


Перечисления

enum Mode: 🔗

Mode MODE_DEPTH = 0

Форма polygon выдавливается вдоль отрицательной оси Z.

Mode MODE_SPIN = 1

Форма polygon выдавливается путем вращения вокруг оси Y.

Mode MODE_PATH = 2

Фигура polygon выдавливается вдоль Path3D, указанного в path_node.


enum PathRotation: 🔗

PathRotation PATH_ROTATION_POLYGON = 0

Форма polygon не повернута.

Примечание: Требует, чтобы координаты Z траектории постоянно уменьшались для обеспечения жизнеспособных форм.

PathRotation PATH_ROTATION_PATH = 1

Фигура polygon вращается вдоль пути, но не вращается вокруг оси пути.

Примечание: Требует, чтобы координаты Z пути постоянно уменьшались для обеспечения жизнеспособных форм.

PathRotation PATH_ROTATION_PATH_FOLLOW = 2

Форма polygon следует траектории и ее вращениям вокруг оси траектории.


enum PathIntervalType: 🔗

PathIntervalType PATH_INTERVAL_DISTANCE = 0

Если mode установлен на MODE_PATH, path_interval будет определять расстояние в метрах, на которое будет выдавливаться каждый интервал пути.

PathIntervalType PATH_INTERVAL_SUBDIVIDE = 1

Если mode установлен на MODE_PATH, path_interval будет подразделять полигоны вдоль пути.


Описания свойств

float depth = 1.0 🔗

Если mode равен MODE_DEPTH, глубина выдавливания.


Material material 🔗

Материал для использования в результирующей сетке. UV сопоставляет верхнюю половину материала с выдавленной формой (U по длине выдавливаний и V вокруг контура polygon), нижнюю левую четверть с передней торцевой поверхностью, а нижнюю правую четверть с задней торцевой поверхностью.


Mode mode = 0 🔗

  • void set_mode(value: Mode)

  • Mode get_mode()

mode, используемый для выдавливания polygon.


bool path_continuous_u 🔗

  • void set_path_continuous_u(value: bool)

  • bool is_path_continuous_u()

Когда mode равен MODE_PATH, по умолчанию верхняя половина material растягивается по всей длине выдавленной формы. Если false, верхняя половина материала повторяется на каждом этапе выдавливания.


float path_interval 🔗

  • void set_path_interval(value: float)

  • float get_path_interval()

Если mode равен MODE_PATH, интервал пути или отношение точек пути к выдавливаниям (extrusions).


PathIntervalType path_interval_type 🔗

Если mode равен MODE_PATH, это определит, должен ли интервал быть рассчитан по расстоянию (PATH_INTERVAL_DISTANCE) или по дробям подразделения (PATH_INTERVAL_SUBDIVIDE).


bool path_joined 🔗

  • void set_path_joined(value: bool)

  • bool is_path_joined()

Когда mode равен MODE_PATH, если true, концы пути соединяются путем добавления выдавливания между последней и первой точками пути.


bool path_local 🔗

  • void set_path_local(value: bool)

  • bool is_path_local()

Когда mode равен MODE_PATH, если true, то в качестве начальной точки для выдавливания используется Transform3D из CSGPolygon3D, а не Transform3D из path_node.


NodePath path_node 🔗

Если mode равен MODE_PATH, местоположение объекта Path3D, используемого для выдавливания polygon.


PathRotation path_rotation 🔗

Если mode равен MODE_PATH, метод поворота траектории, используемый для поворота polygon при его выдавливании.


bool path_rotation_accurate 🔗

  • void set_path_rotation_accurate(value: bool)

  • bool get_path_rotation_accurate()

Когда mode равен MODE_PATH, если true, многоугольник будет повернут в соответствии с правильной касательной пути в выбранных точках. Если false, используется приближение, точность которого уменьшается по мере уменьшения количества подразделений.


float path_simplify_angle 🔗

  • void set_path_simplify_angle(value: float)

  • float get_path_simplify_angle()

Если mode равен MODE_PATH, выдавливания, которые меньше этого угла, будут объединены вместе для уменьшения количества полигонов.


float path_u_distance 🔗

  • void set_path_u_distance(value: float)

  • float get_path_u_distance()

Когда mode равен MODE_PATH, это расстояние вдоль пути в метрах, координаты текстуры будут замощены. Если установлено значение 0, координаты текстуры будут точно соответствовать геометрии без замощения.


PackedVector2Array polygon = PackedVector2Array(0, 0, 0, 1, 1, 1, 1, 0) 🔗

Массив точек, определяющий выдавливаемый 2D-полигон. Это может быть выпуклый или вогнутый полигон с 3 или более точками. Полигон не должен иметь пересекающихся ребер. В противном случае триангуляция не будет выполнена, и сетка не будет создана.

Примечание: Если в polygon определены только 1 или 2 точки, сетка не будет создана.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector2Array for more details.


bool smooth_faces = false 🔗

  • void set_smooth_faces(value: bool)

  • bool get_smooth_faces()

Если true, к выдавливаниям (extrusions) применяется плавное затенение.


float spin_degrees 🔗

  • void set_spin_degrees(value: float)

  • float get_spin_degrees()

Если mode равен MODE_SPIN, общее число градусов, на которое поворачивается polygon при выдавливании.


int spin_sides 🔗

  • void set_spin_sides(value: int)

  • int get_spin_sides()

Когда mode равен MODE_SPIN, количество выполненных экструзий.