mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
752 lines
48 KiB
ReStructuredText
752 lines
48 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>` (при підйомі дерева). На вікно перегляду може бути активна лише одна камера. Якщо вікно перегляду недоступне в дереві, камеру буде зареєстровано в глобальному іконі перегляду. Іншими словами, камера просто надає можливості 3D-відображення для :ref:`Viewport<class_Viewport>`, і без нього не можна відобразити сцену, зареєстровану в цьому :ref:`Viewport<class_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``
|
||
|
||
Зберігає горизонтальне співвідношення сторін; також відомий як вертикальне масштабування. Зазвичай це найкращий варіант для проектів, що працюють у портретному режимі, оскільки більші співвідношення сторін виграють від ширшого вертикального кута зору.
|
||
|
||
.. _class_Camera3D_constant_KEEP_HEIGHT:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`KeepAspect<enum_Camera3D_KeepAspect>` **KEEP_HEIGHT** = ``1``
|
||
|
||
Зберігає вертикальне співвідношення сторін; також відомий як масштабування Hor+. Зазвичай це найкращий варіант для проектів, що виконуються в ландшафтному режимі, оскільки ширші співвідношення сторін автоматично виграють від ширшого горизонтального кута зору.
|
||
|
||
.. 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>`, ця камера імітуватиме ефект Доплера для об'єктів, змінених у певних методах ``_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**\ (\ )
|
||
|
||
:ref:`Environment<class_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``) еквівалентно горизонтальному куту зору:
|
||
|
||
- ~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**\ (\ )
|
||
|
||
Зміщення кута камери. Це можна змінити за замовчуванням, щоб створити ефекти «з нахилом усеченої точки», наприклад `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>`\ s у такому порядку: поблизу, далеко, ліворуч, зверху, справа, знизу. Не плутати з :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>`
|
||
|
||
Повертає 3D-точку у світовому просторі, яка відображає задану 2D-координату в прямокутнику :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>` за допомогою зворотної проекції камери. Це корисно для відкидання променів у формі (початку, нормалі) для перетину об’єктів або вибору.
|
||
|
||
.. 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>` за допомогою зворотної проекції камери. Це корисно для відкидання променів у формі (початку, нормалі) для перетину об’єктів або вибору.
|
||
|
||
.. 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-ігри, які виглядають двовимірно, часто використовують цю проекцію, де ``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-точку у світовому просторі.
|
||
|
||
\ **Примітка:** Використовуючи це для розміщення елементів графічного інтерфейсу над вікном 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 (Значення не повертається.)`
|