logo search
Навч Посібник з КомпГр _ 3

Програмні засоби обробки тривимірної графіки

На персональних комп'ютерах основну частку ринку програмних засобів обробки тривимірної графіки займають три пакети. Найефективніше вони працюють на наймогутніших машинах (у двох- або чотирипроцесорних конфігураціях Pentium II/III, Xeon) під управлінням операційної системи Windows NT.

Програма створення і обробки тривимірної графіки 3D Studio Max фірми Kinetix спочатку створювалася для платформи Windows. Цей пакет вважається «напівпрофесійним». Проте його засоби цілком вистачає для розробки якісних тривимірних зображень об'єктів неживої природи. Відмітними особливостями пакету є підтримка великого числа апаратних прискорювачів тривимірної графіки, могутні світлові ефекти, велике число доповнень, створених сторонніми фірмами. Порівняльна невимогливість до апаратних ресурсів дозволяє працювати навіть на комп'ютерах середнього рівня. Разом з тим по засобах моделювання і анімації пакет 3D Studio Max поступається розвиненішим програмним засобам.

Програма Softimage 3D компанії Microsoft спочатку створювалася для робочих станцій SGI і лише порівняно недавно була конвертована під операційну систему Windows NT. Програму відрізняють багаті можливості моделювання, наявність великого числа регульованих фізичних і кінематографічних параметрів. Для рендеринга застосовується якісний і достатньо швидкий модуль Mental Ray. Існує безліч доповнень, що випущені “третіми” фірмами, значно розширюють функції пакету. Ця програма вважається стандартом «де-факто» в світі спеціалізованих графічних станцій SGI, а на платформі IBM РС виглядає дещо важкувато і вимагає могутніх апаратних ресурсів.

Найбільш революційною з погляду інтерфейсу і можливостей є програма Мауа, розроблена консорціумом відомих компаній (Alias, Wavefront, TDI). Пакет існує у варіантах для різних операційних систем, у тому числі і Windows NT. Інструментарій Мауа зведений в чотири групи: Animation (анімація), Modeling (моделювання), Dynamic (фізичне моделювання), Rendering (візуалізація). Зручний інтерфейс, що настроюється, виконаний відповідно до сучасних вимог. На сьогоднішній день Мауа є найбільш передовим пакетом в класі засобів створення і обробки тривимірної графіки для персональних комп'ютерів.

Алгоритм Брезенхема для генерації кола.

Один з найбільш ефективних і простих для розуміння алгоритмів генерації кола належить Брезенхему. Спершу відмітимо, що необхідно згенерувати тільки одну восьму частину кола. Інші її частини можуть бути отримані послідовними віддзеркаленнями, як це показано на мал. 1. Якщо згенерувати перший октант (від 0 до 45° проти годинникової стрілки), то другий октант можна отримати дзеркальним віддзеркаленням відносно прямої у = х, що дає в сукупності перший квадрант. Перший квадрант відбивається відносно прямою х = 0 для отримання відповідної частини кола в другому квадранті. Верхнє півколо відбивається відносно прямою у = 0 для завершення побудови. На рис. 1 приведені двовимірні матриці відповідних перетворень.

Рис. 1. Генерація повного кола з дуги в першому октанті.

Для виведення алгоритму розглянемо першу чверть кола з центром на початку координат. Відмітимо, що якщо робота алгоритму починається в точці х = 0, у = R, то при генерації кола за годинниковою стрілкою в першому квадранті у є монотонно убуваючою функцією за аргументом (мал. 2). Аналогічно, якщо початковою точкою є у = 0, х == R, то при генерації кола проти годинникової стрілки х буде монотонно убуваючою функцією аргументу у. У нашому випадку вибирається генерація за годинниковою стрілкою з початком в точці х = 0, у = R. Передбачається, що центр кола і початкова точка знаходяться точно в точках растру.

Мал. 2. Коло в першому квадранті Мал. 3. Вибір пікселів в першому

квадранті

Для будь-якої заданої точки на колі при генерації за годинниковою стрілкою існує тільки три можливості вибрати наступний піксел, що найкращим чином наближає коло: горизонтально управо, по діагоналі вниз і управо, вертикально вниз. На мал. 3 ці напрями позначені відповідно mH, mD, mV. Алгоритм вибирає піксел, для якого мінімальний квадрат відстані між одним з цих пікселов і колом, тобто мінімум з

