NavigationMesh
Експериментальний: This class may be changed or removed in future versions.
Успадковує: Resource < RefCounted < Object
Навігація сітки, яка визначає спокійні ділянки та перешкоди.
Опис
Навігаційна сітка - це колекція полігонів, які визначають, які ділянки навколишнього середовища є трафаретними для допомоги агентів в умовах трафаретизації через складні місця.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
void |
add_polygon(polygon: PackedInt32Array) |
void |
clear() |
void |
|
void |
create_from_mesh(mesh: Mesh) |
get_collision_mask_value(layer_number: int) const |
|
get_polygon(idx: int) |
|
get_polygon_count() const |
|
get_vertices() const |
|
void |
set_collision_mask_value(layer_number: int, value: bool) |
void |
set_vertices(vertices: PackedVector3Array) |
Переліки
enum SamplePartitionType: 🔗
SamplePartitionType SAMPLE_PARTITION_WATERSHED = 0
Перегородка водозбору. Як правило, найкращий вибір, якщо ви передупутуєте навігацію сітки, використовуйте це, якщо у вас є великі відкриті зони.
SamplePartitionType SAMPLE_PARTITION_MONOTONE = 1
Монотон розділення. Використовуйте це, якщо ви хочете швидко створити навігацію сітки.
SamplePartitionType SAMPLE_PARTITION_LAYERS = 2
Розділення шарів. Хороший вибір для використання керамічної навігаційної сітки з середнім і невеликим розміром плиткою.
SamplePartitionType SAMPLE_PARTITION_MAX = 3
Представляємо розмір виразок вибіркиPartitionType enum.
enum ParsedGeometryType: 🔗
ParsedGeometryType PARSED_GEOMETRY_MESH_INSTANCES = 0
Пристрої сітки як геометрія. Це включає в себе MeshInstance3D, CSGShape3D, і GridMap вершини.
ParsedGeometryType PARSED_GEOMETRY_STATIC_COLLIDERS = 1
Розбирає колайдери StaticBody3D як геометрію. Колайдер повинен знаходитися в будь-якому з шарів, визначених параметром geometry_collision_mask.
ParsedGeometryType PARSED_GEOMETRY_BOTH = 2
Як PARSED_GEOMETRY_MESH_INSTANCES, так і PARSED_GEOMETRY_STATIC_COLLIDERS.
ParsedGeometryType PARSED_GEOMETRY_MAX = 3
Представляємо розмір ParsedGeometryType enum.
enum SourceGeometryMode: 🔗
SourceGeometryMode SOURCE_GEOMETRY_ROOT_NODE_CHILDREN = 0
Сканує дочірні вузли кореневого вузла, що рекурсивно за геометрію.
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN = 1
Рекурсивно сканує вузли в групі та їхні дочірні вузли на предмет геометрії. Група визначається як geometry_source_group_name.
SourceGeometryMode SOURCE_GEOMETRY_GROUPS_EXPLICIT = 2
Використовує вузли в групі для геометрії. Група визначається як geometry_source_group_name.
SourceGeometryMode SOURCE_GEOMETRY_MAX = 3
Представляє розмір SourceGeometryMode enum.
Описи властивостей
Мінімальна підлога до висоти стелі, яка все ще дозволить площі підлоги вважати прогулянкою.
Примітка: В той час як випікання, це значення буде округлене до найближчої кількості cell_height.
float agent_max_climb = 0.25 🔗
Мінімальна висота під проводом, яка вважається, як і раніше, є розбіжним.
Примітка: У той час як випікання, це значення буде округлене до найближчого кількох cell_height.
float agent_max_slope = 45.0 🔗
Максимальний схил, який вважається ходовим, в градусах.
Відстань для звуження/зменшення прохідної зони поля висоти від перешкод.
Примітка: Під час запікання це значення буде округлено до найближчого кратного cell_size.
Примітка: Радіус має бути рівним або більшим за 0.0. Якщо радіус дорівнює 0.0, неможливо буде виправити недійсні перекриття контурів та інші помилки точності під час процесу запікання. В результаті деякі перешкоди можуть бути неправильно виключені з остаточної навігаційної сітки або можуть видалити полігони навігаційної сітки.
Розмір ненавігаційної межі навколо області, що обмежує випікання.
У поєднанні з filter_baking_aabb та значенням edge_max_error, рівним 1.0 або нижче, розмір межі може бути використаний для випікання вирівняних по плитках навігаційних сіток без зменшень країв плиток на agent_radius.
Примітка: Якщо це значення не дорівнює 0.0, воно буде округлено до найближчого кратного cell_size під час випікання.
Висота комірки використовується для стерилізації навігаторів сітки на вісь Y. Повинна відповідати висоти клітин на навігаційній карті.
Розмір комірки, що використовується для стерилізації навігаторів сітки на площині XZ. Необхідно відповідати розміру комірки на карті навігації.
float detail_sample_distance = 6.0 🔗
Відстань відбору для використання при генеруванні докладної сітки, в клітинному модулі.
float detail_sample_max_error = 1.0 🔗
Максимальна відстань деталі сітки поверхні слід відхилити від висотиполу, в клітинному агрегаті.
Максимальна відстань спрощених контурних країв слід відхилити оригінальний сирий контур.
Максимальна допустима довжина для контурних країв вздовж кордону сітки. Значення 0.0 вимкнено цю функцію.
Примітка: У той час як випікання, це значення буде округлене до найближчого кількох cell_size.
AABB filter_baking_aabb = AABB(0, 0, 0, 0, 0, 0) 🔗
Якщо випікання AABB має об'єм навігаційної сітки, яка буде обмежена до її огороджувальної площі.
Vector3 filter_baking_aabb_offset = Vector3(0, 0, 0) 🔗
Зміщення позиції, застосоване до filter_baking_aabb AABB.
bool filter_ledge_spans = false 🔗
Якщо true, розмітки, які підводять як неможливий.
bool filter_low_hanging_obstacles = false 🔗
Якщо true, позначки неможливих прольотів, як прогулянку, якщо їх максимальна кількість знаходиться в межах agent_max_climb прогулянку сусідом.
bool filter_walkable_low_height_spans = false 🔗
Якщо true, позначки ходових прольотів, як не прогулянку, якщо зазор вище пропуску менше agent_height.
int geometry_collision_mask = 4294967295 🔗
Фізичні шари для сканування статичних комірок.
Тільки використовується при geometry_parsed_geometry_type PARSED_GEOMETRY_STATIC_COLLIDERS або PARSED_GEOMETRY_BOTH.
ParsedGeometryType geometry_parsed_geometry_type = 2 🔗
void set_parsed_geometry_type(value: ParsedGeometryType)
ParsedGeometryType get_parsed_geometry_type()
Визначає, який тип вузлів буде розібрано як геометрія.
SourceGeometryMode geometry_source_geometry_mode = 0 🔗
void set_source_geometry_mode(value: SourceGeometryMode)
SourceGeometryMode get_source_geometry_mode()
Джерело геометрії, що використовується під час випікання.
StringName geometry_source_group_name = &"navigation_mesh_source_group" 🔗
void set_source_group_name(value: StringName)
StringName get_source_group_name()
Назва групи для сканування геометрії.
Тільки використовується при geometry_source_geometry_mode і constant SOURCE_GEOMETRY_GROUPS_WITH_CHILDREN] або SOURCE_GEOMETRY_GROUPS_EXPLICIT.
float region_merge_size = 20.0 🔗
Усі регіони з розміром менше, ніж це буде об'єднано з більшими регіонами, якщо це можливо.
Примітка: Це значення буде квадратним, щоб розрахувати кількість клітин. Наприклад, значення 20 буде встановлювати кількість клітин до 400.
Мінімальний розмір регіону для його створення.
Примітка: Це значення буде квадратним, щоб розрахувати мінімальну кількість клітин, що дозволяють формувати ізольовані райони острова. Наприклад, значення 8 буде встановлювати кількість клітин до 64.
SamplePartitionType sample_partition_type = 0 🔗
void set_sample_partition_type(value: SamplePartitionType)
SamplePartitionType get_sample_partition_type()
Алгоритм розбиття для створення полігонів навігаційної сітки.
float vertices_per_polygon = 6.0 🔗
Максимальна кількість вершин допускається для полігонів, створених під час контуру до процесу перетворення полігонів.
Описи методів
void add_polygon(polygon: PackedInt32Array) 🔗
Додає полігон, використовуючи індекси вершин, отриманих під час виклику get_vertices().
void clear() 🔗
Очищає внутрішні масиви для вершин і індексів полігонів.
void clear_polygons() 🔗
Очищає масив полігонів, але не очищає масив вершин.
void create_from_mesh(mesh: Mesh) 🔗
Навігація навігаційної сітки шляхом встановлення вершин і індексів згідно Mesh.
Примітка: Надана mesh повинна бути типу Mesh.PRIMITIVE_TRIANGLES і мати індексний масив.
bool get_collision_mask_value(layer_number: int) const 🔗
Повертає, чи ввімкнено вказаний шар geometry_collision_mask, враховуючи значення layer_number від 1 до 32.
PackedInt32Array get_polygon(idx: int) 🔗
Повернення PackedInt32Array, що містить індекси вершин створеного полігону.
int get_polygon_count() const 🔗
Повертає кількість полігонів в навігаційній сітці.
PackedVector3Array get_vertices() const 🔗
Повертаємо PackedVector3Array, що містить всі вершини, які використовуються для створення полігонів.
void set_collision_mask_value(layer_number: int, value: bool) 🔗
На основі value вмикає або вимикає вказаний шар у geometry_collision_mask, задано layer_number між 1 та 32.
void set_vertices(vertices: PackedVector3Array) 🔗
Встановлює вершини, які потім можна індексувати для створення полігонів за допомогою методу add_polygon().