Вузли Occluder

На додаток до оклюзії через Кімнати і Портали, Godot надає можливість забезпечити базову оклюзію за допомогою простих геометричних вузлів Occluder. Це геометричні фігури, які відображаються в редакторі за допомогою gizmos, але невидимі під час роботи гри.

Будь-який об'єкт, повністю перекритий формою вузла Occluder (позаду нього, або, в деяких випадках, всередині), буде вибракований під час виконання. Ці вузли розроблені, щоб бути простими і недорогими у використанні, але компроміс полягає в тому, що вони можуть бути не такими ефективними при вибракуванні, як Кімнати і Портали. Тим не менш, вони все ще можуть значно підвищити продуктивність в деяких ситуаціях.

Примітка

Важливо розуміти, що геометричні оклюдери працюють, перевіряючи, чи перекриті межі коробки (AABB) оклюдером. AABB повинен бути повністю закритий, щоб бути вибракуваним. Наслідком цього є те, що менші об'єкти, швидше за все, будуть ефективно вибракувані, а от великі - ні.

Основною перевагою вузлів Occluder є те, що вони повністю динамічні. Наприклад, якщо ви присвоїте вузол occluder в нащадки космічному кораблю, він буде рухатися під час переміщення батьківського об'єкта.

Причина того, що вузли Occluder настільки дешеві з точки зору продуктивності, полягає в тому, що двигун динамічно вибирає найактуальніші оклюдери під час виконання, виходячи з поточної точки зору камери. Це означає, що ви часто можете мати сотні оклюдерів, присутніх на сцені, але тільки найактуальніші будуть активні в любий момент часу.

Сам вузол Occluder є утримувачем ресурсу OccluderShape, який визначає функціональність. Для початку додайте вузол Occluder до дерева сцени.

Порада

Ви побачите жовтий попереджувальний трикутник, який дає вам знати, що ви повинні встановити OccluderShape в Інспекторі, перш ніж Occluder стане функціональним.

OccluderShapeSphere (Сферична Форма Оклюдера)

Сфера є одним з найпростіших і найшвидших оклюдерів, і легко піддається налаштуванню і розташуванню. Недоліком є те, що сфера має тенденцію мати сенс лише в певних дизайнах ігрового рівня, і більше підходить для природньої місцевості, або органічної геометрії на тлі.

Після того, як ви додали вузол Occluder і вирішили додати новий OccluderShapeSphere в Інспекторі, натисніть OccluderShapeSphere в інспекторі, щоб розкрити параметри.

../../_images/occluder_shape_sphere_inspector.png

На відміну від багатьох вузлів, ``OccluderShapeSphere``можуть зберігати кілька сфер на одному об'єкті. Це ефективніше для рушія, і зберігає ваше Дерево Сцен зрозумілішим. Вам не потрібно зберігати всі свої сфери в одному Occluder, оскільки це може стати складним для управління, але цілком розумно додати 10, або близько того, сфер або більше. Вони дуже дешеві, і часто чим більше ви розміщуєте, тим краще прораховується ваша геометрія.

Кілька сфер зберігаються у вигляді масиву Array. Якщо натиснути на Array в інспекторі, ви можете збільшити розмір Масиву, щоб додати ще одну сферу.

../../_images/occluder_shape_sphere_terrain.png

Сфера з'явиться у вигляді невеликого рожевого сферичного об'єкта у вікні редактора. У кожній сфері є дві ручки. Більша середня ручка дозволяє переміщати сферу в локальному просторі вузла Occluder, а невелика ручка дозволяє регулювати радіус.

Хоча змінити положення сфери можна за допомогою переміщення вузла Occluder в інспекторі, це переміщує увесь масив сфер. Якщо ви хочете використовувати кілька сфер в одному оклюдері, цю роботу ручки виконують. Для того, щоб дозволити позиціонування в 3D, gizmo буде переміщати 3D-позицію тільки в двох основних осях в залежності від точки зору в редакторі.

Порада

Є ще одна зручна функція в редакторі при використанні декількох сфер. Якщо натиснути кнопку панелі інструментів Center Node, вона перерахує локальні позиції сфер відносно середнього значення всього вузла та змінить перетворення вузла оклюдера. Ця зручна функція полегшити їх розміщення.

Під час виконання сфери можуть бути ввімкнені та вимкнені, в залежності від видимості вузла Occluder, а Вузол можна переміщувати, масштабувати та обертати тощо.

Поширеним прикладом використання для сфер оклюдера є забезпечення оклюзії на гірській/горбистій місцевості. Розміщуючи сфери всередині гір, ви можете запобігти рендерингу дерев, рослин, будівель та інших об'єктів позаду гір. З деякою творчістю вони також можуть бути використані для переміщення об'єктів, таких як великі космічні апарати, планети тощо.

OccluderShapeSphere (Сферична Форма Оклюдера)

Багатокутник є універсальним окклюдером. Його можна змусити добре працювати майже у всіх ситуаціях, і він може швидко забезпечити ступінь вибракування для більшості сцен.

Як і у всіх геометричних окклюдерів, ключ до успіху полягає в тому, щоб зробити їх великими. Вони не повинні відповідати візуалізованій геометрії, і в багатьох випадках вони будуть працювати краще, якщо ви розширите їх за межі візуалізованої геометрії, щоб зробити їх якомога більшими (не блокуючи законні лінії обзору). Причина, по якій вони повинні бути великими, полягає в тому, що в загальному вони будуть вибраковувати тільки об'єкти, які повністю приховані багатокутником. Щоб великі об'єкти були вибраковані, знадобляться великі окклюдери.

Примітка

