mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2026-01-05 14:10:19 +03:00
752 lines
49 KiB
ReStructuredText
752 lines
49 KiB
ReStructuredText
:github_url: hide
|
||
|
||
.. _class_Camera3D:
|
||
|
||
Camera3D
|
||
========
|
||
|
||
**Наследует:** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
|
||
|
||
**Наследуется от:** :ref:`XRCamera3D<class_XRCamera3D>`
|
||
|
||
Узел камеры, отображает точку обзора.
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
Описание
|
||
----------------
|
||
|
||
**Camera3D** — это специальный узел, который отображает то, что видно из его текущего местоположения. Камеры регистрируются в ближайшем узле :ref:`Viewport<class_Viewport>` (при подъеме по дереву). Только одна камера может быть активна для каждого viewport. Если viewport не доступен при подъеме по дереву, камера зарегистрируется в глобальном viewport. Другими словами, камера просто предоставляет возможности 3D-отображения для :ref:`Viewport<class_Viewport>`, и без него сцена, зарегистрированная в этом :ref:`Viewport<class_Viewport>` (или в более высоких viewport), не может быть отображена.
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
Обучающие материалы
|
||
--------------------------------------
|
||
|
||
- `Демонстрация шутера от третьего лица (TPS) <https://godotengine.org/asset-library/asset/2710>`__
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
Свойства
|
||
----------------
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`CameraAttributes<class_CameraAttributes>` | :ref:`attributes<class_Camera3D_property_attributes>` | |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`Compositor<class_Compositor>` | :ref:`compositor<class_Camera3D_property_compositor>` | |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`int<class_int>` | :ref:`cull_mask<class_Camera3D_property_cull_mask>` | ``1048575`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`current<class_Camera3D_property_current>` | ``false`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`DopplerTracking<enum_Camera3D_DopplerTracking>` | :ref:`doppler_tracking<class_Camera3D_property_doppler_tracking>` | ``0`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`Environment<class_Environment>` | :ref:`environment<class_Camera3D_property_environment>` | |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`float<class_float>` | :ref:`far<class_Camera3D_property_far>` | ``4000.0`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`float<class_float>` | :ref:`fov<class_Camera3D_property_fov>` | ``75.0`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`Vector2<class_Vector2>` | :ref:`frustum_offset<class_Camera3D_property_frustum_offset>` | ``Vector2(0, 0)`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`float<class_float>` | :ref:`h_offset<class_Camera3D_property_h_offset>` | ``0.0`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`KeepAspect<enum_Camera3D_KeepAspect>` | :ref:`keep_aspect<class_Camera3D_property_keep_aspect>` | ``1`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`float<class_float>` | :ref:`near<class_Camera3D_property_near>` | ``0.05`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`ProjectionType<enum_Camera3D_ProjectionType>` | :ref:`projection<class_Camera3D_property_projection>` | ``0`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`float<class_float>` | :ref:`size<class_Camera3D_property_size>` | ``1.0`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
| :ref:`float<class_float>` | :ref:`v_offset<class_Camera3D_property_v_offset>` | ``0.0`` |
|
||
+-------------------------------------------------------+-------------------------------------------------------------------+-------------------+
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
Методы
|
||
------------
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`clear_current<class_Camera3D_method_clear_current>`\ (\ enable_next\: :ref:`bool<class_bool>` = true\ ) |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Projection<class_Projection>` | :ref:`get_camera_projection<class_Camera3D_method_get_camera_projection>`\ (\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`RID<class_RID>` | :ref:`get_camera_rid<class_Camera3D_method_get_camera_rid>`\ (\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Transform3D<class_Transform3D>` | :ref:`get_camera_transform<class_Camera3D_method_get_camera_transform>`\ (\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`get_cull_mask_value<class_Camera3D_method_get_cull_mask_value>`\ (\ layer_number\: :ref:`int<class_int>`\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] | :ref:`get_frustum<class_Camera3D_method_get_frustum>`\ (\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`RID<class_RID>` | :ref:`get_pyramid_shape_rid<class_Camera3D_method_get_pyramid_shape_rid>`\ (\ ) |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_position_behind<class_Camera3D_method_is_position_behind>`\ (\ world_point\: :ref:`Vector3<class_Vector3>`\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_position_in_frustum<class_Camera3D_method_is_position_in_frustum>`\ (\ world_point\: :ref:`Vector3<class_Vector3>`\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`make_current<class_Camera3D_method_make_current>`\ (\ ) |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Vector3<class_Vector3>` | :ref:`project_local_ray_normal<class_Camera3D_method_project_local_ray_normal>`\ (\ screen_point\: :ref:`Vector2<class_Vector2>`\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Vector3<class_Vector3>` | :ref:`project_position<class_Camera3D_method_project_position>`\ (\ screen_point\: :ref:`Vector2<class_Vector2>`, z_depth\: :ref:`float<class_float>`\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Vector3<class_Vector3>` | :ref:`project_ray_normal<class_Camera3D_method_project_ray_normal>`\ (\ screen_point\: :ref:`Vector2<class_Vector2>`\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Vector3<class_Vector3>` | :ref:`project_ray_origin<class_Camera3D_method_project_ray_origin>`\ (\ screen_point\: :ref:`Vector2<class_Vector2>`\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_cull_mask_value<class_Camera3D_method_set_cull_mask_value>`\ (\ layer_number\: :ref:`int<class_int>`, value\: :ref:`bool<class_bool>`\ ) |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_frustum<class_Camera3D_method_set_frustum>`\ (\ size\: :ref:`float<class_float>`, offset\: :ref:`Vector2<class_Vector2>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_orthogonal<class_Camera3D_method_set_orthogonal>`\ (\ size\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_perspective<class_Camera3D_method_set_perspective>`\ (\ fov\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Vector2<class_Vector2>` | :ref:`unproject_position<class_Camera3D_method_unproject_position>`\ (\ world_point\: :ref:`Vector3<class_Vector3>`\ ) |const| |
|
||
+--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Перечисления
|
||
------------------------
|
||
|
||
.. _enum_Camera3D_ProjectionType:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **ProjectionType**: :ref:`🔗<enum_Camera3D_ProjectionType>`
|
||
|
||
.. _class_Camera3D_constant_PROJECTION_PERSPECTIVE:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`ProjectionType<enum_Camera3D_ProjectionType>` **PROJECTION_PERSPECTIVE** = ``0``
|
||
|
||
Перспективная проекция. Объекты на экране становятся меньше по мере их удаления.
|
||
|
||
.. _class_Camera3D_constant_PROJECTION_ORTHOGONAL:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`ProjectionType<enum_Camera3D_ProjectionType>` **PROJECTION_ORTHOGONAL** = ``1``
|
||
|
||
Ортогональная проекция, также известная как ортографическая проекция. Объекты остаются того же размера на экране, независимо от того, как далеко они находятся.
|
||
|
||
.. _class_Camera3D_constant_PROJECTION_FRUSTUM:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`ProjectionType<enum_Camera3D_ProjectionType>` **PROJECTION_FRUSTUM** = ``2``
|
||
|
||
Усеченная проекция. Этот режим позволяет настраивать :ref:`frustum_offset<class_Camera3D_property_frustum_offset>` для создания эффектов «наклонной усеченной пирамиды».
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _enum_Camera3D_KeepAspect:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **KeepAspect**: :ref:`🔗<enum_Camera3D_KeepAspect>`
|
||
|
||
.. _class_Camera3D_constant_KEEP_WIDTH:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`KeepAspect<enum_Camera3D_KeepAspect>` **KEEP_WIDTH** = ``0``
|
||
|
||
Сохраняет горизонтальное соотношение сторон; также известно как Vert-масштабирование. Обычно это лучший вариант для проектов, работающих в портретном режиме, так как более высокие соотношения сторон выиграют от более широкого вертикального FOV.
|
||
|
||
.. _class_Camera3D_constant_KEEP_HEIGHT:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`KeepAspect<enum_Camera3D_KeepAspect>` **KEEP_HEIGHT** = ``1``
|
||
|
||
Сохраняет вертикальное соотношение сторон; также известно как масштабирование Hor+. Обычно это лучший вариант для проектов, работающих в ландшафтном режиме, поскольку более широкие соотношения сторон автоматически выигрывают от более широкого горизонтального поля зрения (FOV).
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _enum_Camera3D_DopplerTracking:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **DopplerTracking**: :ref:`🔗<enum_Camera3D_DopplerTracking>`
|
||
|
||
.. _class_Camera3D_constant_DOPPLER_TRACKING_DISABLED:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`DopplerTracking<enum_Camera3D_DopplerTracking>` **DOPPLER_TRACKING_DISABLED** = ``0``
|
||
|
||
Отключает имитацию `эффекта Доплера <https://en.wikipedia.org/wiki/Doppler_effect>`__ (по умолчанию).
|
||
|
||
.. _class_Camera3D_constant_DOPPLER_TRACKING_IDLE_STEP:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`DopplerTracking<enum_Camera3D_DopplerTracking>` **DOPPLER_TRACKING_IDLE_STEP** = ``1``
|
||
|
||
Имитация `эффекта Доплера <https://en.wikipedia.org/wiki/Doppler_effect>`__ путем отслеживания положений объектов, которые изменяются в ``_process``. Изменения относительной скорости этой камеры по сравнению с этими объектами влияют на восприятие звука (изменяя :ref:`AudioStreamPlayer3D.pitch_scale<class_AudioStreamPlayer3D_property_pitch_scale>` звука).
|
||
|
||
.. _class_Camera3D_constant_DOPPLER_TRACKING_PHYSICS_STEP:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`DopplerTracking<enum_Camera3D_DopplerTracking>` **DOPPLER_TRACKING_PHYSICS_STEP** = ``2``
|
||
|
||
Имитация `эффекта Доплера <https://en.wikipedia.org/wiki/Doppler_effect>`__ путем отслеживания положений объектов, которые изменяются в ``_physics_process``. Изменения относительной скорости этой камеры по сравнению с этими объектами влияют на восприятие звука (изменяя :ref:`AudioStreamPlayer3D.pitch_scale<class_AudioStreamPlayer3D_property_pitch_scale>` звука).
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Описания свойств
|
||
--------------------------------
|
||
|
||
.. _class_Camera3D_property_attributes:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`CameraAttributes<class_CameraAttributes>` **attributes** :ref:`🔗<class_Camera3D_property_attributes>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_attributes**\ (\ value\: :ref:`CameraAttributes<class_CameraAttributes>`\ )
|
||
- :ref:`CameraAttributes<class_CameraAttributes>` **get_attributes**\ (\ )
|
||
|
||
:ref:`CameraAttributes<class_CameraAttributes>` для использования с этой камерой.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_compositor:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`Compositor<class_Compositor>` **compositor** :ref:`🔗<class_Camera3D_property_compositor>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_compositor**\ (\ value\: :ref:`Compositor<class_Compositor>`\ )
|
||
- :ref:`Compositor<class_Compositor>` **get_compositor**\ (\ )
|
||
|
||
:ref:`Compositor<class_Compositor>`, который будет использоваться для этой камеры.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_cull_mask:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`int<class_int>` **cull_mask** = ``1048575`` :ref:`🔗<class_Camera3D_property_cull_mask>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_cull_mask**\ (\ value\: :ref:`int<class_int>`\ )
|
||
- :ref:`int<class_int>` **get_cull_mask**\ (\ )
|
||
|
||
Маска отбраковки, описывающая, какие :ref:`VisualInstance3D.layers<class_VisualInstance3D_property_layers>` визуализируются этой камерой. По умолчанию визуализируются все 20 видимых пользователю слоев.
|
||
|
||
\ **Примечание:** Поскольку :ref:`cull_mask<class_Camera3D_property_cull_mask>` позволяет хранить в общей сложности 32 слоя, есть еще 12 слоев, которые используются только внутренне движком и не отображаются в редакторе. Установка :ref:`cull_mask<class_Camera3D_property_cull_mask>` с помощью скрипта позволяет переключать эти зарезервированные слои, что может быть полезно для плагинов редактора.
|
||
|
||
Чтобы упростить настройку :ref:`cull_mask<class_Camera3D_property_cull_mask>` с помощью скрипта, используйте :ref:`get_cull_mask_value()<class_Camera3D_method_get_cull_mask_value>` и :ref:`set_cull_mask_value()<class_Camera3D_method_set_cull_mask_value>`.
|
||
|
||
\ **Примечание:** :ref:`VoxelGI<class_VoxelGI>`, SDFGI и :ref:`LightmapGI<class_LightmapGI>` всегда будут учитывать все слои, чтобы определить, что влияет на глобальное освещение. Если это проблема, установите :ref:`GeometryInstance3D.gi_mode<class_GeometryInstance3D_property_gi_mode>` на :ref:`GeometryInstance3D.GI_MODE_DISABLED<class_GeometryInstance3D_constant_GI_MODE_DISABLED>` для сеток и :ref:`Light3D.light_bake_mode<class_Light3D_property_light_bake_mode>` на :ref:`Light3D.BAKE_DISABLED<class_Light3D_constant_BAKE_DISABLED>` для источников света, чтобы исключить их из глобального освещения.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_current:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`bool<class_bool>` **current** = ``false`` :ref:`🔗<class_Camera3D_property_current>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_current**\ (\ value\: :ref:`bool<class_bool>`\ )
|
||
- :ref:`bool<class_bool>` **is_current**\ (\ )
|
||
|
||
Если ``true``, предок :ref:`Viewport<class_Viewport>` в данный момент использует эту камеру.
|
||
|
||
Если в сцене несколько камер, одна из них всегда будет текущей. Например, если в сцене присутствуют два узла **Camera3D** и только один из них является текущим, установка :ref:`current<class_Camera3D_property_current>` одной камеры на ``false`` приведет к тому, что другая камера станет текущей.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_doppler_tracking:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`DopplerTracking<enum_Camera3D_DopplerTracking>` **doppler_tracking** = ``0`` :ref:`🔗<class_Camera3D_property_doppler_tracking>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_doppler_tracking**\ (\ value\: :ref:`DopplerTracking<enum_Camera3D_DopplerTracking>`\ )
|
||
- :ref:`DopplerTracking<enum_Camera3D_DopplerTracking>` **get_doppler_tracking**\ (\ )
|
||
|
||
Если не задано :ref:`DOPPLER_TRACKING_DISABLED<class_Camera3D_constant_DOPPLER_TRACKING_DISABLED>`, эта камера будет имитировать `эффект Доплера <https://en.wikipedia.org/wiki/Doppler_effect>`__ для объектов, изменённых с помощью определённых методов ``_process``.
|
||
|
||
\ **Примечание:** Эффект Доплера будет слышен на :ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>` только в том случае, если :ref:`AudioStreamPlayer3D.doppler_tracking<class_AudioStreamPlayer3D_property_doppler_tracking>` не задано как :ref:`AudioStreamPlayer3D.DOPPLER_TRACKING_DISABLED<class_AudioStreamPlayer3D_constant_DOPPLER_TRACKING_DISABLED>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_environment:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`Environment<class_Environment>` **environment** :ref:`🔗<class_Camera3D_property_environment>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_environment**\ (\ value\: :ref:`Environment<class_Environment>`\ )
|
||
- :ref:`Environment<class_Environment>` **get_environment**\ (\ )
|
||
|
||
``Окружение``, используемое для этой камеры.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_far:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **far** = ``4000.0`` :ref:`🔗<class_Camera3D_property_far>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_far**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_far**\ (\ )
|
||
|
||
Расстояние до дальней границы отбраковки для этой камеры относительно ее локальной оси Z. Более высокие значения позволяют камере видеть дальше, в то время как уменьшение :ref:`far<class_Camera3D_property_far>` может улучшить производительность, если это приводит к частичной или полной отбраковке объектов.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_fov:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **fov** = ``75.0`` :ref:`🔗<class_Camera3D_property_fov>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_fov**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_fov**\ (\ )
|
||
|
||
Угол поля зрения камеры (в градусах). Применимо только в режиме перспективы. Поскольку :ref:`keep_aspect<class_Camera3D_property_keep_aspect>` блокирует одну ось, :ref:`fov<class_Camera3D_property_fov>` задает угол поля зрения другой оси.
|
||
|
||
Для справки, значение вертикального поля зрения по умолчанию (``75.0``) эквивалентно горизонтальному FOV:
|
||
|
||
- ~91,31 градуса в окне просмотра 4:3
|
||
|
||
- ~101,67 градуса в окне просмотра 16:10
|
||
|
||
- ~107,51 градуса в окне просмотра 16:9
|
||
|
||
- ~121,63 градуса в окне просмотра 21:9
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_frustum_offset:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`Vector2<class_Vector2>` **frustum_offset** = ``Vector2(0, 0)`` :ref:`🔗<class_Camera3D_property_frustum_offset>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_frustum_offset**\ (\ value\: :ref:`Vector2<class_Vector2>`\ )
|
||
- :ref:`Vector2<class_Vector2>` **get_frustum_offset**\ (\ )
|
||
|
||
Смещение фрустума (frustum) камеры. Его можно изменить со значения по умолчанию, чтобы создать эффекты «наклонного фрустума», такие как `Y-shearing <https://zdoom.org/wiki/Y-shearing>`__.
|
||
|
||
\ **Примечание:** Действует только если :ref:`projection<class_Camera3D_property_projection>` равна :ref:`PROJECTION_FRUSTUM<class_Camera3D_constant_PROJECTION_FRUSTUM>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_h_offset:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **h_offset** = ``0.0`` :ref:`🔗<class_Camera3D_property_h_offset>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_h_offset**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_h_offset**\ (\ )
|
||
|
||
Горизонтальное (X) смещение области просмотра камеры.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_keep_aspect:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`KeepAspect<enum_Camera3D_KeepAspect>` **keep_aspect** = ``1`` :ref:`🔗<class_Camera3D_property_keep_aspect>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_keep_aspect_mode**\ (\ value\: :ref:`KeepAspect<enum_Camera3D_KeepAspect>`\ )
|
||
- :ref:`KeepAspect<enum_Camera3D_KeepAspect>` **get_keep_aspect_mode**\ (\ )
|
||
|
||
Ось для блокировки во время настроек :ref:`fov<class_Camera3D_property_fov>`/:ref:`size<class_Camera3D_property_size>`. Может быть либо :ref:`KEEP_WIDTH<class_Camera3D_constant_KEEP_WIDTH>`, либо :ref:`KEEP_HEIGHT<class_Camera3D_constant_KEEP_HEIGHT>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_near:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **near** = ``0.05`` :ref:`🔗<class_Camera3D_property_near>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_near**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_near**\ (\ )
|
||
|
||
Расстояние до ближайшей границы отбраковки для этой камеры относительно ее локальной оси Z. Более низкие значения позволяют камере видеть объекты ближе к ее началу координат, за счет более низкой точности по всему *всему* диапазону. Значения ниже значения по умолчанию могут привести к увеличению Z-борьбы.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_projection:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`ProjectionType<enum_Camera3D_ProjectionType>` **projection** = ``0`` :ref:`🔗<class_Camera3D_property_projection>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_projection**\ (\ value\: :ref:`ProjectionType<enum_Camera3D_ProjectionType>`\ )
|
||
- :ref:`ProjectionType<enum_Camera3D_ProjectionType>` **get_projection**\ (\ )
|
||
|
||
Режим проекции камеры. В режиме :ref:`PROJECTION_PERSPECTIVE<class_Camera3D_constant_PROJECTION_PERSPECTIVE>` расстояние Z объектов от локального пространства камеры масштабирует их воспринимаемый размер.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_size:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **size** = ``1.0`` :ref:`🔗<class_Camera3D_property_size>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_size**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_size**\ (\ )
|
||
|
||
Размер камеры в метрах, измеряемый как диаметр ширины или высоты, в зависимости от :ref:`keep_aspect<class_Camera3D_property_keep_aspect>`. Применимо только в ортогональном и усеченном режимах.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_property_v_offset:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`float<class_float>` **v_offset** = ``0.0`` :ref:`🔗<class_Camera3D_property_v_offset>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_v_offset**\ (\ value\: :ref:`float<class_float>`\ )
|
||
- :ref:`float<class_float>` **get_v_offset**\ (\ )
|
||
|
||
Вертикальное (Y) смещение области просмотра камеры.
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
Описания метода
|
||
------------------------------
|
||
|
||
.. _class_Camera3D_method_clear_current:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **clear_current**\ (\ enable_next\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_Camera3D_method_clear_current>`
|
||
|
||
Если это текущая камера, удалить ее из списка текущих. Если ``enable_next`` равен ``true``, запросить сделать текущей следующую камеру, если таковая имеется.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_get_camera_projection:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Projection<class_Projection>` **get_camera_projection**\ (\ ) |const| :ref:`🔗<class_Camera3D_method_get_camera_projection>`
|
||
|
||
Возвращает проекционную матрицу, которую эта камера использует для рендеринга в связанном с ней окне просмотра. Для работы камера должна быть частью дерева сцены.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_get_camera_rid:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`RID<class_RID>` **get_camera_rid**\ (\ ) |const| :ref:`🔗<class_Camera3D_method_get_camera_rid>`
|
||
|
||
Возвращает RID камеры из :ref:`RenderingServer<class_RenderingServer>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_get_camera_transform:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Transform3D<class_Transform3D>` **get_camera_transform**\ (\ ) |const| :ref:`🔗<class_Camera3D_method_get_camera_transform>`
|
||
|
||
Возвращает преобразование камеры плюс вертикальное (:ref:`v_offset<class_Camera3D_property_v_offset>`) и горизонтальное (:ref:`h_offset<class_Camera3D_property_h_offset>`) смещения; и любые другие корректировки, внесенные в положение и ориентацию камеры подклассами камер, такими как :ref:`XRCamera3D<class_XRCamera3D>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_get_cull_mask_value:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **get_cull_mask_value**\ (\ layer_number\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_Camera3D_method_get_cull_mask_value>`
|
||
|
||
Возвращает, включен ли указанный слой :ref:`cull_mask<class_Camera3D_property_cull_mask>`, учитывая ``layer_number`` от 1 до 20.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_get_frustum:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Array<class_Array>`\[:ref:`Plane<class_Plane>`\] **get_frustum**\ (\ ) |const| :ref:`🔗<class_Camera3D_method_get_frustum>`
|
||
|
||
Возвращает плоскости усеченной пирамиды камеры в единицах мирового пространства как массив :ref:`Plane<class_Plane>` в следующем порядке: ближний, дальний, левый, верхний, правый, нижний. Не путать с :ref:`frustum_offset<class_Camera3D_property_frustum_offset>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_get_pyramid_shape_rid:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`RID<class_RID>` **get_pyramid_shape_rid**\ (\ ) :ref:`🔗<class_Camera3D_method_get_pyramid_shape_rid>`
|
||
|
||
Возвращает RID пирамидальной формы, охватывающей усеченную пирамиду обзора камеры, игнорируя ближнюю плоскость камеры. Верхушка пирамиды представляет положение камеры.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_is_position_behind:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_position_behind**\ (\ world_point\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_Camera3D_method_is_position_behind>`
|
||
|
||
Возвращает ``true``, если заданная позиция находится за камерой (синяя часть связанной диаграммы). `См. эту диаграмму <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/camera3d_position_frustum.png>`__ для обзора методов запроса позиции.
|
||
|
||
\ **Примечание:** Позиция, которая возвращает ``false``, может все еще находиться за пределами поля зрения камеры.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_is_position_in_frustum:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_position_in_frustum**\ (\ world_point\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_Camera3D_method_is_position_in_frustum>`
|
||
|
||
Возвращает ``true``, если заданная позиция находится внутри пирамиды видимости камеры (зеленая часть связанной диаграммы). `См. эту диаграмму <https://raw.githubusercontent.com/godotengine/godot-docs/master/img/camera3d_position_frustum.png>`__ для обзора методов запроса позиции.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_make_current:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **make_current**\ (\ ) :ref:`🔗<class_Camera3D_method_make_current>`
|
||
|
||
Делает эту камеру текущей камерой для :ref:`Viewport<class_Viewport>` (см. описание класса). Если узел камеры находится вне дерева сцены, он попытается стать текущим после добавления.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_project_local_ray_normal:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Vector3<class_Vector3>` **project_local_ray_normal**\ (\ screen_point\: :ref:`Vector2<class_Vector2>`\ ) |const| :ref:`🔗<class_Camera3D_method_project_local_ray_normal>`
|
||
|
||
Возвращает нормальный вектор из точки экрана, направленный вдоль камеры. Ортогональные камеры нормализуются. Перспективные камеры учитывают перспективу, ширину/высоту экрана и т. д.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_project_position:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Vector3<class_Vector3>` **project_position**\ (\ screen_point\: :ref:`Vector2<class_Vector2>`, z_depth\: :ref:`float<class_float>`\ ) |const| :ref:`🔗<class_Camera3D_method_project_position>`
|
||
|
||
Возвращает трехмерную точку в мировом пространстве, которая сопоставляется с заданной двухмерной координатой в прямоугольнике :ref:`Viewport<class_Viewport>` на плоскости, которая находится на заданном расстоянии ``z_depth`` от камеры вглубь сцены.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_project_ray_normal:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Vector3<class_Vector3>` **project_ray_normal**\ (\ screen_point\: :ref:`Vector2<class_Vector2>`\ ) |const| :ref:`🔗<class_Camera3D_method_project_ray_normal>`
|
||
|
||
Возвращает вектор нормали в мировом пространстве, который является результатом проецирования точки на прямоугольник :ref:`Viewport<class_Viewport>` обратной проекцией камеры. Это полезно для отбрасывания лучей в форме (origin, normal) для пересечения или выбора объектов.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_project_ray_origin:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Vector3<class_Vector3>` **project_ray_origin**\ (\ screen_point\: :ref:`Vector2<class_Vector2>`\ ) |const| :ref:`🔗<class_Camera3D_method_project_ray_origin>`
|
||
|
||
Возвращает 3D-позицию в мировом пространстве, которая является результатом проецирования точки на прямоугольник :ref:`Viewport<class_Viewport>` обратной проекцией камеры. Это полезно для отбрасывания лучей в форме (origin, normal) для пересечения или выбора объектов.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_set_cull_mask_value:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **set_cull_mask_value**\ (\ layer_number\: :ref:`int<class_int>`, value\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Camera3D_method_set_cull_mask_value>`
|
||
|
||
На основе ``value`` включает или отключает указанный слой в :ref:`cull_mask<class_Camera3D_property_cull_mask>` при заданном ``layer_number`` от 1 до 20.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_set_frustum:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **set_frustum**\ (\ size\: :ref:`float<class_float>`, offset\: :ref:`Vector2<class_Vector2>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Camera3D_method_set_frustum>`
|
||
|
||
Устанавливает проекцию камеры в режим усеченной пирамиды (см. :ref:`PROJECTION_FRUSTUM<class_Camera3D_constant_PROJECTION_FRUSTUM>`), указывая ``size``, ``offset`` и плоскости отсечения ``z_near`` и ``z_far`` в единицах мирового пространства. См. также :ref:`frustum_offset<class_Camera3D_property_frustum_offset>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_set_orthogonal:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **set_orthogonal**\ (\ size\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Camera3D_method_set_orthogonal>`
|
||
|
||
Устанавливает проекцию камеры в ортогональный режим (см. :ref:`PROJECTION_ORTHOGONAL<class_Camera3D_constant_PROJECTION_ORTHOGONAL>`), указывая ``size`` и плоскости отсечения ``z_near`` и ``z_far`` в единицах мирового пространства.
|
||
|
||
Кстати, в 3D-играх, которые выглядят как 2D, часто используется эта проекция, где ``size`` указывается в пикселях.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_set_perspective:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **set_perspective**\ (\ fov\: :ref:`float<class_float>`, z_near\: :ref:`float<class_float>`, z_far\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Camera3D_method_set_perspective>`
|
||
|
||
Устанавливает проекцию камеры в режим перспективы (см. :ref:`PROJECTION_PERSPECTIVE<class_Camera3D_constant_PROJECTION_PERSPECTIVE>`), указывая угол ``fov`` (поле зрения) в градусах, а также плоскости отсечения ``z_near`` и ``z_far`` в единицах мирового пространства.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_Camera3D_method_unproject_position:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Vector2<class_Vector2>` **unproject_position**\ (\ world_point\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_Camera3D_method_unproject_position>`
|
||
|
||
Возвращает 2D-координату в прямоугольнике :ref:`Viewport<class_Viewport>`, которая сопоставляется с заданной 3D-точкой в мировом пространстве.
|
||
|
||
\ **Примечание:** При использовании этого для позиционирования элементов GUI в 3D-окне просмотра используйте :ref:`is_position_behind()<class_Camera3D_method_is_position_behind>`, чтобы предотвратить их появление, если 3D-точка находится за камерой:
|
||
|
||
::
|
||
|
||
# Этот блок кода является частью скрипта, наследуемого от Node3D.
|
||
# `control` — это ссылка на узел, наследуемый от Control.
|
||
control.visible = not get_viewport().get_camera_3d().is_position_behind(global_transform.origin)
|
||
control.position = get_viewport().get_camera_3d().unproject_position(global_transform.origin)
|
||
|
||
.. |virtual| replace:: :abbr:`virtual (Этот метод обычно должен быть переопределен пользователем, чтобы иметь какой-либо эффект.)`
|
||
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
|
||
.. |const| replace:: :abbr:`const (Этот метод не имеет побочных эффектов. Он не изменяет ни одну из переменных-членов экземпляра.)`
|
||
.. |vararg| replace:: :abbr:`vararg (Этот метод принимает любое количество аргументов после описанных здесь.)`
|
||
.. |constructor| replace:: :abbr:`constructor (Этот метод используется для создания типа.)`
|
||
.. |static| replace:: :abbr:`static (Этот метод не нуждается в вызове экземпляра, поэтому его можно вызвать напрямую, используя имя класса.)`
|
||
.. |operator| replace:: :abbr:`operator (Этот метод описывает допустимый оператор для использования с этим типом в качестве левого операнда.)`
|
||
.. |bitfield| replace:: :abbr:`BitField (Это значение является целым числом, составленным как битовая маска следующих флагов.)`
|
||
.. |void| replace:: :abbr:`void (Нет возвращаемого значения.)`
|