Комп'ютерна графіка в реальному часі
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Riparian_river_view.jpg/220px-Riparian_river_view.jpg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/6d/CAVE_Crayoland.jpg/220px-CAVE_Crayoland.jpg)
Комп'ютерна графіка реального часу або рендеринг у реальному часі - підрозділ комп'ютерної графіки зосередженої на створені і аналізі зображень в реальному часі. Термін частіше всього вживається щодо тривимірної комп'ютерної графіки, як правило, з використанням графічного процесору, у відео іграх що мають найбільш помітних користувачів. Термін може стосуватися будь-чого - від рендерингу графічного інтерфейсу користувача (GUI) програми до аналізу зображень у реальному часі, але зазвичай використовується для позначення інтерактивної 3D-графіки. Найчастіше використовується для позначення комп'ютерної графіки. Прикладом цього поняття є відеоігри, які швидко відтворюють мінливе 3D-середовище та створюють ілюзію руху.
Ця стаття належить до виконання рендеринга-обчислень досить швидко, тому ряд візуалізованих зображень викликають ілюзію руху в людському мозку користувача. Ця ілюзія дозволяє взаємодіяти з програним забезпеченням, що робить розрахунки. Одиниця, яка використовується для вимірювання частоти кадрів в секунду (FPS). Розглянуто різні методи візуалізації існують, наприклад: трасування променів і растрування.
З моменту свого винаходу комп'ютери змогли генерувати 2D-зображення, такі як прості лінії, зображення та полігони, в режимі реального часу. Однак традиційні системи, засновані на архітектурі фон Неймана, мали труднощі з відтворенням детальних 3D-об'єктів на високій швидкості. Першим обхідним шляхом стало використання спрайтів - 2D-зображень, які можуть імітувати тривимірну графіку.
Сьогодні існують різні техніки рендерингу, такі як трасування променів та растеризація. Використовуючи ці методи та сучасне обладнання, комп'ютери тепер можуть рендерити зображення досить швидко, щоб створювати ілюзію руху, приймаючи при цьому вхідні дані від користувача. Це означає, що користувачі можуть реагувати на зображення в реальному часі, створюючи інтерактивний досвід.
Хоча від початку, комп'ютери відомі здатністю до генерації двовимірних зображень, включаючи прості лінії малюнки і полігони в реальному часі (наприклад Алгоритм Брезенхейма для побудови прямої), створення тривимірної комп'ютерної графіки і швидкість необхідна для створення, хороша якість тривимірного зображення на дисплеї завжди було непростим завданням для традиційної архітектури на основі систем фон Неймана. Далі ця стаття зконцетрована на загальноприйнятих аспектах комп'ютерної графіки реального часу.
Основна стаття: 3D комп'ютерна графіка
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Visions_big.jpg/220px-Visions_big.jpg)
Метою комп'ютерної графіки є створення комп'ютерних зображень, або кадрів, з використанням певних бажаних метрик. Однією з таких метрик є кількість кадрів, створених за секунду. Системи комп'ютерної графіки в реальному часі відрізняються від звичайних систем рендерингу (тобто не в реальному часі), тоді як графіка в нереальному часі зазвичай покладається на трасування променів. У цьому процесі мільйони або мільярди променів простежуються від камери до навколишнього світу для детальної візуалізації.
Графічні системи реального часу повинні рендерити кожне зображення менш ніж за 1/30 секунди. Оскільки трасування променів є надто повільним для таких систем, використовується техніка растеризації трикутників з використанням z-буфера. У цій техніці кожен об'єкт розкладається на окремі примітиви (зазвичай трикутники). Кожен трикутник позиціонується, обертається і масштабується на екрані, а апаратне забезпечення растеризатора (або програмний емулятор) генерує пікселі всередині кожного трикутника. Потім ці трикутники розбиваються на атомарні одиниці, так звані фрагменти[en], придатні для відображення на екрані дисплея. Фрагменти наносяться на екран за допомогою кольорів, які розраховуються в кілька етапів. Наприклад, текстура може бути використана для "малювання" трикутника на основі збереженого зображення, а мапування тіней може змінити колір трикутника відповідно до лінії зору на джерело світла.
Дивіться також: Рівень деталізації (комп'ютерна графіка)
Графіка в реальному часі оптимізує якість зображення відповідно до часових і апаратних обмежень. Графічні процесори та інші досягнення покращують якість графіки в реальному часі: графічні процесори можуть обробляти мільйони трикутників за кадр, а новітнє апаратне забезпечення DirectX 11/OpenGL 4 .x можуть генерувати складні ефекти, такі як об'єми тіней[en], розмиття руху та генерацію трикутників у реальному часі. Розвиток графіки в реальному часі проявляється в поступовому покращенні якості між реальною графікою ігрового процесу та попередньо відрендереними сценами, які традиційно зустрічаються у відеоіграх . Сцени зазвичай рендериться у реальному часі і можуть бути інтерактивними. Хоча розрив у якості між графікою у реальному часі та традиційною офлайн-графікою скорочується, офлайн-рендеринг залишається набагато точнішим.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/FaceRig_with_full_body.png/282px-FaceRig_with_full_body.png)
Ще одна цікава відмінність між графікою реального часу і не графікою реального часу є інтерактивність. Зворотній зв'язок, як правило, є основною мотивацією для покращення графіки реального часу. У подібних випадках як з фільмами, режисер має повний контроль і детермінізм, над тим що повинно бути відображеним на кожному кадрі.
У разі інтерактивної комп'ютерної графіки реального часу, як правило, користувач контролює те, що має бути намальованим на екрані дисплея; користувач зазвичай використовує пристрій введення для забезпечення зворотного зв'язку з системою, наприклад, бажаючи перемістити символ на екрані і система визначає наступний кадр, заснований на цій конкретній дії. Зазвичай дисплей набагато повільніше (з точки зору кількості кадрів в секунду) в чуйності, ніж пристрій введення (з точки зору часу відгуку). У певному сенсі це виправдано через величезну різницю між нескінченно малим часом відгуку, що генерується за рахунок людини і дуже повільною швидкістю перспективної людино-візуальної системи; це призводить до значних досягнень в комп'ютерній графіці, в той час як досягнення в області пристроїв введення зазвичай займає набагато більше часу, щоб досягти того ж стану фундаментального прогресу (наприклад, поточний Wii Remote), так як ці пристрої введення повинні бути дуже швидкими, щоб бути у використанні.
Ще один важливий фактор, який контролює комп'ютерну графіку реального часу є поєднання фізики[en] і анімації. Ці методи багато в чому визначають те, що повинно бути відображено на екрані, або, точніше, де створити певні об'єкти (Ухвалення рішення їх позиції) на екрані. Ці методи імітують поведінку (часовий вимір, а не просторові розміри) видиму в реальному світі.
Конвеєр рендерингу графіки ("rendering pipeline" або просто "конвеєр") є основою графіки в реальному часі. Його основна функція - рендеринг 2D-зображень відносно віртуальних камер, 3D-об'єктів (об'єктів, що мають ширину, довжину і глибину), джерел світла, моделей освітлення і текстур.
Архітектуру конвеєра рендерингу в реальному часі можна розділити на концептуальні етапи: застосування, геометрія та растеризація.
Етап застосування відповідає за створення "сцени", тобто 3D-середовища, яке з'являється на 2D-дисплеї. Цей етап реалізується розробником у програмному забезпеченні, яке оптимізує продуктивність. Окрім обробки користувацького вводу, цей етап може також обробляти виявлення зіткнень, технологію прискорення, анімацію та зворотний зв'язок за силою.
Виявлення колізій є прикладом операції, що виконується на етапі застосування. Виявлення зіткнень використовує алгоритми для виявлення та реагування на зіткнення між (віртуальними) об'єктами. Наприклад, програма може обчислити нові позиції об'єктів, що зіткнулися, і надати зворотний зв'язок через пристрій зворотного зв'язку, наприклад, вібраційний ігровий контролер.
Етап застосування також готує графічні дані для наступного етапу. Сюди входить анімація текстур, анімація 3D-моделей, анімація за допомогою трансформацій і морфінг геометрії. Нарешті, на основі інформації про сцену створюються примітиви (точки, лінії та трикутники), які надсилаються на етап геометрії конвеєра.
Основна стаття: Полігональне моделювання
Етап геометрії маніпулює багатокутниками та вершинами, щоб обчислити, що малювати, як малювати і де малювати. Ці операції зазвичай виконуються спеціалізованим апаратним забезпеченням або графічними процесорами. Різноманітність графічного обладнання означає, що "геометричний етап" насправді може бути реалізований як кілька послідовних етапів.
Перш ніж фінальна модель буде виведена на пристрій виводу, вона трансформується в декілька просторів і систем координат. Трансформації відбуваються шляхом переміщення об'єктів і зміни їхніх вершин. Трансформація - це збірний термін для чотирьох конкретних способів маніпулювання формою і положенням точки, лінії або фігури.
Щоб зробити модель більш реалістичною, під час трансформації зазвичай розміщують одне або кілька джерел світла. Однак цей крок можна виконати, лише якщо 3D-сцену попередньо перетворено у видовий екран. У вікні перегляду спостерігач (камера) зазвичай розміщується на початку координат. Якщо використовується права система координат (вважається стандартною), спостерігач дивиться в напрямку від'ємної осі z з віссю y, спрямованою вгору, і віссю x, спрямованою праворуч.
Основна стаття: Графічна проекція
Проекція - це перетворення, яке використовується для представлення 3D-моделі у 2D-просторі. Два основних типи проекції - ортогональна проекція (також відома як паралельна проекція) і перспективна проекція. Основною характеристикою ортогонального проектування є те, що паралельні лінії залишаються паралельними після перетворення. Перспективна проекція використовує концепцію, згідно з якою зі збільшенням відстані між спостерігачем і моделлю, модель здається меншою, ніж раніше. По суті, перспективна проекція імітує людський зір.
Відсікання (комп'ютерна графіка) - це процес видалення примітивів за межі області перегляду для полегшення етапу растрування. Після того, як ці примітиви видалено, решта примітивів втягуються в нові трикутники і відбувається наступний етап.
Мета відображення растра - знайти координати примітивів на етапі відсікання.
На етапі растрування застосовуються кольори та перетворюються графічні елементи в пікселі або елементи зображення.
- Доповнена реальність
- Демосцена
- Захоплення руху
- Комп'ютерна 2D-графіка
- Комп'ютерна 3D-графіка
- Графічний процесор
- Quartz Composer
- Спрайт (комп'ютерна графіка)
- Відео зворотного зв'язку [en]
- Змішана реальність
- Відео-арт
- Відеоігрова графіка
- Відеоконтролер
- Полігон
- Real-Time Rendering resources page [Архівовано 19 Квітня 2021 у Wayback Machine.] – links to many useful resources for 3D computer graphics
- RTR Portal [Архівовано 3 Листопада 2017 у Wayback Machine.] – a trimmed-down "best of" set of links to resources
- Max User Videos [Архівовано 14 Липня 2013 у Wayback Machine.] – Max/MSP/Jitter can be used to create interactive installations and real-time computer graphics
- Unity [Архівовано 14 Березня 2017 у Wayback Machine.]