<
  • Главная
Статьи

Об'єкти - Керівництво користувача Blend4Web 18.05.0

  1. вкладка Object
  2. панель Display
  3. Панель Level of Detail
  4. панель Animation
  5. Панель Export Options
  6. Панель Rendering Properties
  7. панель Shadows
  8. панель Billboard
  9. панель Reflections
  10. Панель Selection and Outlining
  11. панель Anchors
  12. панель Relations
  13. Панель Wind Bending
  14. Панель Special Effects
  15. вкладка Physics
  16. Приклад роботи з кватернионами
  17. Загальна інформація
  18. Специфіка і відмінності від BGE
  19. Плавне зміна ЛОДов
  20. гістерезис

Об'єкти служать цілям розміщення компонентів різного типу (мешів, камер, ламп і т.д.) в просторі 3D сцени.

Движком підтримуються записи наступних типів:

При експорті сцени об'єкти типів CURVE, TEXT, METABALL і SURFACE конвертуються в об'єкти типу MESH.

Об'єкт може бути статичним або динамічним.

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

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

Тільки об'єкти типів MESH і EMPTY можуть бути як статичними, так і динамічними. Всі інші об'єкти, наприклад CAMERA або ARMATURE, завжди динамічні.

Статичні об'єкти типу MESH Рендер значно швидше динамічних, тому для підвищення продуктивності рекомендується зводити кількість динамічних мешів до мінімуму. Об'єкти інших типів, як статичні, так і динамічні, не роблять істотного впливу на продуктивність.

Об'єкти, що мають анімацію, фізику або батька, що є динамічним об'єктом, розглядаються як динамічні. Динамічними вважаються також об'єкти, контрольовані наступними логічними нодамі:

  • Play Animation
  • Transform Object
  • Move To
  • Inherit Material

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

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

вкладка Object

Об'єкти служать цілям розміщення компонентів різного типу (мешів, камер, ламп і т

панель Groups

Groups

Групи об'єктів, яким належить даний об'єкт.

Групи об'єктів, яким належить даний об'єкт

панель Display

Містить параметри, що визначають, як обраний об'єкт буде виглядати у вікні 3D View. У режимі Blend4Web ця панель не включає ніяких додаткових параметрів.

Панель Level of Detail

Levels of Detail> Object

Об'єкт, який використовується для даного рівня деталізації.

Levels of Detail> Distance

Відстань, на якому починається використання даного рівня деталізації.

Використання рівнів деталізації описано в відповідному розділі .

панель Animation

Animation> Apply Default Animation

Почати відтворення в движку пов'язаної з об'єктом анімації.

Animation> Animation Blending

Тільки для арматурних об'єктів. Дозволити плавний перехід від однієї скелетної анімації до іншої.

Animation> Behavior

Поведінка анімації при досягненні останнього кадру: Finish Stop - зупинити, Finish Reset - зупинити і скинути в нульовий кадр, Loop - циклічно повторювати.

Панель Export Options

Export Options> Do Not Export

Чи не експортувати.

Export Options> Apply Modifiers

Застосувати модифікатори об'єкта при експорті.

Примітка

При наявності модифікатора SKIN рекомендується застосувати його перед експортом, тому що він скидає шари вертексних квітів і UV-текстур, що може привести до помилок експорту.

Export Options> Apply Scale and Modifiers

Застосувати масштабування і модифікатори об'єкта при експорті.

Export Options> Export Vertex Animation

Експортувати попередньо створену і збережену вертексних анімацію. Актуально тільки для об'єктів типу MESH.

Export Options> Export Shape Keys

Експортувати ключі деформації. Актуально тільки для об'єктів типу MESH.

Примітка

Властивості Apply Modifiers, Apply Scale And Modifiers, Export Vertex Animation, і Export Shape Keys взаємовиключають одне одного.

Панель Rendering Properties

Rendering Properties> Hidden

Якщо це властивість активовано, об'єкт буде невидимий при запуску сцени.

Rendering Properties> Hidden Children

Всі нащадки об'єкта, а також нащадки його нащадків будуть невидимі при запуску сцени. Ця установка доступна лише якщо увімкнено Rendering Properties> Hidden і у об'єкту є нащадки.

Rendering Properties> Do Not Render

Відключити рендеринг об'єкта (наприклад, допоміжний об'єкт фізики).

Цей параметр недоступний для об'єктів типу Empty.

Rendering Properties> Disable Frustum Culling

