Налаштування джерел освітлення

Майданний (Area light)

Сферичний (Sphere light)

Джерела світла у вигляді довільних мешів задаються через властивості матеріалу emissive.

Чому світло від джерел загасає?

Для всіх джерел світла, що мають реальну світову позицію (точковий, прожеторний, майданний, сферичний, довільний меш) можна задавати параметри загасання світла з відстанню. Концепція загасання світла для цих джерел дуже важлива і має безпосередньо відношення до фізичної коректності джерела. І це не має ніякого відношення до загасання світла в непрозорій середовищі (такий як туман наприклад). Для дотримання фізичної коректності джерел світла (за винятком spot light, про який ми будемо говорити окремо), інтенсивність світла від джерела повинна спадати квадратично з відстанню до джерела. Цей закон випливає з міркування, що кількість енегріі падаюче в точку від джерела буде пропорційно його кутовому розміру по відношенню до цієї точки, що в свою чергу обернено пропорційно квадрату відстані від джерела до цієї ж точки. Однак, при обчислення вторинного освітлення (дифузно або дзеркально перевідбиттів світло) таке загасання не враховується, чому?

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

Ось формула використовувана в рендер для обліку загасання від джерела світла.

Налаштування джерел освітлення

Малюнок 1. Формула, яка враховує загасання світла.

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

трансформації

Для джерел існує один неочевидний момент, який необхідно розглянути - це трансформації і положення джерела в світовому просторі. Джерела світла імпортуються як з COLLAD-и, так і з плагіна HydraRender для 3DS max. Якщо ви працюєте з плагіном, то:

1. Всі трансформації повинні передаватися коректно, але:

2. Ви можете проте використовувати COLLADA profile і вказати інші трансформації якщо щось не так. У цьому випадку позиція джерела (а також розмір і орієнтація якщо вони є) будуть визначатися виключно заданими в COLLADA profile трансформаціями. Далі, щодо трансформацій:

1. Вони пріміеняется в порядку, зворотному тому, в якому вони записані (як в OpenGL якщо ви з ним знайомі). У наведеному нижче прикладі Спочатку пріменяетс rotate а потім translate. Це відповідає стандарту COLLADA. Тобто якщо ви спочатку записуєте перетворення translate а потім rotate, то фінальне перетворення буде відповідати матриці перетворення MTransform = translate * rotate; що в свою чергу сооветствует застосування rotate а потім translate (тому що згідно з більш поширеній стандарту ми множимо матриці на точки, а не точки на матриці).

2. У параметрі rotate перші 3 числа - вектор, щодо якого буде проводиться поворот. Четверное число - кут в градумах, на який потрібно повернути об'єкт.

Тепер, якщо ви імпортуєте сцену через COLLADA то там трансформації будуть записані в розділі "library_visual_scenes" .І тут прописувати безпосередньо в тезі light перетворення не можна - все перетворення, записані у джерела будуть ігноруватися. Якщо ви хочете поміняти положення джерела, його слід міняти в розділі library_visual_scenes файлу в форматі COLLADA, або описати це джерело в окремому COLLADA профілі. В останньому випадку будуть використовуватися трансформації зазначені там.

Тотчечний джерело світла

Це найпростіший тип джерел. Ось приклад його опису.

0.0 45.354244 -20.0


Point


1 1 + 1
15

1.0
0.0
0.5

Налаштування джерел освітлення

Малюнок 2. Точкове джерело.

Направлене джерело світла

У спрямованого джерела світла 2 важливих відмінності. По-перше, направлене джерело світла зазвичай не має загасання. Незважаючи на це, ви можете вказати коефіцієнти загасання в відповідних тегах, проте це зробить ваш джерело фізично неправильним. Друга важлива особливість спрямованого джерела - власне його напрямок. Воно задається 3 різними способами.

1 - безпосередньо тегом "direction".

2 - поставити перетворення повороту. За замовчуванням (якщо тег direction) відсутній напрямок джерела завжди (0, -1, 0). Перетворення повороту можна застосовувати навіть якщо тег direction є.

3 - задати якусь точку в тезі "look_at". В цьому випадку іточнік буде дивитися на цю точку.

Всі 3 пункту щодо завдання напряму вірні також і для майданних джерел.



  • Directional

    4 2.99 6

    1 1 + 1
    5



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

    Налаштування джерел освітлення

    Малюнок 3. Точковий і спрямований джерела.

    прожекторний джерело

    Даний тип джерело імітує точковий прожектор.

  • -56.844547 58.973194 -79.832260
    0 0 0


    spot

    10.099983
    46.099983

    1.0f
    2.0f


    0.678431 0.678431 1.000000
    4.0

    1.0
    0.1
    0.001

    Налаштування джерел освітлення

    Малюнок 4. Прожекторний джерело.

    Іточнік світла, що імітує розсіяне денне освітлення. Параметри загасання для нього так само не мають сенсу.


  • Sky


    0.678431 0.678431 1.000000
    2.5

    Налаштування джерел освітлення

    Малюнок 5. Skylight створює ефект "Ambient occlusion".

    Area Light

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

    0.0 50.354244 -20.0
    1.0 0.0 0.0 45.0


    Plane


    1 1 + 1
    20


    16.236
    15.129

    1.0
    0.0
    0.3

    Налаштування джерел освітлення

    Малюнок 6. Area Light. falloff_power = 1 (дефолтний значення).

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

    Налаштування джерел освітлення

    Малюнок 7. Area Light. falloff_power = 2.

    Налаштування джерел освітлення

    Малюнок 8. Area Light. falloff_power = 4.

    Spherical light

    0.0 45.354244 -20.0


    Sphere


    1 1 + 1
    15


    5.0

    1.0
    0.0
    0.5

    Налаштування джерел освітлення

    Малюнок 9. Spherical Light.

    Для джерел світла, що мають певний розмір - Area light і spherical light. Існують ще 2 додаткових параметра - прапорця. Їх значення повинні бути рівні 0 або 1.

    0
    1

    1. Параметр add_as_geometry за замовчуванням дорівнює 1. Він каже, чи потрібно додавати джерело в сцену як геометричний об'єкт. Якщо встановити цей параметр в 0, джерело світла буде невидимим.

    2. Параметр fast_shading прискорює шейдинг за рахунок того, що вважає затінення від точки, що знаходиться в геометричному центрі джерела. При цьому тінь вважається правильно. У деяких випадках, особливо для сферичних джерел світла, цей параметр може прискорити рендеринг, однак результат буде не зовсім коректним. У загальному випадку не рекомендується змінювати значення цього параметра (за замовчуванням = 0).