reckfellENGINE

Camera3D

Узел камеры, отображает точку обзора.

На этой странице
class Camera3DReckfellSharpНаследует Entity3D

Узел камеры, отображает точку обзора.

Camera3D — это специальный узел, который отображает то, что видно из его текущего местоположения. Камеры регистрируются в ближайшем узле Viewport (при подъеме по дереву). Только одна камера может быть активна для каждого viewport. Если viewport не доступен при подъеме по дереву, камера зарегистрируется в глобальном viewport. Другими словами, камера просто предоставляет возможности 3D-отображения для Viewport, и без него сцена, зарегистрированная в этом Viewport (или в более высоких viewport), не может быть отображена.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

Camera3DКонструктор
# Camera3D
C#
public Camera3D();

Свойства15

AttributesСвойство
# Attributes
C#
public CameraAttributes Attributes { get; set; }

CameraAttributes для использования с этой камерой.

CompositorСвойство
# Compositor
C#
public Compositor Compositor { get; set; }

Compositor, который будет использоваться для этой камеры.

CullMaskСвойство
# CullMask
C#
public uint CullMask { get; set; }

Маска отбраковки, описывающая, какие VisualInstance3D.Layers визуализируются этой камерой. По умолчанию визуализируются все 20 видимых пользователю слоев. Примечание: Поскольку Camera3D.CullMask позволяет хранить в общей сложности 32 слоя, есть еще 12 слоев, которые используются только внутренне движком и не отображаются в редакторе. Установка Camera3D.CullMask с помощью скрипта позволяет переключать эти зарезервированные слои, что может быть полезно для плагинов редактора. Чтобы упростить настройку Camera3D.CullMask с помощью скрипта, используйте Camera3D.GetCullMaskValue и Camera3D.SetCullMaskValue. Примечание: VoxelGI, SDFGI и LightmapGI всегда будут учитывать все слои, чтобы определить, что влияет на глобальное освещение. Если это проблема, установите GeometryInstance3D.GIMode на GeometryInstance3D.GIModeEnum.Disabled для сеток и Light3D.LightBakeMode на Light3D.BakeMode.Disabled для источников света, чтобы исключить их из глобального освещения.

CurrentСвойство
# Current
C#
public bool Current { get; set; }

Если true, предок Viewport в данный момент использует эту камеру. Если в сцене несколько камер, одна из них всегда будет текущей. Например, если в сцене присутствуют два узла Camera3D и только один из них является текущим, установка Camera3D.Current одной камеры на false приведет к тому, что другая камера станет текущей.

DopplerTrackingСвойство
# DopplerTracking
C#
public Camera3D.DopplerTrackingEnum DopplerTracking { get; set; }

Если не задано Camera3D.DopplerTrackingEnum.Disabled, эта камера будет имитировать эффект Доплера для объектов, изменённых с помощью определённых методов _process. Примечание: Эффект Доплера будет слышен на AudioStreamPlayer3D только в том случае, если AudioStreamPlayer3D.DopplerTracking не задано как AudioStreamPlayer3D.DopplerTrackingEnum.Disabled.

EnvironmentСвойство
# Environment
C#
public Environment Environment { get; set; }

Локальное переопределение окружения этой камеры с приоритетом над WorldEnvironment. null снимает override и возвращает выбор окружения мира. Если изменения WorldEnvironment не видны, сначала проверьте это свойство активной камеры.

FarСвойство
# Far
C#
public float Far { get; set; }

Расстояние до дальней плоскости отсечения камеры. Не используйте raw_depth*Far как универсальную формулу расстояния: перспективная глубина нелинейна и в текущем рендере использует reverse-Z. В примере расстояние восстанавливается обратной матрицей проекции с делением на W.

FovСвойство
# Fov
C#
public float Fov { get; set; }

