OccluderInstance3D
Успадковує: VisualInstance3D < Node3D < Node < Object
Забезпечує оклюзійну кульку для вузлів 3D, що покращує продуктивність в закритих приміщеннях.
Опис
Вибракування оклюзії може покращити продуктивність візуалізації в закритих/напіввідкритих областях, приховуючи геометрію, яка закрита іншими об’єктами.
Система оклюзії здебільшого статична. OccluderInstance3D можна перемістити або приховати під час виконання, але це запустить фонове повторне обчислення, яке може зайняти кілька кадрів. Рекомендується лише спорадично переміщувати OccluderInstance3D (наприклад, для цілей процедурної генерації), а не робити це кожного кадру.
Система відсічення оклюзії працює шляхом паралельного рендерингу оклюдерів на ЦП за допомогою Embree, перенесення результату в буфер із низькою роздільною здатністю, а потім використання цього для відсікання 3D-вузлів окремо. У 3D-редакторі ви можете попередньо переглянути буфер відсічення оклюзії, вибравши Перспектива > Відобразити розширені... > Буфер відсікання оклюзії у верхньому лівому куті вікна 3D. Якість буфера відсічення оклюзії можна налаштувати в налаштуваннях проекту.
Запікання: Виберіть вузол OccluderInstance3D, а потім скористайтеся кнопкою Bake Occluders у верхній частині 3D-редактора. До уваги братимуться лише непрозорі матеріали; прозорі матеріали (альфа-змішані або альфа-випробувані) ігноруватимуться поколінням оклюдерів.
Примітка: Вибракування оклюзії ефективне, лише якщо ProjectSettings.rendering/occlusion_culling/use_occlusion_culling має значення true. Увімкнення блокування оклюзії коштує ЦП. Увімкніть оклюзію, лише якщо ви дійсно плануєте її використовувати. Великі відкриті сцени з невеликою кількістю або без об’єктів, що блокують огляд, як правило, не отримають великої користі від оклюзії. Великі відкриті сцени зазвичай більше виграють від LOD сітки та діапазонів видимості (GeometryInstance3D.visibility_range_begin і GeometryInstance3D.visibility_range_end) порівняно з відбракуванням оклюзії.
Примітка: Через обмеження пам’яті відбір оклюзії не підтримується за замовчуванням у шаблонах веб-експорту. Його можна ввімкнути шляхом компіляції спеціальних веб-шаблонів експорту за допомогою module_raycast_enabled=yes.
Посібники
Властивості
|
||
|
||
Методи
get_bake_mask_value(layer_number: int) const |
|
void |
set_bake_mask_value(layer_number: int, value: bool) |
Описи властивостей
Візуальні шари для обліку при випіканні оклюцерів. Тільки MeshInstance3D, чи VisualInstance3D.layers матч з цим bake_mask буде включений в створену оклюцерну сітку. За замовчуванням всі об'єкти з opaque матеріали враховуються для оклюцерної випічки.
Щоб поліпшити продуктивність і уникнути артефактів, рекомендується виключити динамічні об'єкти, невеликі предмети і світильники з процесу випічки шляхом переміщення їх на окремий візуальний шар і виключення цього шару в bake_mask.
float bake_simplification_distance = 0.1 🔗
Дистанція спрощування для спрощення генерованого оклюцера полігону (в 3D одиниці). Більшість значень призводить до менш детальної оклюцерної сітки, яка покращує продуктивність, але зменшує точність культивування.
Геометрія оклюцера надається на ЦП, тому важливо зберегти геометрію максимально просто. Так як буфер відрізняється низькою роздільною здатністю, менш докладними оклюцерними сітками, як правило, ще добре працюють. Значення за замовчуванням є досить агресивним, тому ви можете зменшити його, якщо ви запустили в помилкові негативні речовини (об'єкти, що включаються, навіть якщо вони видимі камерою). Значення 0.01 буде діяти консервативно, і буде тримати геометрію perceptually неафілійовано в буфері відчуження. Залежно від сцени, значення 0.01 може все ще спрощувати сіточку помітно порівняно з відключенням спрощення.
Налаштування цього до 0.0 розбірки повністю, але вершини в точному ж положенні все ще будуть об'єднані. Сітчаста сіточка також буде повторно знезаражена, щоб зменшити кількість вершин і індексів.
Примітка: Це використовує бібліотеку meshoptimizer під кришкою, схожу на LOD-генерацію.
Occluder3D occluder 🔗
void set_occluder(value: Occluder3D)
Occluder3D get_occluder()
Оклюцерний ресурс для цього OccluderInstance3D. Ви можете генерувати ресурс occluder, вибравши вузол OccluderInstance3D, після чого за допомогою Bake Occluders кнопка у верхній частині редактора.
Ви також можете намалювати свій власний полігон 2D, додавши новий PolygonOccluder3D ресурс до occluder в Інспекторі.
Крім того, ви можете вибрати примітивний октейнер для використання: QuadOccluder3D, BoxOccluder3D або SphereOccluder3D.
Описи методів
bool get_bake_mask_value(layer_number: int) const 🔗
Повертає, чи увімкнено вказаний шар bake_mask, якщо задано layer_number значення від 1 до 32.
void set_bake_mask_value(layer_number: int, value: bool) 🔗
На основі значення параметра value вмикає або вимикає вказаний шар у bake_mask, маючи значення параметра layer_number від 1 до 32.