跳到主要内容

Curve3D

继承

Resource

简要描述

描述3D空间中的贝塞尔曲线。

描述

此类描述3D空间中的贝塞尔曲线。它主要用于为Path赋予形状,但可以出于其他目的手动进行采样。它沿曲线保留了预先计算的点的缓存,以加快进一步的计算速度。

成员

类型属性名默认值
floatbake_interval0.2
boolup_vector_enabledtrue

方法

返回值类型方法名称
voidadd_point(position: Vector3, in: Vector3 = Vector3( 0, 0, 0 ), out: Vector3 = Vector3( 0, 0, 0 ), at_position: int = -1)
voidclear_points()
floatget_baked_length() const
PoolVector3Arrayget_baked_points() const
PoolRealArrayget_baked_tilts() const
PoolVector3Arrayget_baked_up_vectors() const
floatget_closest_offset(to_point: Vector3) const
Vector3get_closest_point(to_point: Vector3) const
intget_point_count() const
Vector3get_point_in(idx: int) const
Vector3get_point_out(idx: int) const
Vector3get_point_position(idx: int) const
floatget_point_tilt(idx: int) const
Vector3interpolate(idx: int, t: float) const
Vector3interpolate_baked(offset: float, cubic: bool = false) const
Vector3interpolate_baked_up_vector(offset: float, apply_tilt: bool = false) const
Vector3interpolatef(fofs: float) const
voidremove_point(idx: int)
voidset_point_in(idx: int, position: Vector3)
voidset_point_out(idx: int, position: Vector3)
voidset_point_position(idx: int, position: Vector3)
voidset_point_tilt(idx: int, tilt: float)
PoolVector3Arraytessellate(max_stages: int = 5, tolerance_degrees: float = 4) const

常量

成员说明

  • float bake_interval
Default0.2
setterset_bake_interval(value)
getterget_bake_interval
  • bool up_vector_enabled
Defaulttrue
setterset_up_vector_enabled(value)
getteris_up_vector_enabled

方法说明

  • add_point add_point(position: Vector3, in: Vector3 = Vector3( 0, 0, 0 ), out: Vector3 = Vector3( 0, 0, 0 ), at_position: int = -1) 在的曲线上添加一个点position,并带有控制点inout。 如果at_position给出,则将点插入到at_position点号之前,然后将该点(及其后的每个点)移动到插入点之后。如果at_position未给出或为非法值(at_position <0at_position >=[get_point_count](#method-get_point_count)),则该点将附加在点列表的末尾。

  • clear_points clear_points() 从曲线中删除所有点。

  • get_baked_length get_baked_length() const 根据缓存的点返回曲线的总长度。给定足够的密度(见[bake_interval]),它应该足够近似。

  • get_baked_points get_baked_points() const 将点的缓存作为PoolVector3Array返回。

  • get_baked_tilts get_baked_tilts() const 将倾斜的缓存作为PoolRealArray返回。


  • get_closest_offset get_closest_offset(to_point: Vector3) const 返回最接近的偏移量to_point。该偏移量应在interpolate_bakedinterpolate_baked_up_vector中使用。 to_point必须在该曲线的局部空间中。

  • get_closest_point get_closest_point(to_point: Vector3) const 返回最接近的点(在曲线的局部空间中)to_pointto_point必须在该曲线的局部空间中。

  • get_point_count get_point_count() const 返回描述曲线的点数。

  • get_point_in get_point_in(idx: int) const 返回指向顶点的控制点的位置idx。如果索引超出范围,则该函数将错误发送到控制台,然后返回(0, 0, 0)

  • get_point_out get_point_out(idx: int) const 返回从顶点导出的控制点的位置idx。如果索引超出范围,则该函数将错误发送到控制台,然后返回(0, 0, 0)

  • get_point_position get_point_position(idx: int) const 返回顶点的位置idx。如果索引超出范围,则该函数将错误发送到控制台,然后返回(0, 0, 0)

  • get_point_tilt get_point_tilt(idx: int) const 返回该点的弧度倾斜角(以弧度为单位)idx。如果索引超出范围,则该函数将错误发送到控制台,然后返回0

  • interpolate interpolate(idx: int, t: float) const 返回顶点idx和顶点idx + 1之间的位置,在此处t控制该点是第一个顶点(t = 0.0),最后一个顶点(t = 1.0),还是之间。若t值超出范围(0.0 >= t <=1)则给出一个奇怪但可预测的结果。 idx + 1tt = 0.0t = 1.0t0.0 >= t <=1 如果idx超出范围,则将其截断到第一个或最后一个顶点,并将t忽略。如果曲线没有点,则该函数将错误发送到控制台,并返回(0, 0, 0)

  • interpolate_baked interpolate_baked(offset: float, cubic: bool = false) const 在返回在offset位置处曲线中的点,其中offset测量沿曲线的像素距离 为此,它找到两个缓存点,offset位于它们之间,然后进行插值。如果将cubic设置为true,则此插值为三次;如果将设置为false,则此插值为线性。 三次插值倾向于更好地遵循曲线,但是线性更快(通常足够精确)。

  • interpolate_baked_up_vector interpolate_baked_up_vector(offset: float, apply_tilt: bool = false) const 返回位于位置offset处的曲线内的向上向量,其中offset作为沿曲线测量的3D单位距离。 为此,它找到两个缓存上向量,offset位于它们之间,然后对这些值进行插值。如果apply_tilttrue,则将插值的倾斜应用于插值的上矢量。 如果曲线没有向上矢量,则该函数将错误发送到控制台,然后返回(0, 1, 0)

  • interpolatef interpolatef(fofs: float) const 返回顶点fofs的位置。它调用interpolate使用fofs的整数部分作为idx,小数部分作为t

  • remove_point remove_point(idx: int) 从曲线中删除idx点,如果idx超出边界,返回错误。

  • set_point_in set_point_in(idx: int, position: Vector3) 设置通往顶点idx的控制点的位置。如果索引超出范围,则该函数将错误发送到控制台。该位置是相对于顶点的。

  • set_point_out set_point_out(idx: int, position: Vector3) 设置从顶点引出的控制点的位置idx。如果索引超出范围,则该函数将错误发送到控制台。该位置是相对于顶点的。

  • set_point_position set_point_position(idx: int, position: Vector3) 设置顶点idx的位置。如果索引超出范围,则该函数将错误发送到控制台。

  • set_point_tilt set_point_tilt(idx: int, tilt: float) 设置顶点idx的弧度倾斜角(以弧度为单位)。如果索引超出范围,则该函数将错误发送到控制台。 倾斜控制着沿着路径移动的对象沿观察轴的旋转。在曲线控制PathFollow的情况下,此倾斜度是PathFollow计算的自然倾斜度的偏移量。

  • tessellate tessellate(max_stages: int = 5, tolerance_degrees: float = 4) const 返回沿曲线的点列表,其曲率控制点密度。也就是说,弯曲的部分将比直线的部分具有更多的点。 这种近似使每个点之间形成直线段,然后再细分这些段,直到得到的形状足够相似为止。 max_stages控制曲线段在被认为足够近似之前可能面临多少个细分。每个细分将线段分成两半,因此默认的5个阶段可能意味着每个曲线段最多可细分32个细分。加倍小心! tolerance_degrees控制在片段细分之前,细分的中点可能偏离真实曲线的度数。