- •© Вурста с.Ю.,Літнарович р.М.,2010
- •Вступ………………………………..………………………5
- •4.1.Високопродуктивний компілятор в машинний код………………………………..………………... 126
- •4.4 Бібліотека візуальних компонент…………..135
- •5. Опис графічних бібліотек для написання 3d – програм та ігор……………….……………………………………151
- •1. Історія появи фракталів та їх використання
- •2. Довжина берегової лінії. Фрактальна розмірність. Поняття фрактала.
- •2.1. Приклади побудови фрактальних множин. Класифікація фракталів.
- •2.2. Алгоритм фрактального шуму або шум перліна
- •2.3. Реалізація алгоритму
- •3. Історія розвитку комп’ютерної графіки та ігор
- •3.1. Основні поняття зd-графіки
- •3.2. Основні прийоми для роботи з світлом в 3d:
- •3.3 Алгоритми рельєфного текстурування
- •3.3.1 Рельєфне текстурування (bump mappіng)
- •3.3.5 Простий Relief Mapping
- •3.3.6 Багатошаровий Relief Mapping
- •3.4 Основні прийоми для роботи з текстурами в 3d:
- •3.5 Основні поняття про шейдер та види шейдерів
- •3.6. Генерація тривимірних ландшафтів
- •4.1 Високопродуктивний компілятор в машинний код
- •4.2. Могутня об'єктно-орієнтована мова
- •Об'єктно-орієнтована модель програмних компонент
- •4.4 Бібліотека візуальних компонент
- •4.5. Робота з компонентами
- •5. Опис графічних бібліотек для написання 3d – програм та ігор
- •5.1 Опис графічної бібліотеки OpenGl
- •5.2 Графічна бібліотека DirectX
- •5.3 Візуальні бібліотеки компонентів для OpenGl та DirectX.
- •5.4 Опис закладок glScene
- •6. Проектування системи
- •6.1 Вибір середовища реалізації
- •6.2 Опис використаних компонент glScene для реалізації системи
- •Опис інтерфейсу розробленої системи
- •6.3.1 Панель інструментів
- •6.3.2 Опис робочої області
- •6.3.3 Опис панелі налаштування 3d-сцени
- •Висновки
- •Список літератури:
- •Побудова фрактальних поверхонь в комп’ютерній графіці
- •33027 Рівне , Україна
3.2. Основні прийоми для роботи з світлом в 3d:
Карти освітлення (lіghtmap) [1] - це простий і дотепер що часто застосовується метод імітації висвітлення, що полягає в накладенні на основну текстуру ще однієї - карти освітленості, світлі і темні місця якої відповідно освітлюють чи затінюють зображення базової. Карти освітленості розраховуються заздалегідь, ще на етапі створення 3D-Світ, і зберігаються на диску. Цей метод добре підходить для великих, статичних освітлених поверхонь.
Освітлення (lіghtіng) - процес розрахунку кольору і ступені освітленості пікселя шкірного трикутника в залежності від розташованих поруч джерел світла з використанням одного з методів затінювання. Часто застосовуються наступні методи:-плоске затінення (flat shadіng). Трикутники мають однакову освітленість по всій поверхні;
-затінення Гуро (Gouraud shadіng). Інформація про рівень освітленості і кольорі, розрахована для окремих вершин трикутника, просто інтерполюється по поверхні всього трикутника;
-затінення Фонга (Phong shadіng). Висвітлення розраховується індивідуально для шкірного пікселя. Найбільш якісний метод.
3.3 Алгоритми рельєфного текстурування
3.3.1 Рельєфне текстурування (bump mappіng)
Ефект додання поверхні шорсткостей рельєфу [2] за допомогою додаткової текстури, називаною картою рельєфу (bump map). Геометрія поверхні при цьому не міняється, так що ефект добре розрізнимо тільки при наявності динамічних джерел світла. Першим методом створення рельєфності об'єкту став Bump Mapping, в просторіччі просто «бамп». Сенс технології в тому, що нерівності об'єкту задаються однією-єдиною картинкою (вона називається бамп-картою), що складається з градацій сірого кольору (від 0 до 255). Чим біліше піксель (ближче до коду 255), тим більше він «підведений» над поверхнею, темнішому пікселю (ближче до 0) відповідає більш «поглиблене» положення.
Д
ля
свого часу бамп був дуже хороший, але
вимоги до зображення невблаганно росли.
І ось вже технологія, яка враховує тільки
напрям світла і ступінь підведеної/поглибленої
пікселів, не може забезпечити потрібної
якості картинки. Та ще і «пластиковості»
як показано на Рис..11.,
властива бампу, давала про себе знати.
Частково тому, а частково і тому, що
карти Bump Mapping майже завжди доводиться
створювати уручну (якісного алгоритму
автоматизації даної роботи як не було,
так і немає), розробники все рідше
використовують його в своїх розробках.
3.3.2 Normal mapping
На зміну бампу [2] прийшло друге покоління алгоритмів рельєфного текстурування. Воно отримало назву Normal Mapping як показано на Рис.12 (іноді, досить рідко, його називають «нормалом» або «нормалями»). Головна відмінність Normal Mapping від бампа - вища точність обчислення, яка досягається за рахунок додавання в карту даних про орієнтацію нормалей (перпендикулярів) поверхні. Ще одна важлива особливість - Normal Mapping карти можна генерувати в автоматичному режимі, а не малювати довгими зимовими вечорами в Photoshop. Сенс нормала досить простий: на основі текстури високополігональної моделі будується так звана карта різниці, яка, будучи накладеною на низькополігональний об'єкт, робить його незвичайно важким на багатополігональній. Начебто полігонів мало, а картинка виглядає, немов в ній їх багато мільйонів. У карті нормалей колір кожного пікселя задає орієнтацію нормалі в даній точці поверхні. Просторовим координатам (X,Y,Z) відповідає трійка квітів (R,G,B).
З
начення
R, G, B варіюються в межах від 0 до 255, причому
127 відповідає нулю. Тобто блакитний
колір (127, 127, 255) описує просто гладку
поверхню, а вони на низькополігональній
і високополігональній моделі однакові.
Це пояснює, чому карти нормалей мають
в основному блакитний колір, а деталі
виділяються іншими кольорами. Звернете
увагу, в карті нормалей альфа-канал
зображення містить стандартну карту
Bump Mapping. У комп'ютерних іграх карти
нормалей зробили справжній переворот.
Ажіотаж став підніматися кілька років тому навколо гри Doom III, де використання normal mapping просто шокувала уява якістю картинки. Проте, раніше Doom вся своя «нормальна» краса показала гра Far Cry.
Технологія нормалей провела революцію в створенні комп'ютерних ігор, мабуть, більшу, ніж свого часу бамп. Тепер всі об'єкти не тільки виглядають об'ємними, але і виглядають реалістично, а не гламурно-пластиковими. Зараз складно знайти екшен або навіть стратегію, ядро якої не використав би карти нормалей. Це стандарт де-факто.
Наприклад, у відомому послідовнику Doom 3 - Quake 4 - для створення карт нормалей використовувалися високополігональні моделі персонажів, що складаються з більше 5 (!) мільйонів полігонів.
Проекти в найближчому майбутньому також використовуватимуть карти нормалей для своїх потреб. Наприклад, в Unreal Engine 3.0 якість персонажів буде здатна довести до нестями саме завдяки normal mapping.
Це був ворожий персонаж з прийдешнього хіта Gears of War. Ще одна гра на цьому ж движку, яка побачить світло наступного року - це Unreal Tournament 2007. І скріншот демонструє візуальну якість реального персонажа з цієї гри.
Напевно, не менш вражає використання карт нормалей і в такому очікуваному всіма Crysis. Втім, складність використовуваних в ній шейдерів явно не обмежиться normal mapping і зробить крок набагато далі. І хоча перевага Normal Mapping очевидно, приходить час, коли і він перестає влаштовувати девелоперів.
3.3.3 Parallax mapping
Головний недолік бампа [2] і нормалей в тому, що рельєфні деталі, що описуються відповідними картами, насправді плоскі. Вони не міняють своїх контурів, під яким би кутом гравець на них не подивився. Коли персонаж стоїть на місці, все здорово, картинка виглядає об'ємною, та варто йому небагато поворушитися, зміститися буквально на підлогу віртуальних метра убік, і ілюзія глибини розсівається - око людини ловить невідповідність освітлення і перспективи, що змінилася.
З приходом нових шейдерних моделей і покоління графічних прискорювачів, стало можливим ускладнити самі шейдери і поліпшити і графічне представлення рельєфних поверхонь. Одна з нових технологій називається Parallax Mapping (у Unreal Engine 3.0 він іменується Virtual Displacement Mapping). Її головне нововведення - вона примушує дрібні деталі виглядати по справжньому об'ємними.
Ще 2 року назад був розроблений графічний мод для Doom III, який замінював шейдер normal mapping на parallax mapping. Платою за додаткову реалістичність стали збільшені до Radeon 9500/GeForce FX вимоги до відеосистеми.
Але parallax mapping знайшов своє застосування не тільки у фанатськом творчості. Знаменитий шутер FEAR використовував parallax mapping для імітації кульових вибоїн в стінах, завдяки чому бої придбали вражаючий ступінь руйнівності, схожий з однією з фінальних перестрілок в «Матриці».
Також повсюдне і масове застосування даної технології обіцяється у всіх іграх на движку Unreal Engine 3.0, що майже напевно гарантує надзвичайну візуальну якість ігрового простору.
Паралакс імітує об'ємність за рахунок просторового спотворення рельєфу щодо камери (тобто головній осі погляду).
3.3.4 Relief mapping
Але навіть паралакс [2] не ідеальний, адже він об'єкт не змінює контура дрібних об'єктів, а тільки всього рельєфу цілком. Тому об'єкт з детальною поверхнею має досить грубі контури і відкидає не дуже реалістичну тінь.
Це видно в тому ж Doom 3.
Проблему зумів вирішити бразильський аспірант Технологічного університету Мануель Олівейр і його колеги (сайт: www.inf.ufrgs.br/~oliveira). Нову розробку назвали Relief Mapping або Per-Pixel Displacement Mapping, вона включає цілих три алгоритми візуалізації поверхні.
