Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
CSGPolygon3D¶
继承: CSGPrimitive3D < CSGShape3D < GeometryInstance3D < VisualInstance3D < Node3D < Node < Object
拉伸 2D 多边形形状以创建 3D 网格。
描述¶
挤出一组 2D 点,以快速轻松地创建各种 3D 网格。另请参阅 CSGMesh3D,以了解将 3D 网格用作 CSG 节点。
注意:CSG 节点旨在用于关卡原型设计。与使用 PrimitiveMesh 创建 MeshInstance3D 相比,创建 CSG 节点具有显著的 CPU 成本。在另一个 CSG 节点中,移动一个 CSG 节点,也会大量消耗 CPU,因此在游戏过程中,应该避免这种情况。
教程¶
属性¶
|
||
|
||
|
||
|
||
枚举¶
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
当 mode 为 MODE_DEPTH 时,挤出的深度。
Material material
用于生成的网格的材质。UV 将材质的上半部分映射到挤出形状(U 沿着挤出的长度,V 围绕 polygon 的轮廓),左下四分之一映射到前端面,右下四分之一映射到后端面。
Mode mode = 0
bool path_continuous_u
当 mode 为MODE_PATH 时,默认情况下,material 的上半部分会沿着挤出形状的整个长度被拉伸。如果为 false
,挤出的每一步都会重复材质的上半部分。
float path_interval
当 mode 为 MODE_PATH 时,路径间隔或路径点比例挤出。
PathIntervalType path_interval_type
void set_path_interval_type ( PathIntervalType value )
PathIntervalType get_path_interval_type ( )
当 mode 为 MODE_PATH 时,这将确定间隔是按距离(PATH_INTERVAL_DISTANCE)还是细分分数(PATH_INTERVAL_SUBDIVIDE)。
bool path_joined
当 mode 为 MODE_PATH 时,如果 true
路径的两端会被连接起来,在路径的最后一个点和第一个点之间添加挤出。
bool path_local
当 mode 为 MODE_PATH 时,如果为 true
,则该 CSGPolygon3D 的 Transform3D 将被用作挤出的起点,而非 path_node 的 Transform3D。
NodePath path_node
当 mode 为 MODE_PATH 时,用于挤出 polygon 的 Path3D 对象的位置。
PathRotation path_rotation
void set_path_rotation ( PathRotation value )
PathRotation get_path_rotation ( )
当 mode 为 MODE_PATH 时,PathRotation 方法用于在挤出时旋转polygon。
float path_simplify_angle
当 mode 为 MODE_PATH 时,小于此角度的挤出将合并在一起以减少多边形数量。
float path_u_distance
当 mode 为 MODE_PATH 时,这是纹理坐标沿着路径的距离,以米为单位,将进行平铺。当设置为 0 时,纹理坐标将与几何图形完全匹配,没有平铺。
PackedVector2Array polygon = PackedVector2Array(0, 0, 0, 1, 1, 1, 1, 0)
void set_polygon ( PackedVector2Array value )
PackedVector2Array get_polygon ( )
顶点数组,用于定义要挤出的 2D 多边形。需要包含 3 个或更多顶点,可以是凸多边形也可以是凹多边形。该多边形中不能存在相交的边。否则,三角形化会失败,不会生成任何网格。
注意:如果 polygon 中只定义了 1 个或 2 个顶点,则不会生成网格。
bool smooth_faces = false
如果为 true
,则对挤出应用平滑着色。
float spin_degrees
当 mode 为 MODE_SPIN,polygon 在挤出时旋转的总度数。
int spin_sides