Projection
Матриця 4 × 4 для проекційних трансформацій 3D.
Опис
A 4 × 4 матриця використовується для 3D проектних трансформацій. Це може представляти трансформацію, такі як переклад, обертання, масштабування, зсув і перспективний поділ. Складається з чотирьох Vector4 стовпчиків.
Для чисто лінійних трансформацій (трансляція, обертання та масштабування), рекомендується використовувати Transform3D, оскільки це більш виконавець і вимагає меншої пам'яті.
Використовуються внутрішньо, як матриця проекції Camera3D.
Примітка
Існують значні відмінності при використанні цього API із С#. Більше інформації: ref:doc_c_sharp_differences.
Властивості
|
||
|
||
|
||
|
Конструктори
Projection(from: Projection) |
|
Projection(from: Transform3D) |
|
Projection(x_axis: Vector4, y_axis: Vector4, z_axis: Vector4, w_axis: Vector4) |
Методи
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 |
Оператори
operator !=(right: Projection) |
|
operator *(right: Projection) |
|
operator *(right: Vector4) |
|
operator ==(right: Projection) |
|
operator [](index: int) |
Переліки
enum Planes: 🔗
Planes PLANE_NEAR = 0
Індексове значення площини проекції.
Planes PLANE_FAR = 1
Індексове значення дальньої площини проекції.
Planes PLANE_LEFT = 2
Індексове значення площини лівого віджиму проекції.
Planes PLANE_TOP = 3
Індексове значення верхньої площини кліпінгу проекції.
Planes PLANE_RIGHT = 4
Індекс значення правильної затискної площини проекції.
Planes PLANE_BOTTOM = 5
Індексове значення проекції нижнього клипарта.
Константи
IDENTITY = Projection(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) 🔗
Projection без визначення перетворення. При нанесенні на інші структури даних не виконується перетворення.
ZERO = Projection(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 🔗
Projection з усіма значеннями, ініціалізованими до 0. При нанесенні на інші структури даних вони будуть нулі.
Описи властивостей
Vector4 w = Vector4(0, 0, 0, 1) 🔗
Вектор проекції матриць W (кольор 3). Equivalent до індексу масиву 3.
Vector4 x = Vector4(1, 0, 0, 0) 🔗
Вектор проекції матриць X (кул 0). Equivalent до індексу масиву 0.
Vector4 y = Vector4(0, 1, 0, 0) 🔗
Вектор проекції матриці Y (кольор 1). Equivalent до індексу масиву 1.
Vector4 z = Vector4(0, 0, 1, 0) 🔗
Вектор проекції матриць Z (кольоровий 2). Equivalent до індексу масиву 2.
Описи конструкторів
Projection Projection() 🔗
Створює ініціалізований за умовчанням Projection, ідентичний IDENTITY.
Примітка. У C# це створює Projection, ідентичну ZERO.
Projection Projection(from: Projection)
Constructs a Projection як копія даної Projection.
Projection Projection(from: Transform3D)
Конструктиви проекції як копіювання даної Transform3D.
Projection Projection(x_axis: Vector4, y_axis: Vector4, z_axis: Vector4, w_axis: Vector4)
Constructs a Projection від 4 Vector4 значення (метри матриці матриці).
Описи методів
Projection create_depth_correction(flip_y: bool) static 🔗
Створює нові Projection, які позиції проекту з глибинного діапазону -1 до 1 до того, що коливається від 0 до 1, і закрилки прозвучані позиції вертикально, відповідно до flip_y.
Projection create_fit_aabb(aabb: AABB) static 🔗
Створює нову Projection, яка масштабує задану проекцію, щоб відповідати даній AABB в проекційному просторі.
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 🔗
Створює нову Projection для проекційних позицій на заголовку екрана з заданим коефіцієнтом X:Y, відстань між очима, ширина дисплея, відстань до лінзи, перенапруження фактора і глибинним площинами.
eye створює проекцію для лівого ока при встановленні до 1, або правого ока при встановленні до 2.
Projection create_frustum(left: float, right: float, bottom: float, top: float, z_near: float, z_far: float) static 🔗
Створює нові Projection, які виступи проектів у фрусті з заданими площинами кліпінгу.
Projection create_frustum_aspect(size: float, aspect: float, offset: Vector2, z_near: float, z_far: float, flip_fov: bool = false) static 🔗
Створює нові Projection, які позиції проектів у фрусті з заданим розміром, X:Y співвідношення сторін, зміщення та затискання площин.
flip_fov визначає, чи є поле проекції, що перекривається на його діагоналі.
Projection create_light_atlas_rect(rect: Rect2) static 🔗
Створює нові Projection, які об’єкти надані Rect2.
Projection create_orthogonal(left: float, right: float, bottom: float, top: float, z_near: float, z_far: float) static 🔗
Створює нові позиції проекту за допомогою ортогональної проекції з заданими площинами.
Projection create_orthogonal_aspect(size: float, aspect: float, z_near: float, z_far: float, flip_fov: bool = false) static 🔗
Створює нові позиції проекту за допомогою ортогональної проекції з заданим розміром, X:Y співвідношення сторін та площини затискання.
flip_fov визначає, чи є поле проекції, що перекривається на його діагоналі.
Projection create_perspective(fovy: float, aspect: float, z_near: float, z_far: float, flip_fov: bool = false) static 🔗
Створює нові позиції проекту за допомогою перспективної проекції з заданим полем Y (в градусах), коефіцієнтом X:Y і площинами затискання.
flip_fov визначає, чи є поле проекції, що перекривається на його діагоналі.
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 🔗
Створює нові позиції проекту з використанням перспективної проекції з заданим полем Y (в градусах), коефіцієнтом X:Y, відстані кліпування. Проекція налаштовується для монтованого дисплея з даної відстані між очима і дистанцією до точки, яка може бути зосереджена на.
eye створює проекцію для лівого ока при встановленні до 1, або правого ока при встановленні до 2.
flip_fov визначає, чи є поле проекції, що перекривається на його діагоналі.
Повертає значення скаляра, яка є підписаним фактором, на якому ділянки масштабуються цією матрицею. Якщо знак негативний, матриця закріплює спрямованість ділянки.
Детермінант може використовуватися для розрахунку інвертабельності матриці або розчину лінійних систем рівнянь, що включають матрицю, серед інших додатків.
Projection flipped_y() const 🔗
Повертає копію цього Projection з ознаками значень колонки Y.
Повернення X:Y співвідношення сторін цього Projection.
Vector2 get_far_plane_half_extents() const 🔗
Повертає розміри далекої затискної площини проекції, розділеної на два.
Повертає горизонтальне поле зору проекції (в градусах).
float get_fovy(fovx: float, aspect: float) static 🔗
Повертає вертикальне поле огляду проекції (у градусах), пов’язане з даним горизонтальним полем огляду (у градусах) і співвідношенням сторін.
Примітка: На відміну від більшості методів Projection, очікується, що aspect дорівнює 1, поділеному на співвідношення X:Y.
float get_lod_multiplier() const 🔗
Повертає фактор, за яким видимий рівень деталь масштабується цим Projection.
int get_pixels_per_meter(for_pixel_width: int) const 🔗
Повертає for_pixel_width, поділений на ширину області перегляду, виміряну в метрах на ближній площині, після застосування цієї Projection.
Plane get_projection_plane(plane: int) const 🔗
Повертає площину кліпінгу Projection, індекс якого віддається plane.
plane повинна бути рівним з одним з PLANE_NEAR, PLANE_FAR, PLANE_LEFT, PLANE_TOP, PLANE_RIGHT, або PLANE_BOTTOM.
Vector2 get_viewport_half_extents() const 🔗
Повертає розміри площини огляду, що це Projection позиції проектів на, розділених на два.
Повертає відстань для цього Projection за межі яких позицій затискаються.
Повертає відстань для цього Projection перед якими позиціями затискаються.
Projection inverse() const 🔗
Повертає об'єкт Projection, який виконує обернене проективне перетворення цього об'єкта Projection.
true, якщо це Projection виконує ортогональну проекцію.
Projection jitter_offseted(offset: Vector2) const 🔗
Повертає Projection зі значеннями X та Y з заданого Vector2, доданими до першого та другого значень останнього стовпця відповідно.
Projection perspective_znear_adjusted(new_znear: float) const 🔗
Повертаємо вашу увагу на те, що в найближчому відгалуження використовується new_znear.
Примітка: Оригінальний Projection повинен бути перспективним проекції.
Описи операторів
bool operator !=(right: Projection) 🔗
Повертає true, якщо виступи не рівні.
Примітка: У зв'язку з похибками точної точності, це може повернутися true, навіть якщо проекції практично рівні. is_equal_приблизно метод може бути додана в майбутньому версії Godot.
Projection operator *(right: Projection) 🔗
Повертає Projection, який застосовує комбіновані перетворення цього Projection та right.
Vector4 operator *(right: Vector4) 🔗
Проекти (multiplies) задані Vector4 за допомогою цієї матриці Projection.
bool operator ==(right: Projection) 🔗
Повертає true, якщо виступи рівні.
Примітка: У зв'язку з похибками точної точності, це може повернутися false, навіть якщо проекції практично рівні. is_equal_приблизно метод може бути додана в майбутньому версії Godot.
Vector4 operator [](index: int) 🔗
Повертає стовпчик Projection з вказаним індексом.
Індикатори в порядку: x, y, z, w.