Cameras
Unity Manual > User Guide > Building Scenes > Cameras

Cameras

Камеры используются для показа игроку окружающего его мира. Можно использовать и больше одной камеры в сцене. Несколько камер могут использоваться для эффекта «экран в экране» или для разделения экрана на две части для двух игроков. Камеры можно анимировать, им можно присваивать физические свойства. От настройки камер во многом зависит настроение игры.

Подробная информаци о камерах доступна на странице Camera.

Camera

Камеры отображают мир для игрока. Манипулируя камерами, можно придать игре уникальный вид. Можно использовать неограниченное количество камер в сцене. Им можно задать порядок рендера, расположение на экране и прочее.


Камера.

Свойства

Clear Flags Определяет, какие части экрана будут стёрты (не будут отрисовываться) . Это полезно когда применяется несколько камер для отрисовки разных элементов игры.
Background color Фоновый цвет применятся к тем частям экрана, которые остались пусты после отрисовки всех объектов. Работает только если нет скайбокса.
Normalized View Port Rect Четыре переменные определяют, в каком участке экрана будет отображаться камера. Измрение идёт в координатах экрана, каждая координата находится в диапазоне 0-1.
X Начальная точка отрисовки камеры по горизонтали.
Y Начальная точка отрисовки камеры по вертикали.
Width Ширина отрисовываемого изображения с камеры.
Height Высота отрисовываемого изображения с камеры.
Near clip plane Дистанция, после которой камерой начинают отрисовываться объекты (всё, что ближе, не отрисовывается).
Far clip plane Дистанция, до которой камерой отрисовываются объекты (всё, что дальше, не отрисовывается).
Field of view Ширина угла зрения, измеряется по оси Y.
Orthographic Включение ортографического режима (без перспективных искажений).
Orthographic size Размер поля зрения в ортографическом режиме.
Depth Позиция камеры в порядке отрисовки. Камеры с более высоким значением глубины будут отрисовываться поверх остальных..
Culling Mask Указание слоёв, которые будут отрисовываться камерой. Присвоение слоёв объектам происходит в Inspector.
Render Target (Pro only) Ссылка на текстуру, которая будет содержать выходное изображение камеры. Одна и таже камера не может рендерить в текстуру и на экран одновременно.

Details

Камеры могут настраиваться, скриптоваться и подчиняться связям наследования, как и другие объекты. Для игры-паззла нужн статичная камера, охватывающая весь паззл, а для FPS нужна камера закреплённая на уровне глаз персонажа. Для гоночной же игры понадобится закрепить камеру на бампере машины или над машиной.

Можно создавать много камер и назначать им различную глубину (Depth). Камеры отрисовываются в порядке от меньшей глубины к большей. Другими словами камера с глубиной 2 будет отрисована поверх камеры с глубиной 1. Также можно использовать свойство Normalized View Port Rectangle, чтобы позиционировать камеру на экране и масштабировать её. Это позволит создавать множественные экраны, камеры, закреплённые на ракете, отображение карты, зеркало заднего вида и т. п.

Clear Flags

Каждая камера хранит информацию о цветах и глубинах, когда она рендерит свое отображение. Участки экрана в которые не происходит отрисовка пусты, и по умолчанию будут отображать скайбокс. Когда Вы используете несколько камер, каждая из них сохраняет свою собственную информацию о глубинах и цвете в буферах, собирая все больше данных, когда каждая из камер производит рендер. Так как каждая из камер на сцене рендерит собственное отображение, Вы можете установить значения Clear Flags, чтобы очищать различные наборы информации из буферов. Это делается выбором одной из четырех опций:

Skybox

Этот вариант включён по умолчанию. Все пустые участки экрана будут отображать скайбокс текущей камеры. Если у текущей камеры нет скайбокса, будет использоваться стандартный скайбокс, указанный в Render Settings (Edit→Render Settings). Если и его нет, то используется фоновый цвет (Background Color).

