НОУ ІНТУІТ, Лекція, Тривимірна графіка

Мета лекції: Освоїти теоретичну базу, необхідну для розуміння функціонування механізмів візуалізації тривимірної графіки у XNA

22.1. Система координат

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

Для роботи з тривимірними об'єктами нам знадобиться ще одна вісь – вона називається вісь Z. Існує кілька варіантів тривимірних систем координат, зокрема, поширені так звані правостороння та лівостороння системи. Ми будемо користуватися правосторонньою системою – вона застосовується у XNA Framework. Її схематичне зображення наведено на рис. 22.1.

графіка

Особливість цієї системи координат полягає в тому, що початок координат можна порівняти з лівим нижнім кутом монітора, позитивна частина осі X знаходиться праворуч від початку координат, позитивна частина осі Y зверху, а позитивна частина осі Z попереду. І це отже, що видима частина осі Z – це її негативна частина. Ця частина осі знаходиться як би "в глибині монітора", в той час, як позитивна частина знаходиться "спереду монітора". На рис. 22.1 пунктиром зображено негативну частину осі Z.

У двовимірній системі координат існує поняття точки – її координати задаються двома значеннями – X та Y. Точки існують і у тривимірній системі координат – вони задаються вже трьома значеннями – X, Y, Z.

Крапки використовують для того,щоб задавати координати вершин багатокутників (полігонів), зокрема – трикутників. Так, трикутник, зображений на рис. 22.1, заданий трьома точками – A, B, C.

Як правило, складніші тривимірні об'єкти будуються саме з трикутників.

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

Чим більше трикутників використано при побудові моделі – тим більш деталізованою вона виходить. Крапки, що відповідають вершинам трикутника, який можна зобразити у тривимірному просторі, називаються вершинами. Працюючи з тривимірною графікою в XNA, вам часто доведеться зустрічати англійський варіант слова вершина – vertex. Можливо, вам зустрінеться множина слова вершина: "вершини" виглядає по-англійськи як "vertices". Іноді для позначення вершин використовують кальку з англійської – вертекс.

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

Кілька граней, у тому числі складається тривимірний об'єкт , називаються мережею (mesh). Мережа є набір трикутників.

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

Наприклад, вектор з координатами (1,0,0) означає: "напрямок - праворуч, швидкість - 1". Якщо відкласти цей вектор від початку координат, добре видно, що він спрямований саме вправо (рис. 22.2).

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

координат

Існує спеціальний вид векторів – нормалі (normals). Нормалі можуть бути побудовані для граней та для вершин об'єкта. Нормалі для граней перпендикулярні до цих граней. Вони використовуються для розрахунку кольору об'єкта.

22.2. Перетворення у тривимірному просторі

Знаючи координати вершин полігонів, у тому числі складається об'єкт , ми можемо розташувати їх у просторі. Тепер потрібно розібратися зі зміною положення об'єктів у просторі. Існує кілька основних операцій, які можуть бути використані для переміщення об'єктів у тривимірному просторі. Це – переміщення (translation), обертання (rotation) та масштабування (scale).

Результати роботи графічної підсистеми тривимірної гри бачимо на плоскому екрані монітора – змодельована комп'ютером тривимірна сцена проектується на двовимірну поверхню. При проектуванні потрібно вибрати точку, якавиконує роль камери, що дозволяє бачити тривимірний простір. У свою чергу об'єкти в тривимірному просторі можуть переміщатися відповідно до певних правил. Для управління цим використовуються кілька матриць. Це – світова матриця (World Matrix), матриця виду (View Matrix) та матриця проекції (Projection Matrix).

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

Світова матриця дозволяє задавати перетворення – переміщення, обертання та трансформації об'єктів.

Матриця вигляду дозволяє керувати камерою.

Матриця проекції використовується для налаштування проекції тривимірної сцени на екран.

Припустимо, є трикутник, заданий такими вершинами (табл. 22.1).