Поле обзора камеры (также известное как FOV) в качестве угла в градусах. Применяется только в режиме зрения. Camera3D.KeepAspect Заблокировать одну ось, это значение устанавливает поле обзора на другую ось. Для ссылки - угол по умолчанию для вертикального FOV (75.0) эквивалентно горизонтальному FOV:

  • ~91,31 градуса в 4:3 просмотра
  • ~101,67 градуса в 16:10
  • ~107,51 градуса в 16:9 смотровой порт
  • ~121,63 градуса в 21:9 просмотра
FrustumOffsetСвойство
# FrustumOffset
C#
public Vector2 FrustumOffset { get; set; }

Смещение фрустума (frustum) камеры. Его можно изменить со значения по умолчанию, чтобы создать эффекты «наклонного фрустума», такие как Y-shearing. Примечание: Действует только если Camera3D.Projection равна Camera3D.ProjectionType.Frustum.

HOffsetСвойство
# HOffset
C#
public float HOffset { get; set; }

Горизонтальное (X) смещение области просмотра камеры.

KeepAspectСвойство
# KeepAspect
C#
public Camera3D.KeepAspectEnum KeepAspect { get; set; }

Ось для блокировки во время настроек Camera3D.Fov/Camera3D.Size. Может быть либо Camera3D.KeepAspectEnum.Width, либо Camera3D.KeepAspectEnum.Height.

NearСвойство
# Near
C#
public float Near { get; set; }

Расстояние до ближней плоскости отсечения камеры в единицах мира. Это не исходное значение depth_texture. В проверенном spatial-примере INV_PROJECTION_MATRIX восстанавливает расстояния поверхностей после изменения Near вместе с Far; raw depth при этом меняется.

ProjectionСвойство
# Projection
C#
public Camera3D.ProjectionType Projection { get; set; }

Тип проекции камеры. Perspective использует перспективную проекцию с Fov; Orthogonal — ортографическую с Size; Frustum задаёт смещённый фрустум. Проверенный пример реконструирует глубину в Perspective и Orthogonal через актуальную INV_PROJECTION_MATRIX. Frustum не включён в эту проверку.

SizeСвойство
# Size
C#
public float Size { get; set; }

Размер области Orthogonal/Frustum-проекции в единицах мира; соответствующая ширина или высота зависит от KeepAspect. Это не расстояние до поверхности. Контрольные плоскости в ортографическом примере сохраняют восстановленную глубину при изменении Size и соответствующем пересчёте их положения в кадре.

VOffsetСвойство
# VOffset
C#
public float VOffset { get; set; }

Вертикальное (Y) смещение области просмотра камеры.

Методы49

ClearCurrentvoid
# ClearCurrent
C#
public void ClearCurrent(bool enableNext = true);

Если это текущая камера, удалить ее из списка текущих. Если enable_next равен true, запросить сделать текущей следующую камеру, если таковая имеется.

Параметры
ИмяТипПо умолчанию
enableNextbooltrue
GetAttributesCameraAttributes
# GetAttributes
C#
public CameraAttributes GetAttributes();
Возвращает CameraAttributes
GetCameraProjectionProjection
# GetCameraProjection
C#
public Projection GetCameraProjection();

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

Возвращает Projection
GetCameraRidRid
# GetCameraRid
C#
public Rid GetCameraRid();

Возвращает RID камеры из RenderingServer.

Возвращает Rid
GetCameraTransformTransform3D
# GetCameraTransform
C#
public Transform3D GetCameraTransform();

Возвращает преобразование камеры плюс вертикальное (Camera3D.VOffset) и горизонтальное (Camera3D.HOffset) смещения; и любые другие корректировки, внесенные в положение и ориентацию камеры подклассами камер, такими как XRCamera3D.

Возвращает Transform3D
GetCompositorCompositor
# GetCompositor
C#
public Compositor GetCompositor();
Возвращает Compositor
GetCullMaskuint
# GetCullMask
C#
public uint GetCullMask();
Возвращает uint
GetCullMaskValuebool
# GetCullMaskValue
C#
public bool GetCullMaskValue(int layerNumber);

