Статьи

3D графіка: Світло і сцена. Особливості моделювання світла

  1. зміст Фізична модель світла
  2. одиничний фотон
  3. об'єкти
  4. сукупність фотонів
  5. Яку інформацію може отримати мозок?
  6. Вам пробачили ...
  7. світло
  8. Закон зворотної пропорційності квадрату відстані
  9. закон косинуса
  10. А що ж далі?
  11. Ще далі…
  12. колір
  13. Використання світла на практиці
  14. [Продовження теми: експозиція ]

зміст

Фізична модель світла

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

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

одиничний фотон

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

об'єкти

При зіткненні фотона з зовнішніми об'єктами може статися:

  • відображення (reflection) - фотон відскакує від поверхні
  • поглинання (absorption) - фотон поглинається і віддає свою енергію об'єкту
  • переломлення (refraction) - фотон проходить крізь об'єкт і змінює напрямок руху в залежності від властивостей об'єкта і оточення
  • відхилення (diffraction) - фотон може відхилитися і змінити напрямок в разі, коли він проходить на дуже близькій відстані від поверхні об'єкту.

сукупність фотонів

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

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

Через досвід наш мозок вчиться визначати і розпізнавати безліч образів і відбитків, які створює світло про навколишньої дійсності. Немовля бере предмет, дивиться на нього мить, потім тягне в рот. Його мова - це прекрасний датчик, і може визначати форму і вид поверхні предмета практично так само, як і очей, а іноді і краще. Дитина вчиться асоціювати те, що він бачить з тією формою, яку йому описав мову. Згодом дитина дізнається, що один і той же предмет може виглядати по-різному в залежності від того, як його тримати, хоча він як і раніше є тим же самим предметом. Це очевидно - подумаєте ви, але було виявлено, що сліпим від народження людям, яким медицина повернула зір, зрозуміти вищевикладене дуже складно. Їм також складно засвоїти сенс тіні і відображення, суть яких зрячі люди пізнали ще від народження. І сам факт того, що ви можете бачити, ще не означає, що ви можете зрозуміти те, що бачите.

В цьому і полягає різниця між Даними (Data) і Інформацією (Information). Дані - це світловий образ, що формується на сітківці ока. Інформація - це інтерпретація цього образу нашим мозком.

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

Різноманітність моделей освітлення, які застосовуються в процесі формування зображень комп'ютером, - це спроба збільшити кількість інформації, яку мозок зможе витягти. Коли ви, як програміст, будете писати фрагменти коду, що відповідає за графіком, вам не слід думати: "Я пишу процедуру затінення по Фонгу", замість цього вам слід міркувати так: "Я використовую візуальний трюк для коректної інтерпретації мозком".

Яку інформацію може отримати мозок?

Людський мозок може витягти і інтерпретувати 4 інформаційних ресурсу з потоку видимих ​​даних.

форма

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

відтінки

Відблиски і тіні. Тон і структура поверхонь.

колір

Три кольори можуть бути виявлені людським оком - червоний, зелений і синій.

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

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

Здатність до сприйняття приймається людиною як само собою зрозуміле. Прийнято вважати, якщо ви можете бачити, то, значить, ви в змозі визначити форму, відтінки, колір і рух. Але це не завжди так.

Вам пробачили ...

Не менш важливою є інформація, яку мозок додає або видаляє під час аналізу. Коли ми споглядаємо, ми маємо справу з гігантськими обсягами інформації. Було б просто неможливим проаналізувати і запам'ятати всі відомості до найдрібніших деталей. Та це й не потрібно. Велика частина відомостей (даних), що надходять нам через зір, не володіють будь-якої цінністю. Мозок автоматично виробляє фільтрацію цього "сміття", дозволяючи нам сконцентруватися на більш значущої інформації. Що ще більш важливо, мозок також додає відсутню інформацію. Людський зір має "мертві зони", але, тим не менш, ми цього не помічаємо, тому що прогалини будуть завжди заповнені відповідною інформацією. Наш мозок багато прощає.

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

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

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

світло

властивості світла

У цій частині ми обговоримо деякі з основних принципів, які ви можете застосувати при програмуванні виведення графіки на екран.

Закон зворотної пропорційності квадрату відстані

Як визначити яскравість світла?

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

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

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

Зрозуміло, якщо розмір фрагмента зростає, а кількість фотонів залишається незмінним, то щільність фотонів в ньому зменшується.

Площа поверхні сфери прямо пропорційна квадрату її радіуса. Таким чином, яскравість маленького фрагмента буде обернено пропорційна квадрату відстані від джерела світла.