Як і всі окклюдери, багатокутники можуть перекриватися, і в багатьох випадках вони будуть працювати краще, якщо ви їх перекриєте (вони з більшою ймовірністю вибракують об'єкти на кордонах).

Редагування та деталі

Багатокутники Occluder редагуються як список точок, які визначають опуклий багатокутник, на одній площині. Для того, щоб обмежити багатокутник однією площиною, точки визначаються в 2D-просторі, а не в 3D. Орієнтація, положення і масштаб багатокутника береться з перетворення Вузла Occluder.

../../_images/occluder_shape_polygon_inspector.png

Якщо створити Occluder і додати до нього ресурс OccluderShapePolygon, то за замовчуванням він створить 4 початкові точки, що утворюють прямокутник. Якщо ви зміните положення та поворот вузла Occluder, ви побачите, як прямокутник слідує за вузлом. Коли в редакторі вибрано Occluder, для кожної точки з'являться маркери. Ви можете клацати та перетягувати їх, щоб підігнати багатокутник під середовище вашої сцени.

../../_images/occluder_shape_polygon.png

Ви не обмежені 4 точками, ви можете додавати і видаляти їх в Інспекторі, але врахуйте, що:

  • Редактор автоматично продезінфікує ваші точки, щоб утворити опуклий багатокутник. Якщо перетягнути точку в положення, яке утворило б увігнутий багатокутник, вона буде проігнорована.

  • Загалом, чим менше ребер (а, отже, й точок), тим швидше багатокутник буде працювати під час виконання. Багатокутник з 6 ребрами повинен буде зробити в два рази більше обчислень ніж багатокутник з 3 ребрами. У більшості випадків найкращим числом є 4.

../../_images/occluder_shape_polygon2.png

Отвори

Ігрові рівні реального світу не завжди мають великі безперервні площі, які слід закрити. Часто стіни матимуть двері або вікна, печери матимуть вхід тощо. У деяких випадках доводиться розміщуючи навколо такого отвору кілька OccluderShapePolygon, але у багатокутників Occluder є ще одна хитрість в рукаві - у них можуть бути "отвори".

В інспекторі ви помітите, що так само, як і набір точок для багатокутника, багатокутник має набір точок для єдиного "отвору". Якщо ви додасте 3 або 4 до свого багатокутника, ви побачите, що вони з'являться в редакторі у вигляді менших маркерів. Ви можете перетягувати їх так само, як і маркери багатокутників, щоб утворити опуклий отвір.

../../_images/occluder_shape_polygon_hole.png

Отвір може бути повністю в межах багатокутника (наприклад, вікна), примикати до краю (як двері), або перетинаючи край багатокутника повністю, щоб зробити окклюдер увігнутим. Спосіб роботи отвору полягає в тому, що вибракування слідує простому правилу:

  • Якщо об'єкт, який потрібно вибракувати, повністю прихований багатокутником, то він дивиться, чи можна його побачити крізь отвір. Якщо об'єкт торкається отвору, він не вибраковується, а якщо прихований багатокутником і не проглядається крізь отвір, то вибраковується.

Примітка

Розміщення отворів, як правило, набагато зручніше, і працює швидше і краще під час виконання, ніж створення безлічі менших OccluderShapePolygons.

Обмеження отворів

Головне обмеження отворів полягає в тому, що на один багатокутник може бути тільки один отвір. Якщо у вас виникла ситуація, яка вимагає двох або більше отворів, у вас є вибір:

  • Об'єднати площу двох отворів в один більший отвір (якщо вони знаходяться близько один до одного).

  • Використати два або більше OccluderPolygons.

Порада

Пам'ятайте, що якщо ви використовуєте більше одного багатокутника, вони можуть перекриватися, і ви повинні використовувати це в своїх інтересах.

Скільки потрібно OccluderPolygon?

Багато в чому це залежить від вашої сцени, але, як правило, ви починаєте отримувати хорошу якість від 3 або 4 добре розміщених багатокутників. Після цього лише від вас залежить, скільки часу ви хочете витратити. Розміщення окклюдерів - це трохи мистецтво, і, чим більше ви з ними працюєте, тим краще будете в них розбиратися і вчитися нових трюків.

Деякі ідеї:

  • Будуйте свої рівні з урахуванням переваг оклюзії.

Це один із секретів професіоналів. Хороший дизайн рівнів потрібний не тільки для ігрового процесу, він також повинен враховувати оклюзії.

  • В будівлі з кількома поверхами, спробуйте розмістити між кожним поверхом восьмикутник, з отвором в місці, де знаходяться сходи між ними. Це може вибракувати цілі поверхи і значно підвищити продуктивність.

  • Не бійтеся розтягувати свої багатокутники далеко за межі видимої геометрії, щоб вибракувати більше об'єктів - наприклад, далеко в землю або небо.

Використання динамічних полігонів

Як і всі геометричні окклюдери, багатокутники не обмежуються статичною (нерухливою) геометрією. Розмістити їх можна на рухомих об'єктах. Ви навіть можете змінити відносне розташування точок в режимі реального часу.

Деякі рекомендації:

  • Існує невелика вартість переміщення багатокутників, точки багатокутників повинні трансформуватися на ЦП кожен раз, коли змінюється їх перетворення.

Про це можна не турбуватися сильно, процесори досить швидко опрацьовують точки трансформування, і, як правило, багатокутники мають дуже мало точок у порівнянні з візуалізованою геометрією. Але це те, що слід враховувати, якщо ви хочете створити, наприклад, 10 000 одночасних космічних кораблів з оклюдерами.

  • Зміна положення вузла багатокутника (наприклад, шляхом переміщення батьківського об'єкта) дешевше, ніж зміна самих точок. Використовуйте перше, а не друге, скрізь де можливо.