Возвращает, включен ли указанный слой Camera3D.CullMask, учитывая layer_number от 1 до 20.

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetDopplerTrackingCamera3D.DopplerTrackingEnum
# GetDopplerTracking
C#
public Camera3D.DopplerTrackingEnum GetDopplerTracking();
Возвращает Camera3D.DopplerTrackingEnum
GetEnvironmentEnvironment
# GetEnvironment
C#
public Environment GetEnvironment();
Возвращает Environment
GetFarfloat
# GetFar
C#
public float GetFar();
Возвращает float
GetFovfloat
# GetFov
C#
public float GetFov();
Возвращает float
GetFrustumReckfell.Collections.Array<Plane>
# GetFrustum
C#
public Reckfell.Collections.Array<Plane> GetFrustum();

Возвращает плоскости усеченной пирамиды камеры в единицах мирового пространства как массив Plane в следующем порядке: ближний, дальний, левый, верхний, правый, нижний. Не путать с Camera3D.FrustumOffset.

Возвращает Reckfell.Collections.Array<Plane>
GetFrustumOffsetVector2
# GetFrustumOffset
C#
public Vector2 GetFrustumOffset();
Возвращает Vector2
GetHOffsetfloat
# GetHOffset
C#
public float GetHOffset();
Возвращает float
GetKeepAspectModeCamera3D.KeepAspectEnum
# GetKeepAspectMode
C#
public Camera3D.KeepAspectEnum GetKeepAspectMode();
Возвращает Camera3D.KeepAspectEnum
GetNearfloat
# GetNear
C#
public float GetNear();
Возвращает float
GetProjectionCamera3D.ProjectionType
# GetProjection
C#
public Camera3D.ProjectionType GetProjection();
Возвращает Camera3D.ProjectionType
GetPyramidShapeRidRid
# GetPyramidShapeRid
C#
public Rid GetPyramidShapeRid();

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

Возвращает Rid
GetSizefloat
# GetSize
C#
public float GetSize();
Возвращает float
GetVOffsetfloat
# GetVOffset
C#
public float GetVOffset();
Возвращает float
IsCurrentbool
# IsCurrent
C#
public bool IsCurrent();
Возвращает bool
IsPositionBehindbool
# IsPositionBehind
C#
public bool IsPositionBehind(Vector3 worldPoint);

Проверяет, меньше ли глубина мировой точки вдоль направления камеры значения Near. Поэтому учитываются и точки между началом камеры и ближней плоскостью, а не только точки позади начала камеры. Это проверка глубины, без полного теста фрустума и перекрытия другими объектами.

Параметры
ИмяТипПо умолчанию
worldPointVector3—
Возвращает bool
IsPositionInFrustumbool
# IsPositionInFrustum
C#
public bool IsPositionInFrustum(Vector3 worldPoint);

Проверяет мировую точку по плоскостям фрустума камеры. Используйте камеру в дереве с настроенным viewport. Попадание во фрустум не доказывает видимость: метод не проверяет перекрытие геометрией, покрытие пикселями или слои отсечения объектов.

Параметры
ИмяТипПо умолчанию
worldPointVector3—
Возвращает bool
MakeCurrentvoid
# MakeCurrent
C#
public void MakeCurrent();

Делает эту камеру текущей камерой для Viewport (см. описание класса). Если узел камеры находится вне дерева сцены, он попытается стать текущим после добавления.

ProjectLocalRayNormalVector3
# ProjectLocalRayNormal
C#
public Vector3 ProjectLocalRayNormal(Vector2 screenPoint);

Возвращает нормальный вектор из точки экрана, направленный вдоль камеры. Ортогональные камеры нормализуются. Перспективные камеры учитывают перспективу, ширину/высоту экрана и т. д.

Параметры
ИмяТипПо умолчанию
screenPointVector2—
Возвращает Vector3
ProjectPositionVector3
# ProjectPosition
C#
public Vector3 ProjectPosition(Vector2 screenPoint, float zDepth);

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

