Unity 6.3
0 онлайн 76 гостей 3 в системе
Вход

Matrix4x4.Ortho

Declaration

public static Matrix4x4 Ortho(float left, float right, float bottom, float top, float zNear, float zFar);

Параметры

Параметр Описание
левый Левая координата x.
правый Правая сторона координаты x.
внизу Нижняя координата y.
верхняя Верхняя координата по оси y.
zNear Значение в плоскости обрезки вблизи глубины.
zFar Значение плоскости обрезки дальней глубины.

Возвращаемое значение

Matrix4x4 Матрица проекции.

Описание

Создайте ортогональную проекционную матрицу.

Возвращаемая матрица, используемая в качестве проекционной матрицы Camera, создает проекцию области между left, right, top и bottom, с zNear и zFar как плоскостями обрезки ближней и дальней глубины в куб, идущий от (left, bottom, near) = (-1, -1, -1) до (right, top, far) = (1, 1, 1).

Возвращаемая матрица вставляет операцию z-flip, цель которой — отменить z-flip, выполняемый матрицей проекции камеры. Если матрица проекции является идентичностью или какой-либо пользовательской матрицей, не выполняющей z-flip, рассмотрите умножение третьей колонки проекционной матрицы (i.e. m02, m12, m22 и m32) на -1.

Проекционные матрицы в Unity следуют OpenGL конвенции, i.e. клипповое пространство близкой плоскости находится на z=-1, а дальней плоскости — на z=1.

Обратите внимание, что в зависимости от используемой графики API, проекционные матрицы в шейдерах могут следовать разным правилам, например, клипповое пространство в стиле D3D имеет близкую плоскость в нуле и дальнюю плоскость в одной; и "обратная Z" проекция имеет близкую плоскость в одной и дальнюю плоскость в нуле. Для вычисления значения проекционной матрицы, подходящего для передачи переменным шейдера, используйте GL.GetGPUProjectionMatrix.

using UnityEngine;

public class ExampleScript : MonoBehaviour { void Start() { // create orthographic matrix var matrix = Matrix4x4.Ortho(-4, 4, -2, 2, 1, 100); // will print: // 0.25000 0.00000 0.00000 0.00000 // 0.00000 0.50000 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.25000 0.00000 0.00000 0.00000 // 0.00000 0.50000 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); } }

Дополнительные ресурсы: ,Perspective,, ,Camera.projectionMatrix,, ,GL.LoadPixelMatrix,, ,GL.LoadProjectionMatrix,, ,GL.GetGPUProjectionMatrix,.