Відключити оптимізацію відсіканням по зоні видимості.

Цей параметр недоступний для об'єктів типу Empty.

Rendering Properties> Force Dynamic Object

Примусово зробити об'єкт динамічним .

Rendering Properties> Dynamic Geometry & Materials

Включає можливість використовувати API для поновлення геометрії об'єкта і успадкування матеріалів.

Rendering Properties> Line Rendering

Активує використання об'єкта для рендеринга ліній .

Ця установка доступна лише для об'єктів типу Empty.

панель Shadows

Shadows> Cast

Об'єкт буде відкидати тіні.

Shadows> Cast Only

Об'єкт буде відкидати тіні, при цьому сам буде залишатися невидимим. Стає доступним після включення Shadows> Cast.

Shadows> Receive

Дозволити затінення від прилеглих об'єктів (отримання тіней) на об'єкті.

панель Billboard

Billboard

Використовувати об'єкт в якості білборда (тобто автоматично орієнтувати його щодо камери).

Billboard> Preserve Global Rotation

Білбордінг об'єкта з урахуванням його орієнтації в світовому просторі. Об'єкт завжди буде звернений до камери тією стороною, яку видно при погляді на нього вздовж напрямку осі Y в системі координат Blender'а. Стає доступним після включення Billboard.

Billboard> Billboard Type

Спосіб орієнтування білборда. Spherical (за замовчуванням) - об'єкт завжди орієнтований до камери однією стороною незалежно від кута огляду, Cylindrical - аналогічно Spherical, тільки обертання обмежена віссю Z світового простору в Blender. Стає доступним після включення Billboard.

панель Reflections

Reflections> Reflexible

При включенні об'єкт буде відбиватися від дзеркальних поверхонь.

Reflections> Reflexible Only

При включенні об'єкт буде відображатися, при цьому сам буде залишатися невидимим. Стає доступним після включення Reflections> Reflexible.

Примітка

Якщо опція Reflexible Only включена одночасно з Shadows> Cast Only, движок не буде відображати сам об'єкт, але буде розраховувати відображення об'єкта і тінь від нього, як показано на зображенні нижче.

Reflections> ReflectiveReflections> Reflective

При включенні об'єкт буде відображати своєю поверхнею інші об'єкти.

Reflections> Reflection Plane

Текстове поле для назви порожнього об'єкта, що задає площину відображення. Стає доступним після включення Reflections> Reflective.

Панель Selection and Outlining

Selection and Outlining> Selectable

дозволити виділення об'єкта за допомогою миші або іншого пристрою введення.

Selection and Outlining> Enable Outlining

Дозволити підсвічування об'єкта ( ефект Outline ).

панель Anchors

Anchors> Enable Anchor

Активує інтерфейс додавання якорів (двомірних міток) до об'єктів. Доступно тільки для об'єктів типу EMPTY. Якоря докладно описані в відповідному розділі .

Якоря докладно описані в   відповідному розділі

панель Relations

Relations> Parent

Покажчик на батьківський об'єкт.

Якщо в якості батьківського об'єкта обрана камера, стають доступними настройки Viewport Alignment.

Вони можуть застосовуватися для прив'язування об'єкта до поточної камері. Описано в чолі "Камера" .

Панель Wind Bending

Wind Bending

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

Панель Special Effects

Special Effects> Disable Fogging

Відключити туман для об'єкта.

Special Effects> Caustics

На об'єкті буде видно ефекти від прилеглої до нього води (каустику).

вкладка Physics

Detect Collisions

Активувати пов'язану з об'єктом фізику.

Floating

Зробити об'єкт плавучим. Детальний опис налаштувань плавучих об'єктів можна знайти в розділі фізика .

Vehicle

Активувати використання об'єкта в якості складової частини транспортного засобу. Детальний опис налаштувань транспортних засобів можна знайти в розділі фізика .

Character

Активувати використання об'єкта в якості фізичного каркаса ігрового персонажа. Детальний опис налаштувань персонажа можна знайти в розділі фізика .

Движок Blend4Web підтримує такі обмежувачі об'єктів:

  • Copy Location,
  • Copy Rotation,
  • Copy Transforms і

  • Track To.

Примітка

При використанні обмежувачів об'єктів в Blend4Web параметр Space ігнорується (його значення завжди вважається рівним World Space).