Параметры
ИмяТипПо умолчанию
screenPointVector2—
zDepthfloat—
Возвращает Vector3
ProjectRayNormalVector3
# ProjectRayNormal
C#
public Vector3 ProjectRayNormal(Vector2 screenPoint);

Возвращает вектор нормали в мировом пространстве, который является результатом проецирования точки на прямоугольник Viewport обратной проекцией камеры. Это полезно для отбрасывания лучей в форме (origin, normal) для пересечения или выбора объектов.

Параметры
ИмяТипПо умолчанию
screenPointVector2—
Возвращает Vector3
ProjectRayOriginVector3
# ProjectRayOrigin
C#
public Vector3 ProjectRayOrigin(Vector2 screenPoint);

Возвращает 3D-позицию в мировом пространстве, которая является результатом проецирования точки на прямоугольник Viewport обратной проекцией камеры. Это полезно для отбрасывания лучей в форме (origin, normal) для пересечения или выбора объектов.

Параметры
ИмяТипПо умолчанию
screenPointVector2—
Возвращает Vector3
SetAttributesvoid
# SetAttributes
C#
public void SetAttributes(CameraAttributes env);
Параметры
ИмяТипПо умолчанию
envCameraAttributes—
SetCompositorvoid
# SetCompositor
C#
public void SetCompositor(Compositor compositor);
Параметры
ИмяТипПо умолчанию
compositorCompositor—
SetCullMaskvoid
# SetCullMask
C#
public void SetCullMask(uint mask);
Параметры
ИмяТипПо умолчанию
maskuint—
SetCullMaskValuevoid
# SetCullMaskValue
C#
public void SetCullMaskValue(int layerNumber, bool value);

На основе value включает или отключает указанный слой в Camera3D.CullMask при заданном layer_number от 1 до 20.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetCurrentvoid
# SetCurrent
C#
public void SetCurrent(bool enabled);
Параметры
ИмяТипПо умолчанию
enabledbool—
SetDopplerTrackingvoid
# SetDopplerTracking
C#
public void SetDopplerTracking(Camera3D.DopplerTrackingEnum mode);
Параметры
ИмяТипПо умолчанию
modeCamera3D.DopplerTrackingEnum—
SetEnvironmentvoid
# SetEnvironment
C#
public void SetEnvironment(Environment env);
Параметры
ИмяТипПо умолчанию
envEnvironment—
SetFarvoid
# SetFar
C#
public void SetFar(float far);
Параметры
ИмяТипПо умолчанию
farfloat—
SetFovvoid
# SetFov
C#
public void SetFov(float fov);
Параметры
ИмяТипПо умолчанию
fovfloat—
SetFrustumvoid
# SetFrustum
C#
public void SetFrustum(float size, Vector2 offset, float zNear, float zFar);

Устанавливает проекцию камеры в режим усеченного конуса (см. Camera3D.ProjectionType.Frustum), указывая Camera3D.Size, offset и плоскости отсечения z_near и z_far в единицах мирового пространства. Параметр Camera3D.Size представляет размер ближней плоскости, либо ее ширину, либо высоту в зависимости от значения Camera3D.KeepAspect. См. также Camera3D.FrustumOffset.

Параметры
ИмяТипПо умолчанию
sizefloat—
offsetVector2—
zNearfloat—
zFarfloat—
SetFrustumOffsetvoid
# SetFrustumOffset
C#
public void SetFrustumOffset(Vector2 offset);
Параметры
ИмяТипПо умолчанию
offsetVector2—
SetHOffsetvoid
# SetHOffset
C#
public void SetHOffset(float offset);
Параметры
ИмяТипПо умолчанию
offsetfloat—
SetKeepAspectModevoid
# SetKeepAspectMode
C#
public void SetKeepAspectMode(Camera3D.KeepAspectEnum mode);
Параметры
ИмяТипПо умолчанию
modeCamera3D.KeepAspectEnum—
SetNearvoid
# SetNear
C#
public void SetNear(float near);
Параметры
ИмяТипПо умолчанию
nearfloat—
SetOrthogonalvoid
# SetOrthogonal
C#
public void SetOrthogonal(float size, float zNear, float zFar);

