Полігональне моделювання

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

У тривимірній комп'ютерній графіці багатоку́тне моделюва́ння — це підхід для моделювання об'єктів шляхом подання або апроксимації їх поверхонь з використанням багатокутників. Багатокутні моделювання добре підходить для рендеринга scanline і тому є методом вибору для комп'ютерної графіки в реальному часі. Альтернативні методи представлення 3D-об'єктів включають в себе поверхні NURBS, поверхні підрозділи і засновані на рівняннях уявлення, що використовуються в трасувальникові променів. Див. багатокутну сітку для опису того, як представлені і зберігаються багатокутні моделі.

Геометрична теорія і багатокутники[ред. | ред. код]

Основним об'єктом, використовуваним в моделюванні сітки, є вершина, точка в тривимірному просторі. Дві вершини, з'єднані прямою, стають ребром. Три вершини, пов'язані один з одним трьома ребрами, визначають трикутник, який є найпростішим багатокутником в евклідовому просторі. Більш складні багатокутники можуть бути створені з кількох трикутників або як один об'єкт з більш ніж 3 вершинами. Чотиристоронні багатокутники (зазвичай звані квадрациклами) і трикутники є найбільш поширеними формами, використовуваними при багатокутному моделюванні. Група багатокутників, пов'язаних один з одним спільними вершинами, зазвичай називається елементом. Кожен з багатокутників, що становлять елементи, називаються межею.

В геометрії Евкліда будь-які три неколінеарні точки визначають площину. З цієї причини трикутники завжди знаходяться в одній площині. Однак це не обов'язково для більш складних багатокутників. Плоска природа трикутників спрощує визначення їх нормалі до поверхні, тривимірного вектора, перпендикулярного до поверхні трикутника. Поверхневі нормалі, корисні для визначення перенесення світла в трасуванні променів і є ключовим компонентом популярної моделі затінення Фонга. Деякі системи рендеринга використовують нормалі вершин замість нормалей фігури, щоб створити більш привабливу систему освітлення за рахунок більшої обробки. Зверніть увагу, що кожен трикутник має дві граничниі нормалі, які вказують на протилежні напрямки один від одного. У багатьох системах тільки одна з цих нормалей вважається дійсною — інша сторона багатокутника називається задньою поверхнею, і її можна зробити видимою або невидимою в залежності від бажань програміста.

Багато програм моделювання не суворо дотримуються геометричної теорії; Наприклад, для двох вершин можливо мати два різних ребра, що з'єднують їх, займаючи точно таке ж просторове положення. Також можливо, що дві вершини існують в одних і тих же вимірах, або дві грані існують в одному і тому ж місці. Такі ситуації, як правило, небажані, і багато пакетів підтримують функцію автоматичного очищення. Однак, якщо автоматичне очищення відсутнє, їх необхідно видаляти вручну.

Група багатокутників, які з'єднані загальними вершинами, називається сіткою. Щоб сітка виглядала привабливою при візуалізації, бажано, щоб вона не перетинала себе, що означає, що ніяке ребро не проходить через багатокутник. Інший спосіб дивитися на це — це те, що сітка не може пробити себе. Також бажано, щоб сітка не містила помилок, таких як подвоєні вершини, ребра або грані. Для деяких цілей важливо, щоб сітка була різноманітною — тобто, щоб вона не містила отворів або особливостей (місця, де дві різні секції сітки пов'язані однією вершиною).

Побудова багатокутних сіток[ред. | ред. код]

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

Одним з найбільш популярних методів побудови сіток є box-моделювання, яке використовує два простих інструмента: — Інструмент поділу розбиває межі і ребра на менші шматочки, додаючи нові вершини. Наприклад, квадрат буде розділений додаванням однієї

вершини в центр і по одній на кожному ребрі, створюючи чотири менших квадрата. 

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