Ці обмежувачі можуть бути налаштовані безпосередньо в Blender. Інші типи обмежувачів не підтримуються, однак деякі методи з модуля constraints працюють схожим чином. Серед них:

  • метод append_copy_loc () працює так само, як обмежувач Copy Location

  • метод append_copy_rot () працює так само, як обмежувач Copy Rotation

  • метод append_copy_trans () працює так само, як обмежувач Copy Transforms

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

  • Як аналог обмежувача Track To може використовуватися метод append_track () .

Інші обмежувачі не мають прямих аналогів, проте певною мірою їх поведінку можна відтворити за допомогою методів API.

модуль constraints також включає кілька додаткових методів:

  • append_semi_soft ()

    Цей метод може застосовуватися для прикріплення об'єкта до іншого об'єкту з використанням напівм'якого обмежувача. Такий об'єкт буде плавно слідувати за об'єктом, до якого прикріплений. Цей метод може застосовуватися, наприклад, для створення камер з видом "від третьої особи".

  • append_semi_stiff ()

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

  • append_stiff ()

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

    Приклади: меч в руці персонажа; персонаж, який сидить в транспортному засобі.

  • append_stiff_trans ()

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

  • append_stiff_trans_rot ()

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

    Приклад: емітер частинок диму, прикріплений до вихлопної труби.

  • append_stiff_viewport ()

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

    Цей обмежувач може застосовуватися для створення як дво-, так і тривимірних елементів інтерфейсу.

  • remove () видаляє всі обмежувачі, раніше застосовані до об'єкта.

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

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

Анотація може бути повністю створена в Blender. Для цього досить розмістити в потрібному місці об'єкт типу Empty і включити його використання в якості "якоря". Текст анотації можна змінити в полях Title і Description, доступних на вкладці Meta Tags.

Enable AnchorEnable Anchor

Активує інтерфейс додавання якорів (двомірних міток) до об'єктів. Доступно тільки для об'єктів типу EMPTY.

Type

Тип якоря

  • Annotation - інформація з мета-тегів об'єктів відображається в розкривних інформаційних вікнах стандартного дизайну.

  • Custom Element - як якір можна призначити довільний HTML-елемент з поточною веб-сторінки

  • Generic - якір, положення якого можна визначити за допомогою API модуля anchors.

Значення за замовчуванням - Annotation

HTML Element ID

Задає ID HTML-елемента, який буде використовуватися в якості якоря. Доступно тільки якщо параметр Type має значення Custom Element.

Detect Visibility

Визначати видимість якоря, тобто реагувати на перекриття об'єкта-якоря іншими об'єктами. Активація опції призводить до падіння проізводельності рендеринга і повинна розглядатися тільки в разі реальної необхідності.

Max Width

Обмежити спливаюче інформаційне вікно анотації обраним значенням (в CSS пікселях). Доступно тільки якщо параметр Type має значення Annotation. Значення за замовчуванням - 250.

Для того, щоб проводити будь-які маніпуляції з тривимірним об'єктом, необхідно отримати посилання на нього. Для цього використовується ряд функцій API. Посилання на об'єкт має тип Object3D.

get_object_by_name ()

Отримати посилання на об'єкт, грунтуючись на відомому імені об'єкта.

// ... var obj = m_scenes. get_object_by_name ( "Object"); // ... get_object_by_dupli_name ()

Отримати посилання на скопійований об'єкт, використовуючи ім'я скопійованого об'єкта і ім'я об'єкта типу EMPTY, який використовувався для копіювання.

// ... var obj = m_scenes. get_object_by_dupli_name ( "Empty", "Object"); // ... get_object_by_dupli_name_list ()

Отримати посилання на скопійований об'єкт, використовуючи списки (масиви елементів типу String) імен скопійованих об'єктів і об'єктів типу EMPTY, використаних для копіювання.

// ... var obj = m_scenes. get_object_by_dupli_name_list ([ "Empty1", "Empty2", "Object"]); // ... get_object_name_hierarchy ()

Повертає список (масив) імен предків заданого об'єкта, починаючи від старшого предка і закінчуючи самим об'єктом.

// ... var names = m_scenes. get_object_name_hierarchy (obj); // ... check_object_by_name ()

Перевірити, чи існує в сцені об'єкт із зазначеним ім'ям.

// ... var object_exists = m_scenes. check_object_by_name ( "Cube"); // ... check_object_by_dupli_name ()

Перевірити, чи існує в сцені скопійований об'єкт із заданим ім'ям і заданим ім'ям об'єкта типу EMPTY, який використовувався для копіювання.

