Matrix4x4.Perspective
Declaration
public static Matrix4x4 Perspective(float fov, float aspect, float zNear, float zFar);Параметры
| Параметр | Описание |
|---|---|
| Фов | Вертикальное поле зрения в градусах. |
| аспект | Соотношение сторон (ширина делится на высоту). |
| zNear | Значение в плоскости обрезки вблизи глубины. |
| zFar | Значение плоскости обрезки дальней глубины. |
Возвращаемое значение
Matrix4x4 Матрица проекции.
Описание
Создайте матрицу перспективной проекции.
Матрицы проекции в Unity следуют OpenGL конвенции, i.e. пространство клипа в близкой плоскости находится в z=-1, а в дальней плоскости — в z=1.
Возвращаемая матрица вставляет операцию z-flip, цель которой — отменить z-flip, выполняемый матрицей зрения камеры. Если матрица зрения является идентичностью или какой-либо пользовательской матрицей, которая не выполняет z-flip, рассмотрите умножение третьей колонки матрицы проекции (i.e. m02, m12, m22 и m32) на -1.
Обратите внимание, что в зависимости от используемой графики API, проекционные матрицы в шейдерах могут следовать другой конвенции, например, пространство клипа в стиле D3D имеет близкую плоскость в нуле и дальнюю плоскость в единице; и "обратная Z" проекция имеет близкую плоскость в одной и дальнюю плоскость в нуле. Для вычисления значения матрицы проекции, подходящего для передачи переменным шейдера, используйте GL.GetGPUProjectionMatrix.
using UnityEngine;
public class ExampleScript : MonoBehaviour { void Start() { // create projection matrix: 60 FOV, square aspect, // near plane 1, far plane 100 var matrix = Matrix4x4.Perspective(60, 1, 1, 100); // will print: // 0.20000 0.00000 0.00000 0.00000 // 0.00000 0.20000 0.00000 0.00000 // 0.00000 0.00000 -0.02020 -1.02020 // 0.00000 0.00000 0.00000 1.00000 Debug.Log("projection matrix\n" + matrix);
// get shader-compatible projection matrix value var shaderMatrix = GL.GetGPUProjectionMatrix(matrix, false); // on a Direct3D-like graphics API, will print: // 0.20000 0.00000 0.00000 0.00000 // 0.00000 0.20000 0.00000 0.00000 // 0.00000 0.00000 0.01010 1.01010 // 0.00000 0.00000 0.00000 1.00000 Debug.Log("shader projection matrix\n" + shaderMatrix); } }
Дополнительные ресурсы: ,Ortho,, ,Camera.projectionMatrix,, ,GL.LoadPixelMatrix,, ,GL.LoadProjectionMatrix,, ,GL.GetGPUProjectionMatrix,.