Solid Color

Все пустые участки экрана будут закрашены фоновым цветом (Background Color).

Depth Only

Если Вам захочется отрисовать оружие  игрока, чтобы не было клиппинга с объектами окружающей среды, то одна камера ставится на глубину 0 для отрисовки окружающей среды, и другую камеру на глубину 1, чтобы отдельно отрисовать оружие. У камеры для оружия Clear Flags должен быть установлен в “depth only”. Это сохранит графическое отображение окружающей среды на экране, но сбросит всю информацию о том, где каждый из объектов расположен в трехмерном пространстве. Когда отрисовывается оружие, его непрозрачные части полностью перекроют все нарисованное, вне зависимости от того, насколько близко оружие к стене.


Оружие отрисовано последним, после очистки буфера глубин камер перед ним.

Don't Clear

Этот режим не очищает ни буфер цвета, ни буфер глубины. В результате каждый кадр отрисовывается поверх следующего, образуя эффект смазывания. Обычно это не используется в играх, и скорее всего лучше всего для использования вместе с пользовательским шейдером.

Clip Planes

Near Clip Plane и Far Clip Plane определяют, на каком расстоянии объекты начинают отрисовываться камерой и на каком заканчиваются. Эти границы отсекаются плоскостями, которые повёрнуты перпендикулярно направлению камеры и позиция их отмеряется от камеры. Near Plane определяет ближнюю границу, а Far Plane — дальнюю.

Отсекающие плоскости также определяют, как распределена точность буфера глубин по сцене. В общем случае для максимальной точности стоит держать Near plane так далеко, насколько это возможно.

Culling Mask

Маска отбора (culling mask) используется для выборочного рендеринга групп объектов с использованием слоев (Layers). Больше информации об использовании слоев можно получить здесь.

В общем случае, хорошей практикой является расположение Вашего интерфейса пользователя на другом слое, чтобы затем он рендерил себя отдельной камерой, предназаначенной для отрисовки слоя интерфейса пользователя.

Чтобы интерфейс отображался поверх отображений с других камер, Вам также потребуется установить Clear Flags в “Depth only” и убедиться, что глубина для камеры пользовательского интерфейса выше, чем у других камер.

Normalized Viewport Rectangle

Normalized Viewport Rectangles определяет местоположение изображения с камеры на экране и отведённую для него площадь.

Легко сделать сплит-скрин для двух игроков с помощью Normalized Viewport Rectangle. После создания двух камер в первой нужно установить значение Ymin 0.5, а во второй — Ymax 0.5. В результате, первая камера будет занимать полэкрана сверху, а вторая — полэкрана снизу.


Two-player display created with Normalized Viewport Rectangle

Orthographic

Включение ортографического режима удалит все перспективные искажения. Обычно это используется при создании изометрических или двухмерных игр.


Режим перспективы .

Ортографический режим.

Render Texture

Эта возможность доступна только для лицензии Unity Pro. Отрисовываемое камерой изображение помещается на текстуру, применённую к обхекту. Это позволет легко создавать видеомониторы, камеры, отражения и т. д.


A Render Texture used to create a live arena-cam

Hints

* камеры могут вызываться в виде экземпляров, связываться наследованием и снабжаться скриптами так же, как и остальные объекты.
* для увеличения динамичности гоночной игры можно увеличить угол обзора (Field of View).
* камеры могут подчиняться законам физики, если им присвоить компонент Rigidbody.
* нет ограничений на количество камер в сцене.
* ортографическая камера хорошо подходит для создания пользовательского интерфейса.
* Unity изначально cодержит скрипты для камеры в Components>Camera Control.
* лицензия Pro предоставляет возможность рендера изображения с камеры в текстуру.
* если появляются артефакты глубины (depth artifacts) (поверхности мерцают в местах соприкосновения), попробуйте увеличить значение Near Plane.
* камера не может одновременно отрисовывать изображение на экран и в текстуру.