mH = |(xi + 1)2 + (yi)2 -R2|

mD = |(xi + 1)2 + (yi -1)2 -R2|

mV = |(xi )2 + (yi -1)2 -R2|

Обчислення можна спростити, якщо відмітити, що в околиці крапки (xi,yi) можливі тільки п'ять типів перетинів кола і сітки растру, приведених на мал. 4.

Різниця між квадратами відстаней від центру кола до діагонального піксела (xi, + 1, уi - 1) і від центру до крапки на колі R2 рівна

Δ i = (xi + 1)2 + (yi -1)2 -R2

Як і в алгоритмі Брезенхема для відрізка, для вибору відповідного піксела бажано використову-вати тільки знак помилки, а не її величину.

При Δi < 0 діагональна крапка (xi, + 1, уi - 1) знаходиться усередині реального кола, тобто це випадки 1 або 2 на мал. 4. Ясно, що в цій ситуації слід вибрати або піксел xi, + 1, уi), тобто mH, або піксел (xi, + 1, уi - 1), тобто mD. Для цього спочатку розглянемо випадок 1 і перевіримо різницю квадратів відстаней від кола до пікселов в горизонтальному і діагональному напрямах:

Δ = |(xi + 1)2 + (yi )2 -R2| - |(xi + 1)2 + (yi -1)2 -R2|

При Δi < 0 відстань від кола до діагонального піксела більше, ніж до горизонтального. Навпаки, якщо Δ > 0, відстань до горизонтального піксела більша. Таким чином

при Δ <= 0 вибираємо mH в (xi, + 1, уi - 1)

при Δ > 0 вибираємо mD в (xi, + 1, уi - 1)

При Δ = 0, коли відстань від кола до обох пікселів однакові, вибираємо горизонтальний крок.

Кількість обчислень, необхідних для оцінки величини Δ, можна скоротити, якщо відмітити, що у разі 1

(xi + 1)2 + (yi )2 -R2 >= 0

(xi + 1)2 + (yi -1)2 -R2 < 0

оскільки діагональний піксел (xi, + 1, уi - 1) завжди лежить усередині кола, а горизонтальний (xi, + 1, уi ) - поза нею. Таким чином, Δ можна обчислити за формулою

Δ= (xi + 1)2 + (yi )2 -R2 + (xi + 1)2 + (yi -1)2 -R2

Доповнення до повного квадрата члена (yi)2 за допомогою додавання і віднімання - 2yi + 1 дає

Δ= 2[(xi + 1)2 + (yi -1)2 -R2] + 2yi - 1

У квадратних дужках стоїть за визначенням Δi і його підстановка

Δ = 2(Δi + yi) 1, істотно спрощує вираз.

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

Існує декілька способів завдання призначеної для користувача системи координат. Положення координатної системи можна зберігати і відновлювати.

Користувач визначає призначену для користувача систему координат (КСК) з метою змінити місцеположення початкової точки 0,0,0, місцеположення і кут повороту площини XY і орієнтацію площини XY або осі Z. Користувач може розташувати і зорієнтувати КСК на будь-якому місці в 3D просторі і може визначити, зберегти і наново викликати таку кількість збережених адрес КСК, яке йому потрібне.

Якщо на екрані монітора розташовується декілька видових екранів, на кожному з них можна встановити свою КСК.

Задавання КСК

Задавання нової КСК може бути здійснене наступними способами:

Декартові (прямокутні) координати. При цьому для визначення двовимірних і тривимірних координат застосовуються три взаємно перпендикулярні осі: X, Y і Z. Для введення координат вказується відстань від крапки до початку координат по кожній з цих осей, а також напрям (+ або -). При початку нового малюнка поточною системою завжди є світова система координат World Coordinate System (WCS) отже, вісь X направлена горизонтально, вісь Y - вертикально, а вісь Z перпендикулярна плоскості XY.

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

Кожна точка в полярній системі координат може бути визначена двома полярними координатами, що зазвичай мають назву r (радіальна координата) та φ (кутова координата, полярний кут, азимут, інколи пишуть θ або t). Координата r відповідає відстані до полюса, а координата φ дорівнює куту в протигодинниковому напрямі від променя через 0° (інколи називається полярною віссю).