Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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

  • void set_depth ( float value )

  • float get_depth ( )

modeMODE_DEPTH 时,挤出的深度。


Material material

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


Mode mode = 0

  • void set_mode ( Mode value )

  • Mode get_mode ( )

用于挤出 polygonmode


bool path_continuous_u

  • void set_path_continuous_u ( bool value )

  • bool is_path_continuous_u ( )

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


float path_interval

  • void set_path_interval ( float value )

  • 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 ( bool value )

  • bool is_path_joined ( )

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


bool path_local

  • void set_path_local ( bool value )

  • bool is_path_local ( )

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


NodePath path_node

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


PathRotation path_rotation

modeMODE_PATH 时,PathRotation 方法用于在挤出时旋转polygon


float path_simplify_angle

  • void set_path_simplify_angle ( float value )

  • float get_path_simplify_angle ( )

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


float path_u_distance

  • void set_path_u_distance ( float value )

  • float get_path_u_distance ( )

modeMODE_PATH 时,这是纹理坐标沿着路径的距离,以米为单位,将进行平铺。当设置为 0 时,纹理坐标将与几何图形完全匹配,没有平铺。


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

顶点数组,用于定义要挤出的 2D 多边形。需要包含 3 个或更多顶点,可以是凸多边形也可以是凹多边形。该多边形中不能存在相交的边。否则,三角形化会失败,不会生成任何网格。

注意:如果 polygon 中只定义了 1 个或 2 个顶点,则不会生成网格。


bool smooth_faces = false

  • void set_smooth_faces ( bool value )

  • bool get_smooth_faces ( )

如果为 true,则对挤出应用平滑着色。


float spin_degrees

  • void set_spin_degrees ( float value )

  • float get_spin_degrees ( )

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


int spin_sides

  • void set_spin_sides ( int value )

  • int get_spin_sides ( )

modeMODE_SPIN 时,挤出的次数。