координатні простору

Увага! Даний сайт не оновлюється. Нова версія: shatalov.su

    подальші уроки
  1. Перетворення координатних просторів. Перейти.
  2. Спуск і перспективна проекція. Перейти.

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

В DirectX використовується кілька координатних просторів.

Світове координатне простір (World space)

У світовому координатном просторі описуються всі графічні об'єкти. Саме в цьому просторі можна "побачити" весь віртуальний світ. Ще цей простір називають глобальним або універсальним.

Чому не можна обмежитися тільки одним простором - світовим? Справа в тому, що використання декількох просторів сильно спрощують життя.

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

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

Розглянемо картинку, на якій зображено світове координатне простір. У просторі розташований один об'єкт - трикутник, і камера, яка спрямована в бік трикутника. І у камери і у трикутника свої координатні простору.

координатні простору

На другій картинці ця ж сцена, тільки вид зверху. Тут трикутник представлений у вигляді рисочки. Усі наступні картинки будуть використовувати або вид збоку (осі x, y) або вид зверху (осі x, z).

Об'єктне координатне простір (object space)

Саме в об'єктному координатном просторі відбувається побудова моделі (об'єкта).

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

На зображенні можна бачити простір трикутника описується осями x1, y1.

координатні простору

Якщо об'єкт складний, то вводяться додаткові простору - для спрощення анімації. Але нам до цього ще далеко.

Інерційний координатне простір (inertial space)

Ми введемо ще одне додаткове координатне простір - інерційний. Воно не використовується в реальності, але дозволяє спростити сприйняття того, як взаємодіють координатні простору. Подивимося на картинку:

координатні простору

Тут представлені: об'єктне (x1, y1) і інерційний (x2, y2) простору.

Напрямок осей інерційного простору збігається з напрямком осей світового простору, а початок координат інерційного простору збігається з початком координат об'єктного простору.

Щоб "потрапити" з об'єктного простору в інерційного, потрібно обертання. А з інерційного простору дуже легко потрапити в світове. Для цього використовується переміщення. Інерційний простір дозволяє відокремити ці дві операції (обертання і переміщення).

Координатне простір камери

Камера - це уявлення користувача у віртуальному світі. Саме через камеру гравець бачить маленьку частину світового простору.

У камери є напрям - в який бік дивиться користувач і поля (сектора) огляду: по вертикалі і по горизонталі.

Напрямок камери (погляд гравця) завжди збігається з позитивним напрямком осі z в координатному просторі камери.

координатні простору

Визначення координатних просторів

Ми з'ясували які простору існують в DirectX: світове, об'єктне (у кожного об'єкта своє) і простір камери. Тепер потрібно з'ясувати яким чином ці простору взаємодіють.

У кожного простору є осі і початок координат - точка перетину осей (позначається як точка О). Початок координат - це місце розташування координатного простору. Наприклад: початок координат простору камери - це місце розташування (координати) цього простору в світовому просторі. Осі задають орієнтацію простору.

Перетворення координатних просторів

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

Розберемо ситуацію, коли об'єктні координати збігаються з інерційними. Припустимо у нас є трикутник в об'єктному просторі з координатами (0,0) (1,1) (1,0). Координати цього простору в світі - (23, 12). Щоб перетворити точки трикутника в світові координати досить координати кожної точки скласти з координатами об'єктного простору: (23,12) (24,13) (24,12) - ось так виглядає трикутник в світових координатах. Просто, правда?

Щоб перетворити координати якоїсь точки зі світових в об'єктні, потрібно з координат цієї точки відняти координати об'єктного простору.

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

Важливе зауваження: при перетвореннях координатних просторів, координати об'єктів не переміщаються. Ми просто висловлюємо розташування об'єктів в різних координатних просторах.

Арканоід

координатні простору

Камера
координатні простору

клітини
координатні простору

спрайт
координатні простору

Схожі статті