Сделать перспективу камеры наклонной
По умолчанию фрустумы расположены симметрично вокруг центральной линии камеры, но это не обязательно. Вы можете сделать фрустумы наклонными, что означает, что одна сторона находится под меньшим углом к центральной линии, чем противоположная сторона.
Это делает перспективу на одной стороне изображения выглядеть более сконденсированной, создавая впечатление, что зритель находится очень близко к объекту, видимому на этом краю. Примером того, как это может быть использовано, является гоночная игра; если фрустум уплощен на его нижнем крае, зритель видит, что он находится ближе к дороге, подчеркивая ощущение скорости.
Установка наклонности фрустума
Хотя компонент Camera не имеет функций, специально предназначенных для настройки наклонности фрустума, вы можете сделать это, либо включив свойства Физические Camera камеры и применив Lens Shift, либо добавив скрипт для изменения проекционной матрицы камеры.
Примечание: В течение Built-in Render Pipeline, a Camera который использует наклонный фрустум может использовать только передний путь отображения. Если ваш Camera настроен на использование траектории отображения Deferred Shading и вы делаете его фрустум наклонным, Unity силы, которые Camera для использования пути отображения Forward.
Установка наклонности фрустума с помощью Lens Shift
Включите свойства камеры Физические Camera для экспозиции параметров Lens Shift. Вы можете использовать их для смещения фокусного центра камеры вдоль осей X и Y таким образом, чтобы минимизировать искажение отображаемого изображения.
Смещение объектива уменьшает угол фрустума на стороне, противоположной направлению смещения. Например, при смещении объектива вверх, угол между нижней частью фрустума и центральной линией камеры становится меньше.
Дополнительные сведения о физических параметрах Camera см. в документации по физическим камерам.
Установка наклонности фрустума с помощью скрипта
Следующий пример скрипта показывает, как быстро добиться наклонного фрустума путем изменения матрицы проекции камеры. Обратите внимание, что эффект скрипта можно увидеть только в режиме игры.
using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour {
void SetObliqueness(float horizObl, float vertObl) {
Matrix4x4 mat = Camera.main.projectionMatrix;
mat[0, 2] = horizObl;
mat[1, 2] = vertObl;
Camera.main.projectionMatrix = mat;
}
}
C# пример сценария
Нет необходимости понимать, как работает матрица проекции, чтобы использовать это. Значения horizObl и vertObl устанавливают количество горизонтального и вертикального наклонения, соответственно. Значение нуля указывает на отсутствие наклонения. Положительное значение смещает фрустум вправо или вверх, таким образом сглаживая левую или нижнюю сторону. Отрицательное значение смещается влево или вниз и, следовательно, сглаживая правую или верхнюю сторону фрустума. Эффект можно увидеть непосредственно, если этот скрипт добавлен к камере и игра переключается на вид сцены во время работы игры; изображение фрустума камеры на проволочной схеме изменится при изменении значений horizObl и vertObl в инспекторе. Значение 1 или –1 в любой из переменных указывает, что одна сторона фрустума полностью плоская по отношению к центральной линии. Возможно, хотя редко необходимо, использовать значения за пределами этого диапазона.