Projection
Una matriz de 4×4 para transformaciones proyectivas 3D.
Descripción
Una matriz de 4×4 utilizada para transformaciones proyectivas 3D. Puede representar transformaciones como la traslación, la rotación, el escalado, el cizallamiento y la división en perspectiva. Consiste en cuatro columnas de Vector4.
Para transformaciones puramente lineales (traslación, rotación y escala), se recomienda utilizar Transform3D, ya que es más eficiente y requiere menos memoria.
Se utiliza internamente como matriz de proyección de Camera3D.
Nota
Hay diferencias notables cuando usa esta API con C#. Véase Diferencias de la API de C# con GDScript para más información.
Propiedades
|
||
|
||
|
||
|
Constructores
Projection(from: Projection) |
|
Projection(from: Transform3D) |
|
Projection(x_axis: Vector4, y_axis: Vector4, z_axis: Vector4, w_axis: Vector4) |
Métodos
create_depth_correction(flip_y: bool) static |
|
create_fit_aabb(aabb: AABB) static |
|
create_for_hmd(eye: int, aspect: float, intraocular_dist: float, display_width: float, display_to_lens: float, oversample: float, z_near: float, z_far: float) static |
|
create_frustum(left: float, right: float, bottom: float, top: float, z_near: float, z_far: float) static |
|
create_frustum_aspect(size: float, aspect: float, offset: Vector2, z_near: float, z_far: float, flip_fov: bool = false) static |
|
create_light_atlas_rect(rect: Rect2) static |
|
create_orthogonal(left: float, right: float, bottom: float, top: float, z_near: float, z_far: float) static |
|
create_orthogonal_aspect(size: float, aspect: float, z_near: float, z_far: float, flip_fov: bool = false) static |
|
create_perspective(fovy: float, aspect: float, z_near: float, z_far: float, flip_fov: bool = false) static |
|
create_perspective_hmd(fovy: float, aspect: float, z_near: float, z_far: float, flip_fov: bool, eye: int, intraocular_dist: float, convergence_dist: float) static |
|
determinant() const |
|
flipped_y() const |
|
get_aspect() const |
|
get_far_plane_half_extents() const |
|
get_fov() const |
|
get_lod_multiplier() const |
|
get_pixels_per_meter(for_pixel_width: int) const |
|
get_projection_plane(plane: int) const |
|
get_viewport_half_extents() const |
|
get_z_far() const |
|
get_z_near() const |
|
inverse() const |
|
is_orthogonal() const |
|
jitter_offseted(offset: Vector2) const |
|
perspective_znear_adjusted(new_znear: float) const |
Operadores
operator !=(right: Projection) |
|
operator *(right: Projection) |
|
operator *(right: Vector4) |
|
operator ==(right: Projection) |
|
operator [](index: int) |
Enumeraciones
enum Planes: 🔗
Planes PLANE_NEAR = 0
El valor del índice del plano de recorte cercano de la proyección.
Planes PLANE_FAR = 1
El valor del índice del plano de recorte lejano de la proyección.
Planes PLANE_LEFT = 2
El valor del índice del plano de recorte izquierdo de la proyección.
Planes PLANE_TOP = 3
El valor del índice del plano de recorte superior de la proyección.
Planes PLANE_RIGHT = 4
El valor del índice del plano de recorte derecho de la proyección.
Planes PLANE_BOTTOM = 5
El valor del índice del plano de recorte inferior de la proyección.
Constantes
IDENTITY = Projection(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) 🔗
Una Projection sin transformación definida. Cuando se aplica a otras estructuras de datos, no se realiza ninguna transformación.
ZERO = Projection(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 🔗
Una Projection con todos los valores inicializados a 0. Cuando se aplique a otras estructuras de datos, se pondrán a cero.
Descripciones de Propiedades
Vector4 w = Vector4(0, 0, 0, 1) 🔗
El vector W de la matriz de proyección (columna 3). Equivalente al índice 3 del array.
Vector4 x = Vector4(1, 0, 0, 0) 🔗
El vector X de la matriz de proyección (columna 0). Equivalente al índice 0 del array.
Vector4 y = Vector4(0, 1, 0, 0) 🔗
El vector Y de la matriz de proyección (columna 1). Equivalente al índice 1 del array.
Vector4 z = Vector4(0, 0, 1, 0) 🔗
El vector Z de la matriz de proyección (columna 2). Equivalente al índice 2 del array.
Descripciones de Constructores
Projection Projection() 🔗
Construye una Projection inicializada por defecto idéntica a IDENTITY.
Nota: En C#, esto construye una Projection idéntica a ZERO.
Projection Projection(from: Projection)
Construye una Projection como una copia de la Projection dada.
Projection Projection(from: Transform3D)
Construye una Projection como una copia del Transform3D dado.
Projection Projection(x_axis: Vector4, y_axis: Vector4, z_axis: Vector4, w_axis: Vector4)
Construye una Projection a partir de cuatro valores Vector4 (columnas de la matriz).
Descripciones de Métodos
Projection create_depth_correction(flip_y: bool) static 🔗
Crea una nueva Projection que proyecta posiciones desde un rango de profundidad de -1 a 1 a uno que va de 0 a 1, e invierte las posiciones proyectadas verticalmente, según flip_y.
Projection create_fit_aabb(aabb: AABB) static 🔗
Crea una nueva Projection que escala una proyección dada para ajustarse a un AABB determinado en el espacio de proyección.
Projection create_for_hmd(eye: int, aspect: float, intraocular_dist: float, display_width: float, display_to_lens: float, oversample: float, z_near: float, z_far: float) static 🔗
Crea una nueva Projection para proyectar posiciones en una pantalla montada en la cabeza con la relación de aspecto X:Y dada, la distancia entre los ojos, el ancho de la pantalla, la distancia a la lente, el factor de sobremuestreo y los planos de recorte de profundidad.
eye crea la proyección para el ojo izquierdo cuando se establece en 1, o el ojo derecho cuando se establece en 2.
Projection create_frustum(left: float, right: float, bottom: float, top: float, z_near: float, z_far: float) static 🔗
Crea una nueva Projection que proyecta posiciones en un frustum con los planos de recorte dados.
Projection create_frustum_aspect(size: float, aspect: float, offset: Vector2, z_near: float, z_far: float, flip_fov: bool = false) static 🔗
Crea una nueva Projection que proyecta posiciones en un frustum con el tamaño dado, la relación de aspecto X:Y, el desplazamiento y los planos de recorte.
flip_fov determina si el campo de visión de la proyección se invierte sobre su diagonal.
Projection create_light_atlas_rect(rect: Rect2) static 🔗
Crea una nueva Projection que proyecta posiciones en el Rect2 dado.
Projection create_orthogonal(left: float, right: float, bottom: float, top: float, z_near: float, z_far: float) static 🔗
Crea una nueva Projection que proyecta posiciones utilizando una proyección ortogonal con los planos de recorte dados.
Projection create_orthogonal_aspect(size: float, aspect: float, z_near: float, z_far: float, flip_fov: bool = false) static 🔗
Crea una nueva Projection que proyecta posiciones usando una proyección ortogonal con el tamaño dado, la relación de aspecto X:Y y los planos de recorte.
flip_fov determina si el campo de visión de la proyección se invierte sobre su diagonal.
Projection create_perspective(fovy: float, aspect: float, z_near: float, z_far: float, flip_fov: bool = false) static 🔗
Crea una nueva Projection que proyecta posiciones usando una proyección en perspectiva con el campo de visión del eje Y dado (en grados), la relación de aspecto X:Y y los planos de recorte.
flip_fov determina si el campo de visión de la proyección se invierte sobre su diagonal.
Projection create_perspective_hmd(fovy: float, aspect: float, z_near: float, z_far: float, flip_fov: bool, eye: int, intraocular_dist: float, convergence_dist: float) static 🔗
Crea una nueva Projection que proyecta posiciones usando una proyección en perspectiva con el campo de visión del eje Y dado (en grados), la relación de aspecto X:Y y las distancias de recorte. La proyección se ajusta para una pantalla montada en la cabeza con la distancia dada entre los ojos y la distancia a un punto en el que se puede enfocar.
eye crea la proyección para el ojo izquierdo cuando se establece en 1, o el ojo derecho cuando se establece en 2.
flip_fov determina si el campo de visión de la proyección se invierte sobre su diagonal.
Devuelve un valor escalar que es el factor con signo por el cual las áreas son escaladas por esta matriz. Si el signo es negativo, la matriz invierte la orientación del área.
El determinante se puede utilizar para calcular la invertibilidad de una matriz o resolver sistemas lineales de ecuaciones que involucran a la matriz, entre otras aplicaciones.
Projection flipped_y() const 🔗
Devuelve una copia de esta Projection con los signos de los valores de la columna Y invertidos.
Devuelve la relación de aspecto X:Y del viewport de esta Projection.
Vector2 get_far_plane_half_extents() const 🔗
Devuelve las dimensiones del plano de recorte lejano de la proyección, divididas entre dos.
Devuelve el campo de visión horizontal de la proyección (en grados).
float get_fovy(fovx: float, aspect: float) static 🔗
Devuelve el campo de visión vertical de la proyección (en grados) asociado con el campo de visión horizontal dado (en grados) y la relación de aspecto.
Nota: A diferencia de la mayoría de los métodos de Projection, se espera que aspect sea 1 dividido por la relación de aspecto X:Y.
float get_lod_multiplier() const 🔗
Devuelve el factor por el cual se escala el nivel de detalle visible mediante esta Projection.
int get_pixels_per_meter(for_pixel_width: int) const 🔗
Devuelve for_pixel_width dividido por el ancho del viewport medido en metros en el plano cercano, después de aplicar esta Projection.
Plane get_projection_plane(plane: int) const 🔗
Devuelve el plano de recorte de esta Projection cuyo índice se indica en plane.
plane debe ser igual a uno de PLANE_NEAR, PLANE_FAR, PLANE_LEFT, PLANE_TOP, PLANE_RIGHT o PLANE_BOTTOM.
Vector2 get_viewport_half_extents() const 🔗
Devuelve las dimensiones del plano del viewport sobre el que esta Projection proyecta posiciones, dividido por dos.
Devuelve la distancia para esta Projection más allá de la cual se recortan las posiciones.
Devuelve la distancia para esta Projection antes de la cual se recortan las posiciones.
Projection inverse() const 🔗
Devuelve una Projection que realiza la inversa de la transformación proyectiva de esta Projection.
Devuelve true si esta Projection realiza una proyección ortogonal.
Projection jitter_offseted(offset: Vector2) const 🔗
Devuelve una Projection con los valores X e Y del Vector2 dado agregados al primer y segundo valor de la columna final respectivamente.
Projection perspective_znear_adjusted(new_znear: float) const 🔗
Devuelve una Projection con la distancia de recorte cercana ajustada a new_znear.
Nota: La Projection original debe ser una proyección en perspectiva.
Descripciones de Operadores
bool operator !=(right: Projection) 🔗
Devuelve true si las proyecciones no son iguales.
Nota: Debido a errores de precisión de punto flotante, esto puede devolver true, incluso si las proyecciones son virtualmente iguales. Un método is_equal_approx puede ser añadido en una futura versión de Godot.
Projection operator *(right: Projection) 🔗
Devuelve una Projection que aplica las transformaciones combinadas de esta Projection y right.
Vector4 operator *(right: Vector4) 🔗
Proyecta (multiplica) el Vector4 dado por esta matriz Projection.
bool operator ==(right: Projection) 🔗
Devuelve true si las proyecciones son iguales.
Nota: Debido a errores de precisión de punto flotante, esto puede devolver false, incluso si las proyecciones son virtualmente iguales. Un método is_equal_approx puede ser añadido en una futura versión de Godot.
Vector4 operator [](index: int) 🔗
Devuelve la columna de la Projection con el índice dado.
Los índices están en el siguiente orden: x, y, z, w.