Що саме таке УФ та УФВ картографування?


26

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

Наскільки я розумію, кожна 3D-модель складається з Точок, і кілька точок створюють обличчя? Чи кожна точка чи грань мають вторинну координату, яка відображає положення осі / у в 2D-текстурі? Або як розмотування маніпулює моделлю?

Крім того, що насправді робить W у UVW, що він пропонує над УФ? Як я розумію, W відображає координату Z, але в якій ситуації я мав би різні текстури для одного і того ж X / Y і різних Z, чи не була б частина Z невидимою? Або я цілком розумію це?


1
задайте два питання окремо
розробник Noob Game

1
Я так ненавиджу хлопців, як @NoobGameDeveloper, всі інші відповідають на питання, і все, що вони роблять, намагається з’ясувати речі, які не відповідають питанню. Давайте, нехай вони задають питання, я не кажу, що ніхто не повинен дотримуватися правил, але такі питання, як це, цілком нормально, щоб їх розміщували тут.
Даніял Азрам

Відповіді:


23

Ваше розуміння близьке. Кожна 3D-модель складається з вершин. Кожна вершина зазвичай визначає розташування точки в просторі, нормальну (використовується для обчислень освітлення) та 1 або більше текстурних координат. Зазвичай вони позначаються як u для горизонтальної частини текстури і v для вертикалі.

Коли об'єкт текстурований, ці координати використовуються для пошуку тексту, який тексель або піксель побудувати на основі текстури. Мені найпростіше вважати їх відсотками або співвідношеннями між лівим краєм текстури ( u = 0) і правим краєм текстури ( u = 1,0), а також зверху текстури ( v = 0) і знизу з нього ( v= 1,0). Вони інтерполюються між вершинами та розглядають кожен виведений на екрані піксель. Вони можуть бути більшими або меншими, ніж ці діапазони, і стан візуалізації, який встановлюється під час надання об'єкта, визначає, що відбувається. Варіанти для цього - CLAMP і REPEAT. Затискання обмежує координату на 0 або 1, внаслідок чого текстура розмазується там, де вона знаходиться за межами діапазону. Повтор викликає повторення текстури, коли вона знаходиться поза діапазоном; це фактично те саме, що схопити лише десяткову частину координати і використовувати її на своєму місці.

Перш ніж нанести координати текстур на об'єкт, вони множать на матрицю текстури, щоб застосувати до них певне перетворення (наприклад, масштабування, переклад чи обертання). Цей ефект іноді анімований в іграх, щоб він виглядав так, ніби щось переміщується по об’єкту, не потребуючи переміщення самого об’єкта ... текстура просто прокручується по ньому. Коли матриця текстур множиться на координати текстури, вона створює 2 значення, які використовуються для пошуку текстуля на графік (давайте називати їх s і t ). Вони генеруються автоматично з u та v, навіть якщо матриця текстур не встановлена; це еквівалент множення u і v на матрицю тотожності.

Ось тут входить координата w , хоча вона використовується не так часто. Це додатковий параметр для множення текстурної матриці на, і зазвичай використовується, коли потрібно враховувати перспективу (наприклад, в Shadow Mapping ). Це працює так само, як при перетворенні місця в об'єктному просторі в просторі екрану за допомогою матриці світогляду-проекції. Помноживши UVW на перетворення проекції, ви отримуєте 2 координати, s і t, які потім відображаються на 2D текстуру.


Варто зазначити, що OpenGL розглядає v0 як нижню, а v1.0 - як верхню. Це коштувало мені багато часу в минулому, коли я не міг знайти помилку, коли мої текстури виглядали дивно.
tkausl

8

Розглянемо трикутник.

Кожен кут має УФ-координату. Ви інтерполюєте між ними, щоб отримати набір УФ-координат для кожного пікселя. (Тут також грає перспектива, але на даний момент нехай це ігнорують).

Потім ви виймаєте текстуру з текстури за координатами U і V. Що означає піксель від координати текстури x, y - те саме, дещо інша термінологія, оскільки ми говоримо про текстури.

Якщо ваша текстура справді тривимірна, вам також знадобиться третя координата, W.

Один із способів візуалізувати це - придумати блок дерева. Якщо якось подрібнити його, ви побачите, що кожна площина всередині блоку містить 2d різновиди текстури.

3D текстури настільки рідкісні, що про них на даний момент можна забути.


Рідкісний? Для чого вони використовуються? Чи можете ви показати якийсь приклад у контексті назв AAA.
Куазі Ірфан

Ні, тому що вони, як правило, ніколи не використовуються. Завжди є якийсь дешевший спосіб зробити те саме. Подумайте про нарізані предмети у wii sports plus; ви можете зламати предмети будь-яким способом і побачити "внутрішні". Вони могли витратити величезну кількість пам'яті, зробивши з них 3d текстури (припускаючи, що апаратне забезпечення навіть це підтримує), але це набагато дешевше імітувати це з парою 2d текстур.
Jari Komppa

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

Я не розумію, що ти маєш на увазі. 3D-текстури можуть бути корисні в інших цілях, ніж просто текстури; якщо деяким даним шейдеру потрібно зручно відображати в 3d масив, це було б одне використання. Але як "нормальна" текстура, вони, як правило, просто марно пам'яті.
Jari Komppa

Одним із застосувань 3D-текстури є картографування на відстані, хоча, як каже Ярі, вони дуже рідкісні в грі через їх складність. [Посилання] http.developer.nvidia.com/GPUGems2/gpugems2_chapter08.html
Jackalope

7

Подумайте орігамі.

УФ-карта - це як сплющена (розгорнена) 2D шкіра вашої 3D-сітки (оболонки).

Якби ви вирізали карту і склали її по лініях сітки, результатом стала б ваша 3d модель.

Значення (U, V) з плаваючою точкою варіюються від (0,0) до (1,1) Лівий верхній кут УФ-карти дорівнює (0,0) Правий нижній кут - (1,1)

Кожна вершина в сітці полігонів (tris / quads) має значення (U, V), яке повідомляє рендереру, яку частину карти використовувати.

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

Це не можна повністю оцінити без такої картини, яка робить все очевидним:

УФ-сітка

Як згадували інші коментатори, компонент W використовується рендеріром для більш вигадливих ефектів, як тіньове картографування, але УФ-карта є базою для розуміння.

Зауважте, що вершинний шейдер повинен хоча б раз викликати фрагмент шейдера для кожного пікселя, який має бути пофарбований. Ось чому GPU - це паралельні процесори з десятками ядер - трубопровід шейдера дуже вимогливий.

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

УФ-зіставлення мільярдів пікселів зі швидкістю 240 кадрів в секунду може спричинити справжній гарячий безлад!


0

Карта uv відображає точку (x, y, z) у сітці до точки (u, v) на зображенні текстури. Оскільки зображення відображає (u, v) на колір, дві карти можуть бути ланцюговими, отримуючи карту з сітчастого простору до простору кольорів.

         uv map       color map
 (x,y,z)   ->   (u,v)    ->     color
 mesh           Texture
 space          space
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.