CSGPolygon3D

继承: CSGPrimitive3D < CSGShape3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object

拉伸 2D 多边形形状以创建 3D 网格。

描述

挤出一组 2D 点,以快速轻松地创建各种 3D 网格。另请参阅 CSGMesh3D,以了解将 3D 网格用作 CSG 节点。

注意:CSG 节点旨在用于关卡原型设计。与使用 PrimitiveMesh 创建 MeshInstance3D 相比,创建 CSG 节点具有显著的 CPU 成本。在另一个 CSG 节点中,移动一个 CSG 节点,也会大量消耗 CPU,因此在游戏过程中,应该避免这种情况。

教程

属性

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

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 形状沿 path_node 中指定的 Path3D 挤出。


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 🔗

modeMODE_DEPTH 时,挤出的深度。


Material material 🔗

用于生成的网格的材质。UV 将材质的上半部分映射到挤出形状(U 沿着挤出的长度,V 围绕 polygon 的轮廓),左下四分之一映射到前端面,右下四分之一映射到后端面。


Mode mode = 0 🔗

  • void set_mode(value: Mode)

  • Mode get_mode()

用于挤出 polygonmode


bool path_continuous_u 🔗

  • void set_path_continuous_u(value: bool)

  • bool is_path_continuous_u()

modeMODE_PATH 时,默认情况下,material 的上半部分会沿着挤出形状的整个长度被拉伸。如果为 false,挤出的每一步都会重复材质的上半部分。


float path_interval 🔗

  • void set_path_interval(value: float)

  • float get_path_interval()

modeMODE_PATH 时,路径间隔或路径点比例挤出。


PathIntervalType path_interval_type 🔗

modeMODE_PATH 时,这将确定间隔是按距离(PATH_INTERVAL_DISTANCE)还是细分分数(PATH_INTERVAL_SUBDIVIDE)。


bool path_joined 🔗

  • void set_path_joined(value: bool)

  • bool is_path_joined()

modeMODE_PATH 时,如果 true 路径的两端会被连接起来,在路径的最后一个点和第一个点之间添加挤出。


bool path_local 🔗

  • void set_path_local(value: bool)

  • bool is_path_local()

modeMODE_PATH 时,如果为 true,则该 CSGPolygon3DTransform3D 将被用作挤出的起点,而非 path_nodeTransform3D


NodePath path_node 🔗

modeMODE_PATH 时,用于挤出 polygonPath3D 对象的位置。


PathRotation path_rotation 🔗

modeMODE_PATH 时,用于在挤出时旋转 polygon 的路径旋转方法。


float path_simplify_angle 🔗

  • void set_path_simplify_angle(value: float)

  • float get_path_simplify_angle()

modeMODE_PATH 时,小于此角度的挤出将合并在一起以减少多边形数量。


float path_u_distance 🔗

  • void set_path_u_distance(value: float)

  • float get_path_u_distance()

modeMODE_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,则对挤出应用平滑着色。


float spin_degrees 🔗

  • void set_spin_degrees(value: float)

  • float get_spin_degrees()

modeMODE_SPINpolygon 在挤出时旋转的总度数。


int spin_sides 🔗

  • void set_spin_sides(value: int)

  • int get_spin_sides()

modeMODE_SPIN 时,挤出的次数。