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...
Curve3D¶
Inherits: Resource < Reference < Object
Describe una curva de Bézier en el espacio 3D.
Descripción¶
This class describes a Bézier curve in 3D space. It is mainly used to give a shape to a Path, but can be manually sampled for other purposes.
It keeps a cache of precalculated points along the curve, to speed up further calculations.
Propiedades¶
|
||
|
Métodos¶
void |
add_point ( Vector3 position, Vector3 in=Vector3( 0, 0, 0 ), Vector3 out=Vector3( 0, 0, 0 ), int at_position=-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_count ( ) 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 |
|
interpolate ( int idx, float t ) const |
|
interpolate_baked ( float offset, bool cubic=false ) const |
|
interpolate_baked_up_vector ( float offset, bool apply_tilt=false ) const |
|
interpolatef ( float fofs ) const |
|
void |
remove_point ( int idx ) |
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 |
Descripciones de Propiedades¶
float bake_interval
Default |
|
Setter |
set_bake_interval(value) |
Getter |
get_bake_interval() |
La distancia en metros entre dos puntos cacheados adyacentes. Cambiarlo obliga a recomponer la caché la próxima vez que se llame a la función get_baked_points o get_baked_length. Cuanto más pequeña sea la distancia, más puntos en el cache y más memoria consumirá, así que úsala con cuidado.
bool up_vector_enabled
Default |
|
Setter |
set_up_vector_enabled(value) |
Getter |
is_up_vector_enabled() |
If true
, the curve will bake up vectors used for orientation. This is used when PathFollow.rotation_mode is set to PathFollow.ROTATION_ORIENTED. Changing it forces the cache to be recomputed.
Descripciones de Métodos¶
void add_point ( Vector3 position, Vector3 in=Vector3( 0, 0, 0 ), Vector3 out=Vector3( 0, 0, 0 ), int at_position=-1 )
Añade un punto a una curva en la posición position
, con puntos de control in
y out
.
Si se da at_position
, el punto se inserta antes del número de punto at_position
, desplazando ese punto (y todos los puntos posteriores) después del punto insertado. Si no se da at_position
, o es un valor ilegal (at_position <0
o at_position >= [method get_point_count]
), el punto se añadirá al final de la lista de puntos.
void clear_points ( )
Elimina todos los puntos de la curva.
float get_baked_length ( ) const
Devuelve la longitud total de la curva, basada en los puntos cacheados. Si se le da suficiente densidad (ver bake_interval), debe ser bastante aproximada.
PoolVector3Array get_baked_points ( ) const
Returns the cache of points as a PoolVector3Array.
PoolRealArray get_baked_tilts ( ) const
Returns the cache of tilts as a PoolRealArray.
PoolVector3Array get_baked_up_vectors ( ) const
Returns the cache of up vectors as a PoolVector3Array.
If up_vector_enabled is false
, the cache will be empty.
Devuelve el desplazamiento más cercano a to_point
. Este desplazamiento está destinado a ser utilizado en interpolate_baked o interpolate_baked_up_vector.
to_point
debe estar en el espacio local de esta curva.
Returns the closest baked point (in curve's local space) to to_point
.
to_point
must be in this curve's local space.
int get_point_count ( ) const
Devuelve el número de puntos que describen la curva.
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)
.
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)
.
Devuelve la posición del vértice idx
. Si el índice está fuera de los límites, la función envía un error a la consola, y devuelve (0, 0, 0)
.
Devuelve el ángulo de inclinación en radianes para el punto idx
. Si el índice está fuera de los límites, la función envía un error a la consola, y devuelve 0
.
Devuelve la posición entre el vértice idx
y el vértice idx + 1
, donde t
controla si el punto es el primer vértice (t = 0.0
), el último vértice (t = 1.0
), o en medio. Los valores de t
fuera del rango (0.0 >= t <=1
) dan resultados extraños, pero predecibles.
Si idx
está fuera de los límites se trunca al primer o último vértice, y t
se ignora. Si la curva no tiene puntos, la función envía un error a la consola, y devuelve (0, 0, 0)
.
Returns a point within the curve at position offset
, where offset
is measured as a distance in 3D units along the curve.
To do that, it finds the two cached points where the offset
lies between, then interpolates the values. This interpolation is cubic if cubic
is set to true
, or linear if set to false
.
Cubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough).
Devuelve un vector ascendente dentro de la curva en la posición offset
, donde offset
se mide como una distancia en unidades 3D a lo largo de la curva.
Para ello, encuentra los dos vectores ascendentes donde se encuentra el offset
entre ellos, y luego interpola los valores. Si apply_tilt
es true
, se aplica una inclinación interpolada al vector interpolado hacia arriba.
Si la curva no tiene vectores ascendentes, la función envía un error a la consola, y devuelve (0, 1, 0)
.
Devuelve la posición en el vértice fofs
. Llama a interpolate usando la parte entera de fofs
como idx
, y su parte fraccionaria como t
.
void remove_point ( int idx )
Suprime el punto idx
de la curva. Envía un error a la consola si idx
está fuera de los límites.
Sets the position of the control point leading to the vertex idx
. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.
Sets the position of the control point leading out of the vertex idx
. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.
Establece la posición del vértice idx
. Si el índice está fuera de los límites, la función envía un error a la consola.
Sets the tilt angle in radians for the point idx
. If the index is out of bounds, the function sends an error to the console.
The tilt controls the rotation along the look-at axis an object traveling the path would have. In the case of a curve controlling a PathFollow, this tilt is an offset over the natural tilt the PathFollow calculates.
PoolVector3Array tessellate ( int max_stages=5, float tolerance_degrees=4 ) const
Devuelve una lista de puntos a lo largo de la curva, con una densidad de puntos controlada por la curvatura. Es decir, las partes más curvadas tendrán más puntos que las partes más rectas.
Esta aproximación hace segmentos rectos entre cada punto, luego subdivide esos segmentos hasta que la forma resultante es lo suficientemente similar.
max_stages
controla cuántas subdivisiones puede afrontar un segmento de curva antes de que se considere suficientemente aproximado. Cada subdivisión divide el segmento por la mitad, por lo que las 5 etapas predeterminadas pueden significar hasta 32 subdivisiones por segmento de curva. Aumenta con cuidado!
tolerance_degrees
controla cuántos grados puede desviarse el punto medio de un segmento de la curva real, antes de que el segmento tenga que ser subdividido.