// ... var object_exists = m_scenes. check_object_by_dupli_name ( "Empty", "Cube"); // ... check_object_by_dupli_name_list ()

Перевірити, чи існує в сцені скопійований об'єкт, використовуючи списки (масиви елементів типу String) імен скопійованих об'єктів і об'єктів типу EMPTY, використаних для копіювання.

// ... var object_exists = m_scenes. check_object_by_dupli_name_list ([ "Empty1", "Empty2", "Object"]); // ... get_object_name ()

Отримати ім'я об'єкта, грунтуючись на відомій посиланням на цей об'єкт.

// ... var object_name = m_scenes. get_object_name (obj); // ...

Щоб дозволити виділення конкретного об'єкта, необхідно встановити прапор Selectable в панелі Selection and Outlining.

Примітка

Слід переконається в тому, що в панелі Scene> Object Outlining встановлено стан ON або AUTO.

Виділення об'єкта можливо програмно через API, наприклад, в модулі scenes.js є функція pick_object, яка за координатами в canvas'е виділяє об'єкт,

// ... var x = event. clientX; var y = event. clientY; var obj = m_scenes. pick_object (x, y); // ...

or using the Logic Editor .

Якщо для виділяється об'єкта в панелі Object> Selection and Outlining встановлені прапори Enable Outlining і Outline on Select, то виклик функції pick_object призведе до активації Outline-анімації .

Примітка

Якщо виділяється об'єкт напівпрозорий (має тип прозорості Blend Add або Sort), outline-анімація буде видно тільки на тих частинах об'єкта, для яких значення прозорості Alpha вище 0.5.

Кватерніони є чотиривимірні вектори, що використовуються для здійснення поворотів. Використання кватернионов має низку переваг перед іншими способами подання поворотів:

  • Не має неоднозначності і залежно від порядку застосування поворотів, які мають місце в разі використання кутів Ейлера.

  • Більш ефективне використання пам'яті (від 2-х до 4-х разів менше в залежності від типу використовуваної матриці).

  • Висока ефективність обчислення серії поворотів, ніж при використанні матриць.

  • Чисельна стійкість - компенсація помилок множення, що виникають через неточності обчислень з плаваючою комою.

  • Зручний метод інтерполяції.

Кватерніони мають ряд недоліків:

  • Поворот вектора за допомогою кватерниона складніша в обчислювальному плані операція ніж поворот з використанням матриці.

  • Використання кватернионов для подання відмінних від повороту перетворень (перспективна або ортогональна проекція) утруднено.

Для зручності роботи з кватернионами в движку є ряд функцій:

quat.multiply

Множення кватернионов. Множення кватерниона А на кватерніон Б зліва A * Б є поворотом на A. Тобто у об'єкта вже є якийсь поворот Б, який ми доповнюємо новим поворотом на A.

quat.setAxisAngle

Кватерніон є іншу форму запису повороту щодо довільної осі (вектора) на довільний кут. Позитивний напрямок повороту відлічується проти годинникової стрілки, якщо дивитися з кінця вектора. Наприклад виклик quat.setAxisAngle ([1,0,0], Math.PI / 3, quat) сформує кватерніон, який може бути використаний для здійснення повороту щодо осі X на 60 градусів (проти годинникової стрілки, якщо дивитися з кінця осі X) .

quat.slerp

Сферична інтерполяція кватернионов. Використовується для здійснення плавного розвороту об'єктів і анімації.

util.euler_to_quat, util.quat_to_euler.

Перетворення з кутів Ейлера і навпаки.

Приклад роботи з кватернионами

Потрібно повернути об'єкт на 60 градусів в горизонтальній площині вправо. У програмі Blender є відповідна модель з назвою "Cessna".

У програмі Blender є відповідна модель з назвою Cessna

Збережемо посилання на об'єкт в движку в змінної aircraft:

var aircraft = m_scenes. get_object_by_name ( "Cessna");

Здійснимо поворот:

  • Повороту вправо відповідає поворот за годинниковою стрілкою, тобто в негативному напрямку.

  • 60 градусів = \ (\ pi / 3 \) радіан.

В результаті отримуємо:

// compose quaternion var quat_60_Z_neg = m_quat. setAxisAngle ([0, 0, 1], - Math. PI / 3, m_quat. create ()); // get old rotation var quat_old = m_transform. get_rotation (aircraft); // left multiply: quat60_Z_neg * quat_old var quat_new = m_quat. multiply (quat_60_Z_neg, quat_old, m_quat. create ()); // set new rotation m_transform. set_rotation_v (aircraft, quat_new);

