Excluded cameras и видимость слоёв

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

Система камер в PlayCanvas

Прежде чем перейти к концепции Excluded cameras, важно понять основные принципы работы с камерами в PlayCanvas. Каждая сцена может содержать несколько камер, каждая из которых может отображать различные части сцены, исходя из своего положения, угла обзора и других параметров.

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

Excluded Cameras: описание механизма

Механизм Excluded cameras позволяет исключить объекты из рендеринга на определённых камерах, сохраняя их видимость на других камерах. Это полезно в различных ситуациях, например, когда нужно скрыть некоторые элементы интерфейса или объекты, которые должны быть видны только на одной камере (например, на камере первого лица, но не на камере для наблюдателя).

Пример использования Excluded cameras:

Допустим, в игре или приложении требуется, чтобы определённые объекты были видны только на камере первого лица, а на остальных камерах они должны быть скрыты. В этом случае можно воспользоваться свойством excludedCameras объекта, чтобы исключить объекты из рендеринга на других камерах.

Для этого нужно:

  1. Установить excludedCameras для нужного объекта.
  2. Указать камеры, на которых данный объект не должен отображаться.
var object = new pc.Entity();
var camera1 = new pc.CameraComponent();
var camera2 = new pc.CameraComponent();

object.excludedCameras = [camera2];

В этом примере объект object будет скрыт на камере camera2, но будет виден на других камерах, включая camera1.

Работа с видимостью слоёв

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

Настройка слоёв для камеры

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

Пример:

camera.layers = [layer1, layer2];

Этот код заставляет камеру отображать объекты, принадлежащие слоям layer1 и layer2.

Использование слоёв и Excluded Cameras вместе

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

Пример:

  1. Камера camera1 отображает только объекты на слое layer1.
  2. Камера camera2 отображает объекты на слое layer2.
  3. Объект object исключён из рендеринга на камере camera2.
object.layers = [layer1];
camera1.layers = [layer1];
camera2.layers = [layer2];
object.excludedCameras = [camera2];

В данном примере объект будет виден на камере camera1, потому что она рендерит слой layer1, но он не будет виден на камере camera2, поскольку этот объект исключён из её рендеринга.

Преимущества использования Excluded Cameras и слоёв

  1. Производительность: Исключение объектов с камеры позволяет уменьшить количество объектов, которые нужно рендерить, что может значительно повысить производительность, особенно на мобильных устройствах.
  2. Гибкость: Система слоёв и Excluded cameras даёт высокую степень гибкости для создания сложных визуальных эффектов, где нужно контролировать видимость объектов для разных типов камер.
  3. Контроль интерфейса: Эта система также полезна при создании пользовательских интерфейсов, где определённые элементы интерфейса должны быть видны только на конкретной камере.

Ограничения и рекомендации

  1. Количество камер: Чем больше камер используется в сцене, тем сложнее может стать управление их видимостью и исключениями. Важно внимательно отслеживать, какие объекты исключаются из рендеринга на каждой камере.
  2. Слои и порядок рендеринга: Порядок рендеринга слоёв имеет значение, и необходимо следить за тем, чтобы объекты были корректно размещены на нужных слоях.

Использование Excluded cameras в комбинации с системой слоёв даёт мощный инструмент для тонкой настройки рендеринга сцены в PlayCanvas, позволяя создавать сложные визуальные сцены с высокой производительностью.