Устанавливает проекцию камеры в ортогональный режим (см. Camera3D.ProjectionType.Orthogonal), указывая Camera3D.Size и плоскости отсечения z_near и z_far в единицах мирового пространства. Кстати, в 3D-играх, которые выглядят как 2D, часто используется эта проекция, где Camera3D.Size указывается в пикселях.

Параметры
ИмяТипПо умолчанию
sizefloat—
zNearfloat—
zFarfloat—
SetPerspectivevoid
# SetPerspective
C#
public void SetPerspective(float fov, float zNear, float zFar);

Устанавливает проекцию камеры в режим перспективы (см. Camera3D.ProjectionType.Perspective), указывая угол Camera3D.Fov (поле зрения) в градусах, а также плоскости отсечения z_near и z_far в единицах мирового пространства.

Параметры
ИмяТипПо умолчанию
fovfloat—
zNearfloat—
zFarfloat—
SetProjectionvoid
# SetProjection
C#
public void SetProjection(Camera3D.ProjectionType mode);
Параметры
ИмяТипПо умолчанию
modeCamera3D.ProjectionType—
SetSizevoid
# SetSize
C#
public void SetSize(float size);
Параметры
ИмяТипПо умолчанию
sizefloat—
SetVOffsetvoid
# SetVOffset
C#
public void SetVOffset(float offset);
Параметры
ИмяТипПо умолчанию
offsetfloat—
UnprojectPositionVector2
# UnprojectPosition
C#
public Vector2 UnprojectPosition(Vector3 worldPoint);

Возвращает 2D-координату в прямоугольнике Viewport, которая сопоставляется с заданной 3D-точкой в мировом пространстве. Примечание: При использовании этого для позиционирования элементов GUI в 3D-окне просмотра используйте Camera3D.IsPositionBehind, чтобы предотвратить их появление, если 3D-точка находится за камерой:

Параметры
ИмяТипПо умолчанию
worldPointVector3—
Возвращает Vector2

Camera3D.DopplerTrackingEnum

ЗначениеОписание
Disabled = 0

Отключает имитацию эффекта Доплера (по умолчанию).

IdleStep = 1

Имитация эффекта Доплера путем отслеживания положений объектов, которые изменяются в _process. Изменения относительной скорости этой камеры по сравнению с этими объектами влияют на восприятие звука (изменяя AudioStreamPlayer3D.PitchScale звука).

PhysicsStep = 2

Имитация эффекта Доплера путем отслеживания положений объектов, которые изменяются в _physics_process. Изменения относительной скорости этой камеры по сравнению с этими объектами влияют на восприятие звука (изменяя AudioStreamPlayer3D.PitchScale звука).

Camera3D.KeepAspectEnum

ЗначениеОписание
Height = 1

Сохраняет вертикальное соотношение сторон; также известно как масштабирование Hor+. Обычно это лучший вариант для проектов, работающих в ландшафтном режиме, поскольку более широкие соотношения сторон автоматически выигрывают от более широкого горизонтального поля зрения (FOV).

Width = 0

Сохраняет горизонтальное соотношение сторон; также известно как Vert-масштабирование. Обычно это лучший вариант для проектов, работающих в портретном режиме, так как более высокие соотношения сторон выиграют от более широкого вертикального FOV.

Camera3D.ProjectionType

ЗначениеОписание
Frustum = 2

Усеченная проекция. Этот режим позволяет настраивать Camera3D.FrustumOffset для создания эффектов «наклонной усеченной пирамиды».

Orthogonal = 1

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

Программная деятельность

Perspective = 0

Перспективная проекция. Объекты на экране становятся меньше по мере их удаления.

Программа

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.