Оптимізований варіант, що не приводить до створення нових об'єктів:

// cache arrays as global vars var AXIS_Z = new Float32Array ([0, 0, 1]) var quat_tmp = new Float32Array (4); var quat_tmp2 = new Float32Array (4); ... // rotate m_quat. setAxisAngle (AXIS_Z, - Math. PI / 3, quat_tmp); m_transform. get_rotation (aircraft, quat_tmp2); m_quat. multiply (quat_tmp, quat_tmp2, quat_tmp); m_transform. set_rotation_v (aircraft, quat_tmp);

Зручним способом управління переміщенням об'єктів є використання спеціальних векторів, що мають наступний формат:

\ ([T_x, T_y, T_z, S, R_x, R_y, R_z, R_w] \)

Тут \ (T_x, T_y, T_z \) - компоненти вектора переміщення, \ (S \) - масштаб, \ (R_x, R_y, R_z, R_w \) - компоненти кватерниона повороту. Звідси випливає назва вектора: TSR або TSR-8.

Для роботи з даними векторами існує спеціальний модуль tsr, а також методи set_tsr () / get_tsr () модуля transform.

Движок Blend4Web також здатний візуалізувати лінії, задані у вигляді набору точок.

Движок Blend4Web також здатний візуалізувати лінії, задані у вигляді набору точок

Методи API для власне рендеринга ліній знаходяться в модулі geometry , А стиль (тобто товщина і колір) лінії встановлюється за допомогою методу set_line_params () з модуля material .

Для рендеринга ліній в сцені повинен бути присутнім принаймні один об'єкт типу Empty з активованою опцією Line Rendering.

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

Сама лінія візуалізується за допомогою методу API draw_line () . Його перший параметр - посилання на об'єкт типу Empty, а другий - масив вершин, які використовуються для побудови лінії. У цього методу також є третій (опціональний) параметр, що визначає, візуалізується чи безперервна лінія або набір відрізків, заданих парами вершин (в цьому випадку кількість вершин має бути парним).

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

Наступний приклад демонструє візуалізацію фрагмента фігури, наведеної на зображенні вище, за допомогою ліній:

var m_scenes = require ( "scenes"); var m_material = require ( "material"); var m_geometry = require ( "geometry"); var m_rgba = require ( "rgba"); ... // setting up Empty object for line rendering var line_1 = m_scenes. get_object_by_name ( "MyEmpty_1"); // setting up style parameters for the lines m_material. set_line_params (line_1, {width: 3 color: m_rgba. from_values ​​(0, 0, 0, 1.0)}); // coordinates for main axes var points_1 = new Float32Array ([0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5]) ; // drawing main axes m_geometry. draw_line (line_1, points_1, true);

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

Загальна інформація

ЛОДи (Levels Of Detail) представляють собою кілька рівнів деталізації одного об'єкта. Вони застосовуються для оптимізації, яка полягає в тому, що при видаленні отрісовивается менш детальний об'єкт, наприклад, нізкополігональних з примітивним матеріалом. Це дозволяє знизити навантаження на відеокарту, при цьому не сильно втративши в якості зображення, тому що на дальній дистанції багато деталей оригінального об'єкта все одно не будуть помітні.

Використання ЛОДов виправдано на великих сценах з безліччю об'єктів, в інших випадках виграш в FPS може бути і не таким істотним. Найбільш підходять для цього великі ігрові локації, на кшталт острова, сільській місцевості, міста і т.д.

Налаштування ЛОДов здійснюється в блендері за допомогою Увійти Levels of Detail.

Налаштування ЛОДов здійснюється в блендері за допомогою   Увійти   Levels of Detail

Тут для кожного конкретного об'єкта можна налаштувати його рівні деталізації і відстань, на якому буде відбуватися перемикання між ними. В якості такого рівня пропонується вибрати інший об'єкт. Очевидне правило - чим нижче знаходиться рівень в списку, тим простішим має бути відповідний об'єкт.

Спрощувати можна по-різному: можна зменшувати Полігональний об'єкта, полегшувати матеріали (особливо нодів), не використовувати ефекти на зразок тіней , анімації , Wind Bending'а и т.д. - все, що дасть задовільний результат при погляді на цей об'єкт з вказаною дистанції.

