Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
Curve3D¶
Inherits: Resource < RefCounted < Object
Describes a Bézier curve in 3D space.
Description¶
This class describes a Bézier curve in 3D space. It is mainly used to give a shape to a Path3D, but can be manually sampled for other purposes.
It keeps a cache of precalculated points along the curve, to speed up further calculations.
Properties¶
|
||
|
||
|
Methods¶
void |
add_point ( Vector3 position, Vector3 in=Vector3(0, 0, 0), Vector3 out=Vector3(0, 0, 0), int index=-1 ) |
void |
clear_points ( ) |
get_baked_length ( ) const |
|
get_baked_points ( ) const |
|
get_baked_tilts ( ) const |
|
get_baked_up_vectors ( ) const |
|
get_closest_offset ( Vector3 to_point ) const |
|
get_closest_point ( Vector3 to_point ) const |
|
get_point_in ( int idx ) const |
|
get_point_out ( int idx ) const |
|
get_point_position ( int idx ) const |
|
get_point_tilt ( int idx ) const |
|
void |
remove_point ( int idx ) |
sample_baked ( float offset=0.0, bool cubic=false ) const |
|
sample_baked_up_vector ( float offset, bool apply_tilt=false ) const |
|
sample_baked_with_rotation ( float offset=0.0, bool cubic=false, bool apply_tilt=false ) const |
|
void |
set_point_in ( int idx, Vector3 position ) |
void |
set_point_out ( int idx, Vector3 position ) |
void |
set_point_position ( int idx, Vector3 position ) |
void |
set_point_tilt ( int idx, float tilt ) |
tessellate ( int max_stages=5, float tolerance_degrees=4 ) const |
|
tessellate_even_length ( int max_stages=5, float tolerance_length=0.2 ) const |
Property Descriptions¶
float bake_interval = 0.2
The distance in meters between two adjacent cached points. Changing it forces the cache to be recomputed the next time the get_baked_points or get_baked_length function is called. The smaller the distance, the more points in the cache and the more memory it will consume, so use with care.
int point_count = 0
The number of points describing the curve.
bool up_vector_enabled = true
If true
, the curve will bake up vectors used for orientation. This is used when PathFollow3D.rotation_mode is set to PathFollow3D.ROTATION_ORIENTED. Changing it forces the cache to be recomputed.
Method Descriptions¶
void add_point ( Vector3 position, Vector3 in=Vector3(0, 0, 0), Vector3 out=Vector3(0, 0, 0), int index=-1 )
Adds a point with the specified position
relative to the curve's own position, with control points in
and out
. Appends the new point at the end of the point list.
If index
is given, the new point is inserted before the existing point identified by index index
. Every existing point starting from index
is shifted further down the list of points. The index must be greater than or equal to 0
and must not exceed the number of existing points in the line. See point_count.
void clear_points ( )
Removes all points from the curve.
float get_baked_length ( ) const
Returns the total length of the curve, based on the cached points. Given enough density (see bake_interval), it should be approximate enough.
PackedVector3Array get_baked_points ( ) const
Returns the cache of points as a PackedVector3Array.
PackedFloat32Array get_baked_tilts ( ) const
Returns the cache of tilts as a PackedFloat32Array.
PackedVector3Array get_baked_up_vectors ( ) const
Returns the cache of up vectors as a PackedVector3Array.
If up_vector_enabled is false
, the cache will be empty.
float get_closest_offset ( Vector3 to_point ) const
Returns the closest offset to to_point
. This offset is meant to be used in sample_baked or sample_baked_up_vector.
to_point
must be in this curve's local space.
Vector3 get_closest_point ( Vector3 to_point ) const
Returns the closest point on baked segments (in curve's local space) to to_point
.
to_point
must be in this curve's local space.
Vector3 get_point_in ( int idx ) const
Returns the position of the control point leading to the vertex idx
. The returned position is relative to the vertex idx
. If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0)
.
Vector3 get_point_out ( int idx ) const
Returns the position of the control point leading out of the vertex idx
. The returned position is relative to the vertex idx
. If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0)
.
Vector3 get_point_position ( int idx ) const
Returns the position of the vert