де:

  • Brightness - величина, що визначає яскравість (інтенсивність) світла в точці віддаленої від джерела світла на відстані r;
  • k - деяка константа, яка визначає яскравість (інтенсивність) самого джерела світла.

Це і є закон зворотної пропорційності квадрату відстані. Цей закон застосуємо до всіх джерел світла, крім лазерів.

закон косинуса

Яка освітленість поверхні?

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

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

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

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

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

Illumination = cos (a) * brightness;

де:

  • illumination - освітленість поверхні;
  • a - кут між нормаллю до поверхні і напрямком світла;
  • brightness - яскравість (інтенсивність) світла.

А що ж далі?

А ось тепер припустимо, що у світла є вибір. Він може бути поглинений поверхнею, відображений або пропущений крізь неї.

поглинання

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

відображення

Велика частина світла "відскочить" від поверхні. Напрямок відбитого світла в деякій мірі залежить від самої поверхні.

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

Якщо поверхня шорстка (абсолютно розсіює), то відбите світло буде поширюватися в багатьох напрямках. Тут ні в якому разі не затверджується, що в природі існують абсолютно розсіюють поверхні. Грубо оброблене дерево чудово розсіює світло, як і матова фарба, але обидва матеріали все ж мають певний (ненульовий) блёск (shininess). Найбільш яскраве відображення від цих поверхонь буде помітно під різними кутами зору.

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

переломлення

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

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

Ще далі…

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

колір

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

світловий спектр

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

Триколірна модель (RGB Model)

Людське око в стані реєструвати три основних колірних смуги в діапазоні хвиль понад 400 нм (нанометрів) до 680 нм. Ми звикли ототожнювати їх з назвами наступних кольорів: червоний (R), зелений (G) і синій (B). (Забудьте, якщо ви чули від художників, що існує три основних кольори, - червоний, жовтий, синій. Такий підхід актуальний тільки для барвників). Причина в наявності тільки трьох основних кольорів криється не тільки в "підступи" фізиків, але і в хімічному складі органічної матерії сітківки ока, здатному реагувати тільки на певні довжини хвиль, що відповідають цим квітам. Все не основні кольори, такі, як жовтий або рожевий - це просто комбінації основних кольорів.

Саме ці кольори використовуються в телебаченні і виведення зображень на екран монітора. Ці три кольори дають можливість відтворити більшість квітів, які ви можете бачити. Ще раз повторимося - більшість, але не всі. Кольори, вироблені монітором, не є абсолютно чистими, тому і всі вироблені ними відтінки не можуть бути відтворені з точністю.
Саме ці кольори використовуються в телебаченні і виведення зображень на екран монітора

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

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

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

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

Ця модель також іноді відома як HSL, де L - luminance, слово інше, а суть та ж.

Hue: Колір, відтінок кольору

Saturation: Колірна насиченість. Еквівалент соотв.органу управління на багатьох телевізорах і моніторах.

Value: Інтенсивність. Нуль - значить чорний, більш високі значення характеризують більш яскраві значення.

(Хочу звернути увагу, щоб читач не плутав колірні моделі світу, описані в статті, з моделями передачі кольору, такими, як CMYK, наприклад. Моделі кольору застосовні в основному для змішування барвників і сфера їх застосування - кольоровий друк і поліграфія.)

Використання світла на практиці

Ну що ж, тепер, після того, як основи світла нам відомі, ми готові йти далі.

Допущення і спрощення

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

Точкові джерела світла

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

багаторазові відбиття

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

тіні

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

Статичні (нерухомі) тіні

Сцени з нерухомими джерелами світла і об'єктами мають статичні тіні. Є можливість заздалегідь прорахувати всі тіні в сцені. А потім використовувати цю інформацію для швидкої промальовування цих тіней на екрані. Хорошим прикладом подібного підходу є ігри типу Quake. Рівень заздалегідь обраховувався утилітами прорахунку освітлення, і в реальному часі движок гри вже не витрачав дорогоцінний процесорний час на їх створення. Всі тіні зберігалися у вигляді "карти тіней" в самому файлі рівня і в процесі гри комбінувалися з відповідними текстурами.

[Продовження теми: експозиція ]


Матеріал для даної статті люб'язно надав Hugo Elias


Легко?
Яку інформацію може отримати мозок?
А що ж далі?

Новости


 PHILIP LAURENCE   Pioneer   Антистресс   Аромалампы   Бизнес   Игры   Косметика   Оружие   Панно   Романтика   Спорт   Фен-Шуй   Фен-Шуй Аромалампы   Часы   ЭКСТРИМ   ЭМОЦИИ   Экскурсии   визитницы   подарки для деловых людей   фотоальбомы  
— сайт сделан на студии « Kontora #2 »
E-mail: [email protected]



  • Карта сайта