Кількість рівнів варто налаштовувати на свій розсуд з урахуванням загального масштабу сцени.

Кількість рівнів варто налаштовувати на свій розсуд з урахуванням загального масштабу сцени

Рівні деталізації дерев: зліва - оригінальний об'єкт, праворуч - його ЛОД

Специфіка і відмінності від BGE

Є ряд рекомендацій по налаштуванню ЛОДов для використання їх в движку. Також, як відомо, в Blender в режимі BGE присутній і своя система ЛОДов, що настроюється схожим чином, але з істотними відмінностями, які варті уваги.

  1. При призначенні ЛОД-об'єкта на інший об'єкт, позиція ЛОДА ніяк не зміниться. Тому, щоб в движку об'єкти збіглися, необхідно вручну розмістити їх в одному і тому ж місці в блендері. Тут криється відміну від BGE, де при виборі ЛОДА, він автоматично зміщується в центр об'єкта, який його використовує.

  2. Якщо Ви бажаєте використовувати один і той же ЛОД-об'єкт на безлічі різних об'єктів (наприклад, однотипні дерева, будинки, машини, кущі ...), то необхідно його скопіювати і призначати вже його копії, тобто розмножити в стількох примірниках, скільки об'єктів його будуть використовувати. На відміну від BGE, де при виборі одного ЛОД-об'єкта для багатьох він автоматично дублюється, при завантаженні в движку цього не відбувається. Для спрощення створення однотипних об'єктів рекомендується об'єднувати головний об'єкт і все його ЛОДи в одну групу, яку потім просто дуплицировать за допомогою EMPTY-об'єктів.

  3. Якщо передбачається, що об'єкт буде змінювати своє положення в просторі, то варто прив'язати до нього його ЛОДи батьківської зв'язком в блендері, щоб вони повторювали його трансформації.

Плавне зміна ЛОДов

Один з найбільш помітних недоліків системи ЛОДов - різка зміна рівнів деталізації, очевидний і іноді подразнюючий ефект.

У движку доступна можливість плавної зміни рівнів на основі альфа-тесту.

Поступова зміна оригінального об'єкта Лодом

Відповідна настройка знаходиться на Увійти Scene-> Object Clustering & LOD і називається LOD Smooth Transitions.

З її допомогою можна вказати движку використовувати чи плавну зміну, і якщо так, то для яких типів об'єктів. Варто зазначити, що її включення може відчутно знизити продуктивність програми в залежності від кількості налаштованих ЛОД-об'єктів і їх матеріалів.

Примітка

Плавне зміна ЛОДов не завжди бажана. Наприклад, при телепортірованія камери здалеку до цікавого об'єкту не хотілося б, щоб зміна рівня деталізації відбувалася прямо перед очима. Для цього існує настройка конфігурації движка lod_leap_smooth_threshold, яка вказує поріг відстані (в метрах), яке може пройти камера протягом одного кадру. Якщо він буде перевищений, то зміна ЛОДов відбудеться моментально. Таким чином можна прибрати плавну зміну ЛОДов при різкому русі / телепортації камери.

var m_cfg = require ( "config"); m_cfg. set ( "lod_leap_smooth_threshold", 5); // 5 meters

гістерезис

Зміна рівнів деталізації відбувається на певних дистанціях від об'єкта, іншими словами, межі між рівнями, які налаштовуються на панелі Levels of Detail. Якщо камера рухається безпосередньо поблизу такої межі, то може її часто перетинати, а значить і часто активувати зміну ЛОД-об'єктів. Така ситуація зробить процес перемикання рівнів деталізації дуже помітною, що небажано.

Для усунення цієї проблеми використовується настройка Max LOD Hysteresis Interval на Увійти Scene-> Object Clustering & LOD. Вона задає інтервал в метрах, який буде служити зазором при перемиканні від одного ЛОДА до іншого і назад.

Наприклад, під час налаштування Max LOD Hysteresis Interval рівною 4м. і кордон між рівнями деталізації 20 м. перемикання між ними в одну сторону буде відбуватися на відстані 18 м., а в іншу - на 22 м. Таким чином буде вирішена проблема частого перемикання між ЛОДамі, завдяки тому, що між ними не буде чіткої межі . Ця установка адаптивна і підлаштується під різну дистанцію ЛОД-об'єктів, зменшуючи встановлений інтервал, якщо буде потрібно.



Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью