В PlayCanvas существует мощная система камер, которая позволяет управлять тем, как сцена отображается на экране. Однако в некоторых случаях требуется скрыть или исключить камеры, чтобы они не влияли на рендеринг сцены. Механизм Excluded cameras в PlayCanvas помогает реализовать этот функционал, позволяя разработчикам точно контролировать видимость объектов через камеры.
Прежде чем перейти к концепции Excluded cameras, важно понять основные принципы работы с камерами в PlayCanvas. Каждая сцена может содержать несколько камер, каждая из которых может отображать различные части сцены, исходя из своего положения, угла обзора и других параметров.
Каждая камера в PlayCanvas связана с рендерингом определённой части сцены, и на её основе вычисляются все видимые объекты. Камеры могут быть настроены с использованием различных параметров, таких как поле зрения, координаты расположения и направления, а также другие атрибуты, которые контролируют, какие объекты видны через неё.
Механизм Excluded cameras позволяет исключить объекты из рендеринга на определённых камерах, сохраняя их видимость на других камерах. Это полезно в различных ситуациях, например, когда нужно скрыть некоторые элементы интерфейса или объекты, которые должны быть видны только на одной камере (например, на камере первого лица, но не на камере для наблюдателя).
Допустим, в игре или приложении требуется, чтобы определённые объекты были видны только на камере первого лица, а на остальных камерах они должны быть скрыты. В этом случае можно воспользоваться свойством excludedCameras объекта, чтобы исключить объекты из рендеринга на других камерах.
Для этого нужно:
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.
Когда используются как excludedCameras, так и слои, можно достичь более сложных сценариев рендеринга. Например, объект может быть исключён из рендеринга на определённой камере, но при этом оставаться видимым на других камерах в зависимости от их слоёв.
Пример:
camera1 отображает только объекты на слое
layer1.camera2 отображает объекты на слое
layer2.object исключён из рендеринга на камере
camera2.object.layers = [layer1];
camera1.layers = [layer1];
camera2.layers = [layer2];
object.excludedCameras = [camera2];
В данном примере объект будет виден на камере camera1,
потому что она рендерит слой layer1, но он не будет виден
на камере camera2, поскольку этот объект исключён из её
рендеринга.
Использование Excluded cameras в комбинации с системой слоёв даёт мощный инструмент для тонкой настройки рендеринга сцены в PlayCanvas, позволяя создавать сложные визуальные сцены с высокой производительностью.