Files
godot-docs-l10n/classes/uk/class_navigationmeshgenerator.rst

122 lines
15 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:github_url: hide
.. _class_NavigationMeshGenerator:
NavigationMeshGenerator
=======================
**Застаріло:** This class may be changed or removed in future versions.
**Успадковує:** :ref:`Object<class_Object>`
Помічник класу створення і очищення навігаторів.
.. rst-class:: classref-introduction-group
Опис
--------
Цей клас відповідає за створення та очищення тривимірних навігаційних сіток, які використовуються як ресурси :ref:`NavigationMesh<class_NavigationMesh>` в :ref:`NavigationRegion3D<class_NavigationRegion3D>`. **NavigationMeshGenerator** дуже обмежено або зовсім не використовується для 2D, оскільки процес запікання навігаційної сітки передбачає аналіз 3D-типів вузлів і 3D-геометрії джерела.
Увесь запікання навігаційної сітки найкраще виконувати в окремому потоці, оскільки вокселізація, тести на зіткнення та оптимізація сітки є дуже повільними та потребують високої продуктивності.
Запікання навігаційної сітки відбувається в кілька етапів, і результат залежить від геометрії 3D-джерела та властивостей ресурсу :ref:`NavigationMesh<class_NavigationMesh>`. На першому кроці, починаючи з кореневого вузла та залежно від властивостей :ref:`NavigationMesh<class_NavigationMesh>`, усі дійсні 3D вихідні вузли геометрії збираються з :ref:`SceneTree<class_SceneTree>`. По-друге, усі зібрані вузли аналізуються на відповідні дані 3D-геометрії, і створюється комбінована 3D-сітка. Через багато різних типів аналізованих об’єктів, від звичайних :ref:`MeshInstance3D<class_MeshInstance3D>` до :ref:`CSGShape3D<class_CSGShape3D>` або різноманітних :ref:`CollisionObject3D<class_CollisionObject3D>`, деякі операції збору геометричних даних можуть запускати синхронізацію :ref:`RenderingServer<class_RenderingServer>` і :ref:`PhysicsServer3D<class_PhysicsServer3D>`. Синхронізація сервера може негативно вплинути на час запікання або частоту кадрів, оскільки часто передбачає блокування :ref:`Mutex<class_Mutex>` для безпеки потоку. Багато об’єктів, які можна аналізувати, і безперервна синхронізація з іншими потоковими серверами можуть значно збільшити час запікання. З іншого боку, лише кілька, але дуже великих і складних об’єктів займуть деякий час для підготовки до Серверів, що може помітно призупинити рендеринг наступного кадру. Як правило, загальна кількість об’єктів, які можна аналізувати, а також їхній індивідуальний розмір і складність мають бути збалансовані, щоб уникнути проблем із частотою кадрів або дуже тривалого часу запікання. Потім об’єднана сітка передається до Recast Navigation Object, щоб перевірити вихідну геометрію для прохідної місцевості, яка відповідає властивостям агента :ref:`NavigationMesh<class_NavigationMesh>`, шляхом створення воксельного світу навколо обмежувальної області сіток.
Потім завершена навігаційна сітка повертається та зберігається всередині :ref:`NavigationMesh<class_NavigationMesh>` для використання як ресурс у вузлах :ref:`NavigationRegion3D<class_NavigationRegion3D>`.
\ **Примітка:** Використання сіток не лише для визначення поверхонь, по яких можна ходити, але й для перешкоджання навігаційному запіканню, не завжди працює. Навігація не має уявлення про те, що таке геометрія «всередині» при роботі з геометрією джерела сітки, і це зроблено навмисно. Залежно від поточних параметрів запікання, щойно загороджувальна сітка стане достатньо великою, щоб помістити всередину область навігаційної сітки, запікання створить області навігаційної сітки, які знаходяться всередині сітки геометрії джерела загородження.
.. rst-class:: classref-introduction-group
Посібники
------------------
- :doc:`Використання навігації <../tutorials/navigation/navigation_using_navigationmeshes>`
.. rst-class:: classref-reftable-group
Методи
------------
.. table::
:widths: auto
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`bake<class_NavigationMeshGenerator_method_bake>`\ (\ navigation_mesh\: :ref:`NavigationMesh<class_NavigationMesh>`, root_node\: :ref:`Node<class_Node>`\ ) |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`bake_from_source_geometry_data<class_NavigationMeshGenerator_method_bake_from_source_geometry_data>`\ (\ navigation_mesh\: :ref:`NavigationMesh<class_NavigationMesh>`, source_geometry_data\: :ref:`NavigationMeshSourceGeometryData3D<class_NavigationMeshSourceGeometryData3D>`, callback\: :ref:`Callable<class_Callable>` = Callable()\ ) |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`clear<class_NavigationMeshGenerator_method_clear>`\ (\ navigation_mesh\: :ref:`NavigationMesh<class_NavigationMesh>`\ ) |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`parse_source_geometry_data<class_NavigationMeshGenerator_method_parse_source_geometry_data>`\ (\ navigation_mesh\: :ref:`NavigationMesh<class_NavigationMesh>`, source_geometry_data\: :ref:`NavigationMeshSourceGeometryData3D<class_NavigationMeshSourceGeometryData3D>`, root_node\: :ref:`Node<class_Node>`, callback\: :ref:`Callable<class_Callable>` = Callable()\ ) |
+--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
.. rst-class:: classref-section-separator
----
.. rst-class:: classref-descriptions-group
Описи методів
--------------------------
.. _class_NavigationMeshGenerator_method_bake:
.. rst-class:: classref-method
|void| **bake**\ (\ navigation_mesh\: :ref:`NavigationMesh<class_NavigationMesh>`, root_node\: :ref:`Node<class_Node>`\ ) :ref:`🔗<class_NavigationMeshGenerator_method_bake>`
**Застаріло:** This method is deprecated due to core threading changes. To upgrade existing code, first create a :ref:`NavigationMeshSourceGeometryData3D<class_NavigationMeshSourceGeometryData3D>` resource. Use this resource with :ref:`parse_source_geometry_data()<class_NavigationMeshGenerator_method_parse_source_geometry_data>` to parse the :ref:`SceneTree<class_SceneTree>` for nodes that should contribute to the navigation mesh baking. The :ref:`SceneTree<class_SceneTree>` parsing needs to happen on the main thread. After the parsing is finished use the resource with :ref:`bake_from_source_geometry_data()<class_NavigationMeshGenerator_method_bake_from_source_geometry_data>` to bake a navigation mesh.
Запікає ``navigation_mesh`` з вихідною геометрією, зібраною, починаючи з ``root_node``.
.. rst-class:: classref-item-separator
----
.. _class_NavigationMeshGenerator_method_bake_from_source_geometry_data:
.. rst-class:: classref-method
|void| **bake_from_source_geometry_data**\ (\ navigation_mesh\: :ref:`NavigationMesh<class_NavigationMesh>`, source_geometry_data\: :ref:`NavigationMeshSourceGeometryData3D<class_NavigationMeshSourceGeometryData3D>`, callback\: :ref:`Callable<class_Callable>` = Callable()\ ) :ref:`🔗<class_NavigationMeshGenerator_method_bake_from_source_geometry_data>`
Bakes the available ``navigation_mesh`` з даними з наданої ``source_geometry_data``. Після завершення процесу буде викликано додаткове ``callback``.
.. rst-class:: classref-item-separator
----
.. _class_NavigationMeshGenerator_method_clear:
.. rst-class:: classref-method
|void| **clear**\ (\ navigation_mesh\: :ref:`NavigationMesh<class_NavigationMesh>`\ ) :ref:`🔗<class_NavigationMeshGenerator_method_clear>`
Видаліть всі полігони та вершини з наданої ``Navigation_mesh`` ресурс.
.. rst-class:: classref-item-separator
----
.. _class_NavigationMeshGenerator_method_parse_source_geometry_data:
.. rst-class:: classref-method
|void| **parse_source_geometry_data**\ (\ navigation_mesh\: :ref:`NavigationMesh<class_NavigationMesh>`, source_geometry_data\: :ref:`NavigationMeshSourceGeometryData3D<class_NavigationMeshSourceGeometryData3D>`, root_node\: :ref:`Node<class_Node>`, callback\: :ref:`Callable<class_Callable>` = Callable()\ ) :ref:`🔗<class_NavigationMeshGenerator_method_parse_source_geometry_data>`
Парус :ref:`SceneTree<class_SceneTree>` для геометрії джерела за властивостями ``Navigation_mesh``. Оновлення наданої ``джерело_geometry_data`` ресурсу з отриманими даними. Після цього ресурс може бути використаний для запікання навігаційної сітки з :ref:`bake_from_source_geometry_data()<class_NavigationMeshGenerator_method_bake_from_source_geometry_data>`. Після завершення процесу буде викликано додаткове ``callback``.
\ **Примітка:** Ця функція повинна працювати на головному нитці або з відстроченим виклик як SceneTree не є нижчою.
\ **Продуктивність:** Під час зручного читання масивів даних з ресурсів :ref:`Mesh<class_Mesh>` може негативно вплинути на частоту кадрів. Дані повинні бути отримані від GPU, стеблінгу :ref:`RenderingServer<class_RenderingServer>` в процесі. Для виконання воліє використання електронних форм зіткнення або створення масивів даних повністю в коді.
.. |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 (Значення не повертається.)`