З книги Джефа Проузіса
Методи зафарбовування, які обговорювалися в попередньому розділі, дозволили значно збільшити реалістичність зображень, що генеруються комп'ютером, але все ж їм далеко до досягнення фотореалізму. Реальні об'єкти відкидають тіні, коли висвітлюються яскравим світлом, і багато об'єктів відображають потрапляє на них світло. Відбитий промінь, в свою чергу, може висвітлювати інші об'єкти або інші поверхні того ж об'єкта. А деякі тіла цілком або повністю пропускають частину падаючого світла, який може знову висвітлювати інші об'єкти. Вчені використовують такі терміни для опису цих процесів: відкидання тіней, відображення і проходження. Програма екранізації повинна брати до уваги ці явища, якщо треба отримати фотореалістичні зображення.
Взаємодія між цими явищами дуже складно. Окрема поверхню сцени може висвітлюватися декількома різними джерелами. На щастя, існують методи, які дозволяють комп'ютеру враховувати всі ці форми освітлення. Кращий з них - метод трасування променів, який спочатку був придуманий як засіб для видалення невидимих поверхонь, а пізніше розширено так, щоб враховувалися ефекти відкидання тіней, відображення і пропускання світла. Метод трасування променів - не останнє досягнення в поданні фотореалістичних зображень (він теж має свої недоліки і часто комбінується з іншими методами, щоб отримати ще більш досконалі тривимірні зображення), але він досить близький до того, щоб створювати чудові картинки, які за якістю близькі до фотографії. Найбільша проблема з цим методом то, що він дуже повільний. Навіть суперкомп'ютера можуть знадобитися години роботи для екранізації складної сцени з початку до кінця. Та ж операція може зажадати днів роботи звичайного персонального комп'ютера.
Метод трасування променів математично складний, але простий концептуально. Що реально робить комп'ютер, так це відстежує промені світла, що йдуть від джерела в око. Коли випускаються промені як би з ока до джерела замість того, щоб йти від джерел до ока, то це називається зворотної трасуванням (на відміну від першої - прямий). Зворотній трасування більш ефективна, так як гарантує, що число променів, які досягли очі, буде точно таким же, як число пікселів зображення. Для того, щоб уявити цей процес, вважайте, що ваш екран монітора - це вікно, через яке ви можете бачити тривимірну модель, намальовану вашим комп'ютером. Уявні лінії, звані променями, проводяться з вашого очі через кожен піксель екрану і проектуються на модель. Кожен раз, коли промінь перетинає деяку поверхню в деякій точці, з цієї точки випускаються додаткові промені. Якщо поверхня відбиває, то генерується відбитий промінь. Якщо поверхня пропускає світло, то генерується пропущений промінь, причому враховується той факт, що промінь змінює напрямок, коли проходить з одного середовища в іншу. Це явище називається заломленням світла. Деякі поверхні одночасно і відображають, і пропускають промені, і тоді випускаються обидва види променів. Шляхи цих променів відслідковуються по всій моделі, і якщо промені перетинають інші поверхні, то знову випускаються промені. У кожній точці, де промінь перетинає поверхню, малюється промінь тіні з точки перетину до кожного джерела світла. Якщо цей промінь перетинає іншу поверхню перед тим, як досягти джерела світла, то на ту поверхню, з якої був посланий промінь, падає тінь з поверхні, яка блокує світло. Математично, всі ці промені разом з даними про фізичні характеристики об'єктів моделі (колір, прозорість, дзеркальність і т.д.) дозволяють комп'ютеру визначити колір і його інтенсивність для кожної точки зображення.
Один з недоліків звичайного методу трасування променів в тому, що розглянуті поверхні не мають текстури як реальні об'єкти. Вони гладкі - іноді занадто гладкі. Для того, щоб це компенсувати, програми трасування променів використовують текстурні відображення або bump-mapping для того, щоб надати шорсткість поверхонь моделі. За допомогою текстурного відображення отримують зображення, де поверхня набуває текстуру - дерева або мармуру, наприклад. Ці методи отримують користь із того факту, що трасування, як і інші методи зафарбовування, використовує в своїх обчисленнях нормаль. Bump-відображення обурює поверхню об'єкта за певним зразком, перетворюючи гладеньку поверхню так, що вона виглядає шорсткою і неоднорідною.
Для того, щоб допомогти вам уявити, як працює метод трасування променів, на наступній картинці простежуються шлях окремого променя з ока спостерігача через точку на екрані і шляхи променів, які він породжує.
Як працює метод трасування променів
1. При зворотного трасуванні всіх променів світла, які впливають на даний піксель на екрані, комп'ютер випускає уявний промінь з ока спостерігача через цей піксель і відстежує його, поки він не перетне об'єкт.
2. З першої точки перетину променя зі сферою випускається відбитий промінь. Поверхня непрозора, тому заломлені промені не малюємо. Луч тіні позначає шлях від точки перетину до джерела світла. Так як цей промінь не перетинає іншу непрозору поверхню, то джерело світла безпосередньо впливає на інтенсивність освітлення в даній точці.
3. Відбитий промінь перетинає інший об'єкт, на цей раз напівпрозору сферу, яка відображає і пропускає світло. Випускаються відбитий і заломлений промені разом з тіньовим променем, що йде до джерела світла. Зауважте, як пропущений промінь змінює свій напрямок до і після входження в сферу, відповідно до ефектом заломлення.
4. Цього разу точка, в якій промінь перетинає сферу, що не буде прямо освітлена джерелом, тому що шлях тіньового променя перегороджує непрозора поверхню. Якби сцена містила кілька джерел світла, то тіньові промені повинні були б бути пущені в кожен з них.
5. Вплив всіх променів, згенерованих явно або неявно за допомогою початкового променя, підсумовується і результат визначає RGB-значення даної точки.
6. Ця сцена, отримана методом трасування променів, створювалася 30 хвилин на комп'ютері 50 MHz -486 DX за допомогою відомої програми Полірей. Сфера зліва на передньому плані має дзеркальну поверхню. Сфера в центрі має гладку непрозору поверхню, а сфера справа - повністю скляна. Зверніть увагу на кілька отриманих відображень, заломлення зображення золотої сфери в скляній і на тіні, отримані від двох джерел світла. Зауважимо також, що ми отримали зображення в перспективній проекції і з віддаленими невидимими поверхнями. Це природні результати процесу трасування і ці проблеми не вимагають спеціального розгляду.