Другий загальний метод моделювання іноді називають моделюванням інфляції або моделюванням екструзії. У цьому методі користувач створює 2D-форму, яка відстежує контур об'єкта з фотографії або малюнка. Потім користувач використовує друге зображення об'єкта під іншим кутом і видавлює двовимірну фігуру в 3D, знову повторюючи контур фігури. Цей метод особливо поширений для створення осіб і головок. Загалом, художник буде моделювати половину фігури, а потім дублювати вершини, інвертувати їх розташування відносно деякої площини і з'єднувати дві частини разом. Це гарантує, що модель буде симетричною.

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

  • Куби
  • Піраміди
  • Циліндри
  • 2D примітиви, такі як квадрати, трикутники і кола.
  • Спеціалізовані або езотеричні примітиви, такі як Чайний сервіз Юти або Сюзанна, талісман мавпи Блендера.
  • Сфери — сфери зазвичай представлені одним з двох способів:                          
  •  Ікосфери — це ікосаедри, які мають достатню кількість трикутників, що нагадують сферу.
  • УФ-сфери складаються з квадрациклів і нагадують сітку, видиму на деяких глобусах — квадрати більше біля «екватора» сфери і менше біля «полюсів», в кінцевому рахунку закінчуючись в одній вершині.

Нарешті, існують деякі спеціалізовані методи побудови високих або низьких деталей. Моделювання на основі ескізів — зручний інтерфейс для швидкого створення моделей з низькою деталізацією, в той час як 3D-сканери можуть бути використані для створення високодетальних сіток на основі існуючих об'єктів реального світу майже автоматично. Ці пристрої дуже дорогі, і, як правило, використовуються тільки дослідниками і професіоналами галузі, але можуть генерувати субміліметрові цифрові уявлення з високою точністю.

Операції[ред. | ред. код]

Існує дуже велика кількість операцій, які можуть виконуватися на багатокутних сітках. Деякі з них приблизно відповідають реальним маніпуляціям з 3D-об'єктами, в той час як інші — ні.

Операції з багатокутною сіткою: Створення — створення нової геометрії з деякого іншого математичного об'єкта. Лофт — згенеруйте сітку, пропустивши форму уздовж шляху.

Видавлювання — аналогічно горища, за винятком того, що шлях завжди є прямою або ламаною лінією. Обертання — створення сітки шляхом обертання (обертання) фігури навколо осі.

Маршові куби — алгоритм побудови сітки з неявній функції.

Двійкові створення — створіть новий меш з двійковій операції двох інших сіток. Додавання — логічне додавання двох або більше сіток. Віднімання — логічне віднімання двох або більше сіток. Перетин — побудова перетинів.

Союз — логічне об'єднання двох або більше сіток Прикріплення — приєднання однієї сітки до іншої (видалення внутрішньої поверхні) Фаска — створює скошену поверхню, яка плавно з'єднує дві поверхні

Деформації — переміщення тільки вершин сітки Деформація — систематично переміщати вершини (відповідно з певними функціями або правилами). Зважена деформація — переміщення вершин на основі локалізованих ваг на вершину.

Morph — переміщує вершини гладко між вихідною і цільовою сітками.

Вигин — переміщення вершин для «згинання» об'єкта. Twist — переміщення вершин для «повороту» об'єкта.

Маніпуляції — зміна геометрії сітки, але не обов'язково топології Зміщення — введення додаткової геометрії на основі «карти зсувів» з поверхні.

Спростити — систематично видаляти і усереднювати вершини.

Розділити — згладити сітку маршруту, розділивши сітку (Catmull-Clark і т. д.). Опукла оболонка — створює іншу сітку, яка мінімально охоплює дану сітку (думаю, обгортка).

Вирізати — створити отвір в сітчастої поверхні. Stitch — закрити отвір в поверхні сітки.

