Метод зворотного трасування променів

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

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

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

Луч перетинається з одним з об'єктів сцени. У цьому випадку колір конкретного пікселя визначається кольором об'єкта в точці перетину з променем.

Луч потрапляє в джерело світла. В такому випадку колір пікселя повністю визначається кольором джерела світла.

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

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

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

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

Для моделювання поширення світла на комп'ютері і для спрощення розрахунків введемо деякі обмеження на використовувану сцену:

Всі джерела світла вважатимемо точковими.

Залежність величини поглинання світлового потоку від довжини хвилі (кольору) будемо ігнорувати. Будемо також ігнорувати залежність коефіцієнта заломлення від довжини хвилі.

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

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

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

де:
Ka - коефіцієнт фонової освітленості;
Ia - значення фонової освітленості;
Kd - коефіцієнт дифузійної освітленості (внесок, внесений дифузним відображенням);
C - колір об'єкта в конкретній точці;
Ij - колір j-го джерела світла;
n - нормаль до поверхні об'єкта в конкретній точці;
lj - напрямок на j-й джерело світла;
m - кількість джерел світла в сцені;
Kr - вага відбитого променя;
Ir - колір відбитого променя (освітленість, принесена відбитим променем);
br - коефіцієнт поглинання для середовища, в якій поширюється відбитий промінь;
dr - відстань від конкретної точки об'єкта до точки перетину відбитого променя з об'єктом сцени;
Ks - коефіцієнт первинної освітленості;
p - коефіцієнт Фонга;
Kt - вага переломлених променя;
It - колір переломлених променя (освітленість, принесена переломлених променем);
bt - коефіцієнт поглинання для середовища, в якій поширюється переломлених промінь;
dt - відстань від конкретної точки об'єкта до точки перетину переломлених променя з об'єктом сцени.

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

Так як алгоритм зворотного трасування променів є рекурсивним, необхідні деякі критерії для зупинки, при якій припиняється подальша трасування відбитих і переломлених променів. Такими критеріями, як правило, є максимальна кількість проведених відбитих і / або переломлених променів, а також внесок, внесений відбитим і / або переломлених променем. Іншими словами, якщо кількість побудованих відбитих (переломлених) променів більше некоторго заданого значення, то трасування припиняється. Або, якщо вклад, внесений відбитим (переломлених) променем стає менше деякого заданого значення, то трасування також припиняється.

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