Вимірювання. Обчисліть деяке значення сітки Volume — обчислює обсяг 3D-сітки (дискретний об'ємний інтеграл). Площа поверхні — обчислити площу поверхні сітки (дискретний поверхневий інтеграл).

Виявлення зіткнень — визначає, зіткнулися чи дві складні сітки в русі.

Фітинг — побудова параметричної поверхні (NURBS, бікубічний сплайн) шляхом підгонки її до заданої сітці.

Точкова відстань — обчислює відстань від точки до сітки.

Лінійно-поверхова відстань — обчислює відстань від лінії до сітки. Перетин лінії — обчислення перетину лінії і сітки. Поперечний переріз — обчислення кривих, створених поперечним перерізом площині через сітку. Centroid — обчислює центр ваги, геометричний центр сітки.

Center-of-Mass — обчислити центр мас, точку рівноваги, сітки.

Circumcenter — обчислює центр кола або сфери, що охоплює елемент сітки. Incenter — обчислює центр кола або сфери, укладений в елемент сітки.

Розширення[ред. | ред. код]

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

 Щоб відобразити модель на екрані комп'ютера поза середовищем моделювання, необхідно зберегти цю модель в одному з форматів файлів, перерахованих нижче, а потім використовувати або написати програму, здатну завантажувати з цього формату. Двома основними способами відображення 3D-моделей багатокутників є OpenGL і Direct3D. Обидва ці методи можуть використовуватися з або без 3D-прискореної графічної карти.

Переваги і недоліки[ред. | ред. код]

Існує багато недоліків для представлення об'єкта з використанням багатокутників. Багатокутники нездатні точно представляти вигнуті поверхні, тому велика їх кількість має використовуватися для апроксимації кривих візуально привабливим чином. Використання складних моделей вимагає зниження швидкості. При перетворенні в scanline кожен багатокутник повинен бути перетворений і відображений незалежно від розміру, і на екрані часто з'являється велика кількість моделей в будь-який момент часу. Часто програмісти повинні використовувати кілька моделей з різними рівнями деталізації, щоб представляти один і той же об'єкт, щоб скоротити кількість багатокутників, які відображаються.

Головна перевага багатокутників в тому, що вони швидше за інших уявлень. У той час як сучасна відеокарта може демонструвати високодеталізованими сцену з частотою кадрів 60 кадрів в секунду або вище, raytracers, основний спосіб відображення небагатокутних моделей, не можуть досягти інтерактивної частоти кадрів (10 кадрів / с або вище) з аналогічною кількістю деталей.

Формати файлів[ред. | ред. код]

Для зберігання даних 3D-багатокутників є безліч форматів. Найбільш популярними є:

  • .3ds, .max, який пов'язаний з 3D Studio Max. 
  •  .blend, пов'язаний з Blender.
  •  .c4d, пов'язаний з Cinema 4D.
  •  .dae (COLLADA). 
  • .dxf, .dwg, .dwf, пов'язані з AutoCAD.
  •  .fbx (раніше Autodesk.Kaydara Filmbox). 
  •  .jt, спочатку розроблений Siemens PLM Software; тепер стандарт ISO.
  •  .lwo, який пов'язаний з Lightwave. 
  •  .lxo, який пов'язаний з MODO. 
  •  .mb і .ma, які пов'язані з Maya.
  •  .md2, .md3, пов'язані з серіями ігор Quake
  •  .mdl, який використовується з вихідним кодом Valve Corporation.
  •  .nif (NetImmerse / gamebryo).
  •  .obj («Розширений визуализатор» Wavefront).
  •  .ply використовується для зберігання даних з 3D-сканерів.
  •  .rwx (Renderware). 
  •  .stl, який використовується для швидкого прототипування.
  •  .u3d (Universal 3D).
  •  .wrl (VRML 2.0).

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]

  1. OpenGL SuperBible (3rd ed.), by Richard S Wright and Benjamin Lipchak ISBN 0-672-32601-9
  2. OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.4, Fourth Edition by OpenGL Architecture Review Board ISBN 0-321-17348-1
  3. OpenGL(R) Reference Manual: The Official Reference Document to OpenGL, Version 1.4 (4th Edition) by OpenGL Architecture Review Board ISBN 0-321-17383-X
  4. Blender documentation: https://web.archive.org/web/20051212074804/http://blender.org/cms/Documentation.628.0.html
  5. Maya documentation: packaged with Alias Maya, http://www.alias.com/eng/index.shtml
  6. Nahirnyj T., Tchervinka K. Mathematical Modeling of Structural and Near-Surface Non-Homogeneities in Thermoelastic Thin Films // Int.J.Eng.Sci, Vol. 91, 2015, P.49
  7. Чекурін В.Ф., Червінка К.А. Інформаційні технології та системи: Лабораторний практикум. – Львів: Видавничий центр ЛНУ імені Івана Франка, 2005. – 222 с
  8. Підкуйко С.І. Актуарна математика. - Львів, Видавничий центр ЛНУ імені Івана Франка, 2000р