для чего используется карта развертки

Ликбез по картографическим проекциям с картинками

Визуализация данных самого разного рода, имеющих некое географическое распределение, в последнее время получает все большее и большее распространение. Тут, на Хабре, статьи с картами встречаются чуть ли не каждую неделю. Карты в статьях очень разные, но роднит их одно: как правило, в них используются всего две картографические проекции, при том — не самые удачные из существующих. Мне бы хотелось дать несколько наглядных примеров проекций, которые выглядят более эстетично и лучше приспособлены для разных видов визуализации. В этой статье будут рассмотрены общемировые проекции и проекции большей части Земли, так как визуализация чего-либо на карте мира, пожалуй, является наиболее распространенной из подобных задач.

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Легкое введение

Поскольку статья ориентирована на вопросы визуализации данных, я не буду касаться глубоко теории проекций (датумов, конформности, равноугольности и тому подобного), кроме общих принципов их построения. Также, я буду говорить тут о «проекциях», формально подразумевая «систему координат», coordinate reference system, потому что для карт таких масштабов не имеет смысла отдельно рассматривать проекцию и датум. Математики здесь тоже практически не будет, кроме простой геометрии. Желающие ознакомиться с математическими принципами, могут это сделать по статьям на Wolfram MathWorld. Так что изучающим программирование в области геоинформационных систем или их опытным пользователям, эта статья, возможно, будет не очень полезна.

Перед началом, объясню пару вещей. Все примеры будут даваться с использованием набора данных государственных границ с вот этого сайта и набора данных Blue Marble Next Generation с сайта NASA. Последний включает в себя синтезированные безоблачные снимки земной поверхности за каждый из двенадцати месяцев 2004-го года, что позволит внести некоторое разнообразие в иллюстрации.

Я очень люблю открытый софт, но использовать GDAL в данном случае мне показалось неэффективно — некоторых не очень ходовых, но полезных проекций в его реализации на данный момент либо нет, либо я плохо смотрел исходники, а потому иллюстрации я готовил в коммерческой программе GlobalMapper, которой пользуюсь уже много лет, и которая славится поддержкой внушительного списка систем координат.

Названия проекций и некоторые термины я буду давать и англоязычные, потому что если кому-то захочется поискать материалы по этой теме, русскоязычных источников в сети найдется несколько меньше (объем статей в Википедии на русском меньше в несколько раз). Для большинства проекций я постараюсь дать не только названия, но и коды EPSG и/или WKID, а также название проекции в библиотеке PROJ.4, широко используемой в открытом софте (например, в пакете R) для поддержки систем координат.

Некоторые проекции, возможно, окажутся кому-то знакомыми по картинке с xkcd, но все из них тут рассмотрены не будут.

Проблема

Начнем с того, что же это за самые распространенные проекции, и что с ними не так.

Первая проекция — так называемая «Географическая», она же – Geographic projection, Latitude/Longitude, Plate carrée EPSG:4326 WKID:54001 PROJ.4:longlat. Строго говоря, она даже не совсем является проекцией, потому что получается путем интерпретации полярных угловых координат, как линейных прямоугольных, без всяких вычислений. Эту проекцию используют, потому что она способна отобразить всю поверхность Земли целиком и потому, что она самая простая математически, а данные очень часто распространяются не спроецированными, то есть именно в географических координатах (градусах широты и долготы).

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Другая весьма популярная проекция — «проекция Меркатора», Mercator projection PROJ.4:merc. Она также используется для визуализации данных, покрывающих весь мир, но ее популярность продиктована не только простотой — ее варианты являются стандартом де-факто для глобальных картографических сервисов, таких как Google Maps, Bing Maps, Here. С ней глубоко связаны картографические библиотеки OpenLayers, Leaflet, API упомянутых выше сервисов. В варианте Google и OpenStreetMap она носит название Web Mercator и имеет код EPSG/WKID:3857, иногда на нее также ссылаются, как на EPSG:900913. Принцип ее построения не сильно сложнее Географической – это проекция на цилиндр, чья ось совпадает с географической осью Земли, проецирование происходит линиями, выходящими из центра планеты, от чего ошибка растяжения приполярных областей по горизонтали оказывается скомпенсирована пропорциональным растяжением по вертикали. Проблема с этим только в том, что карта получится слишком большой по вертикали, если попытаться отобразить и север Гренландии. Потому обычно отбрасывают 16° полярных областей (в равной пропорции или больше — с юга).

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

На чей-то взгляд выглядит чуть лучше, чем Географическая, но одну проблему мы уже упомянули, а вторая — чем ближе объект к полюсам, тем он кажется больше, хотя его форма уже не так искажена. Потому, если предмет визуализации — плотность маркеров на единицу территории или расстояния, такой способ отображения будет вводить в заблуждение. При грамотном выборе способа визуализации, конечно, это можно скомпенсировать, а для каких-то случаев это вообще не проблема: например, если величина какого-то показателя в целой стране соотнесена с цветом этой страны на карте, эффект растяжения площадей не сказывается. Эта проекция сохраняет только форму объектов, потому очертания континентов и стран выглядят довольно узнаваемо. И, как я уже сказал, она — ваш первый и самый простой вариант при создании интерактивных веб-карт.

Варианты решения

Что же делать с глобальными данными, если нам по какой-то причине понадобилась проекция, лучше сохраняющая такие свойства объектов, как форма, площадь, расстояния и углы? Законы геометрии не дают нам сохранить все эти свойства сразу, развернув круглую поверхность Земли на плоскость. Однако, для визуализации данных более всего важна эстетика и восприятие, а не сохранение свойств, как для навигационных или измерительных задач. Потому становится возможным подобрать такую проекцию, искажения в которой были бы равномерно распределены по свойствам. И таких проекций существует довольно много. Существуют три самых известных, обладающих сходными свойствами: «Тройная проекция Винкеля» Winkel Tripel WKID:54042 PROJ.4:wintri, «проекция Робинсона» Robinson projection WKID:54030 PROJ.4:robin, «проекция Каврайского» (Kavrayskiy projection). Первая и последняя имеют визуально минимальные искажения, а неспециалисту, не видя градусной сетки, вообще весьма сложно различить их, потому я приведу иллюстрацию для Winkel Tripel, как той, которая лично мне нравится больше всего.

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Вот так описание этой проекции выглядит в формате ESRI WKT:
PROJCS[«Robinson»,
GEOGCS[«GCS_WGS_1984»,
DATUM[«D_WGS84»,
SPHEROID[«WGS84»,6378137,298.257223563]
],
PRIMEM[«Greenwich»,0],
UNIT[«Degree»,0.017453292519943295]
],
PROJECTION[«Robinson»],
PARAMETER[«central_meridian»,0],
PARAMETER[«false_easting»,0],
PARAMETER[«false_northing»,0],
UNIT[«Meter»,1]
]

Как легко видеть, хотя искажение контуров и некоторое увеличение площади стран к полюсам здесь также наблюдаются, но это нельзя даже сравнивать с растяжением Географической проекции и пропорциональным увеличением проекции Меркатора.

Тут стоит сделать небольшое отступление и обратить внимание на то, что вид этой проекции по умолчанию страдает одним недостатком, который касается и других общемировых проекций. Дело в том, что если за центральный меридиан — линию, соединяющую северный и южный полюс через центр карты (longitude of origin) — принять нулевой меридиан, то карта будет разрезана по 180-му. Но при этом треть Чукотки окажется на левом краю карты, а две трети — на правом. Чтобы сделать карту красивее, разрез должен проходить где-то в районе 169-го западного меридиана восточнее острова Ратманова, для чего за центральный должен быть принят 11-й. Вот иллюстрация того, что получается:

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

А вот измененное для этого случая описание в ESRI WKT:
PROJCS[«Robinson»,
GEOGCS[«GCS_WGS_1984»,
DATUM[«D_WGS84»,
SPHEROID[«WGS84»,6378137,298.257223563]
],
PRIMEM[«Greenwich»,0],
UNIT[«Degree»,0.017453292519943295]
],
PROJECTION[«Robinson»],
PARAMETER[«central_meridian»,11],
PARAMETER[«false_easting»,0],
PARAMETER[«false_northing»,0],
UNIT[«Meter»,1]
]

В формате определения системы координат для PROJ.4 долгота центра проекции задается параметром +lon_0=.

11-й меридиан — «магическое» число: практически все мировые проекции, имеющие равномерный масштаб вдоль экватора, могут быть разрезаны по Берингову проливу, если за центральный принять именно его, а не нулевой.

Замечу, что задумываясь о выборе проекции, стоит принимать во внимание все существующие реальные требования к визуализации. Например, если данные касаются климата, то может иметь смысл либо нанести на карту линии широты, либо использовать проекцию, где они горизонтальны, а не загибаются к краям карты (то есть, отказаться от Тройной Винкеля в пользу, например, Робинсона). В данном случае, это позволит легче и точнее оценить относительную близость разных мест к полюсам и экватору. Еще один весомый плюс проекции Робинсона — то, что она поддерживается множеством софта, в том числе открытого, тогда как про некоторые другие этого сказать нельзя.

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Иногда, когда требуется максимально сохранить какое-то свойство, например — соотношение площадей объектов (стран) — эстетическая сторона страдает. Но поскольку это все же может для чего-то понадобиться, я приведу один пример такой проекции — «проекцию Моллвейде», Mollweide projection WKID:54009 PROJ.4:moll.

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Как видно, она довольно сильно напоминает проекцию Робинсона, но с той разницей, что полюса все же стянуты в точки, от чего форма приполярных областей выглядит сильно искаженной. Но пропорции площадей стран, как и требовалось, сохраняются куда лучше.

Самым молодым конкурентом этих проекций является проекция Natural Earth PROJ.4:natearth — она представляет из себя гибрид проекций Каврайского и Робинсона, а ее параметры были подобраны группой американских, швейцарских и словенских специалистов в 2007 году, тогда как возраст большинства картографических проекций — не менее полувека.

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Для перепроецирования данных в нее существует некоторое количество инструментов, которые были написаны специально для этого, но ее поддержка еще далека от повсеместной.

Немного экзотики и специальных случаев

Конечно, все многообразие проекций на этом не заканчивается. Их изобретено немало. Некоторые просто выглядят странно (скажем, проекция Бонне изображает Землю в виде фигуры, напоминающей разрезанное яблоко или стилизованное сердце), некоторые — предназначены для особых ситуаций. Например, готов поспорить, что очень многие видели на картинках карту мира, которая похожа на корку мандарина, которую сняли и расплющили. Это, наверняка, была «Разрывная гомолосинусоидальная проекция Гуда» Interrupted Goode Homolosine projection WKID:54052.

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Вид ее вполне достоин названия. Ее назначение — отображать размер объектов (и в некоторой степени — форму) близко к естественным пропорциям. Ее главная проблема, кроме названия и странного вида, состоит в том, что путем подбора центрального меридиана невозможно добиться того, чтобы ни один крупный кусок суши не был разрезан. Обязательно пострадает что-то из списка: Гренландия, Исландия, Чукотка, Аляска. Лично на мой взгляд, проще привести отдельно изображения стран, чем использовать такую карту, если вы не хотите стилизовать свою работу под середину XX века.

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

На иллюстрации эта проекция имеет широту и долготу центра, равные широте и долготе Москвы, а высоту — 5000000 метров. Чем больше это расстояние, тем сильнее изображение Земли становится похоже на ее изображение в проекции, которую мы рассмотрим последней.

Проекция, которая показывает вид на Землю в параллельной перспективе, то есть как-бы с бесконечного расстояния, называется «Ортографическая проекция» Orthographic projection WKID:43041 PROJ.4:ortho. В каком-то смысле, она знакома всем, кто когда-либо пользовался Google Earth. Я говорю, что в каком-то смысле, потому что «направление взгляда» в этой проекции всегда перпендикулярно поверхности Земли, тогда как в Google Earth его можно наклонять как угодно.

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Для нее, как и для предыдущей проекции, можно задать центральные широту и долготу, чтобы ориентировать Землю желаемым образом. Например, можно показать полушарие с центром в какой-то точке, о которой идет речь — скажем, иллюстрируя транспортные потоки континентального масштаба, исходящие от одного предприятия. Сделав две карты с противоположными значениями координат, можно получить карту всего мира (правда, на краях искажения будут очень велики). Генерация последовательности карт с плавным изменением центральной точки даст кадры для анимации вращающейся планеты без всякой трехмерной графики.

Если статья окажется интересной, постараюсь написать продолжение о проекциях, используемых для отображения отдельных стран или регионов, ориентированную, как и эта статья, на базовые свойства этих проекций для задачи визуализации данных, инфографики и тому подобного.

Источник

Можете просто и доходчиво объяснить, что такое UV, карты нормалей, запекание?

Пожалуйста, максимально развёрнуто и понятно))))))

Простой 5 комментариев

p. s. Я отблагодарю вас, когда стану миллиардером.

Тебе надо разобраться с основными понятиями комп. графики. (модель\меш, полигон, вертекс, edge, топология, ретопология, нормали, RGBA, каналы, маски, альфа и др)
А вот когда с ними разберешься, можно посмотреть в сторону PBR (Physically-Based Rendering)(скорее всего контент «под него» будешь пилить)

«UV-развёртку можно «разукрасить», а затем наложить на модель.»
Всё не так, нужно разукрасить не UV-развёртку, а подготовить набор текстурных карт для наложения на модель.
Никому ведь модель только с одной диффузной текстурой не нужна

UV-map это проекция всех поверхностей 3d модели на плоскость (ведь сами текстуры то плоские)
Вспомни бумажные модели (например куба)
Вот такая развертка нужна чтобы построить куб из бумаги

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

А чтобы получить UV-развёртку куба, нужно не собрать куб, а разрезать и развернуть.

Normal Map Baking
Вот есть у тебя модель ботинка (полигонов очень много) и тебе нужно перенести детализацию подошвы с этой самой модели ботинка, на более простую модель ботинка. (кто у персонажа подошвы ботинок разглядывает? Там ведь много полигонов не нужно)
Ты запекаешь карту нормалей (Normal Map) и на ней создается изображение подошвы. (Информация перешла с высокополигональной модели на карту нормалей) затем ты накладываешь её на простую модель ботинка и вуаля!
На почти плоской подошве появился псевдо рельеф
Освещение в движке реагирует на эту самую Normal Map и создает видимость рельефа, для наблюдателя. Смотришь и кажется что подошва богата на детали!
И так поступают со всей моделью.

«В одних источниках эти названия карт на английском, в других на русском» (там всё намного веселей!)
Введи в поисковик «Texture map terminology confusion»

Ищи статьи на русском где используется не перевод, а написание английских слов русскими буквами или просто где названия карт не переводятся.
Ни в коем случае не русифицируй свои программы (так ты всё только испортишь)

В зависимости от модели, от игрового движка или системы рендеринга тебе будут нужны разные «наборы» текстурных карт.
В движках есть редактор материалов и он может намекнуть какие текстурки он «кушает»

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

(именно в этом редакторе там где написано Bump map пихают Normal map)

для чего используется карта развертки. Смотреть фото для чего используется карта развертки. Смотреть картинку для чего используется карта развертки. Картинка про для чего используется карта развертки. Фото для чего используется карта развертки

Текстурных карт очень много и про остальные нет смысла писать. (Про PBR тем более)

p.s
Помни о правиле 80\20 (80% практика, 20% теория) если наоборот значит всё будет плохо. Утонешь в теории (ты не знаешь как к ней правильно подступиться)

Наши ответы тебе особо не помогут.
Пока сам не начнешь, не окунешься в работу. Не поймешь какие карты тебе нужны, и что ты вообще собрался делать.

Источник

UV Развёртка: ААА-Пайплайн 4/7. Самый полный гайд

Это четвёртая из семи статей из цикла про этапы пайплайна.

Вступай в группу в ВКонтакте и группу в Фейсбуке, чтобы не пропустить следующий выпуск!

Прошлая статья была про сетку.

Сегодня статья посвящена третьему этапу пайплайна — UV развёртке.А следующие статьи будут про запечку, текстуры и подачу.

Сейчас мы разберём:
Что такое развёртка, как её сделать
Как развёртка влияет на поведение текстур
Самые частые ошибки на UV и к чему они приводят
Целый ряд советов по правильной работе и оптимизации развёртки

Ты узнаешь про то, что такое тайловое пространство, как с ним работать, как правильно разворачивать сложные формы. Увидишь, как в дальнейшем развёртка поможет в текстурировании модели. Узнаешь про особенности развёртки моделей как части ААА-пайплайна (т.е. разработки моделей именно для топовых компьютерных игр).

Что такое развёртка?

3D модель, по определению, сделана из объемных форм. На любой объект в редакторе можно положить материал, выбрать его цвет и настроить блик. Но положить текстуры на 3D объекты нельзя до тех пор, пока ты не сделаешь развёртку. Программа просто не знает как накладывать плоскую текстуру на геометрию.

Отсюда возникает отдельный этап пайплайна — UV развёртка.

Развёртка переносит объёмные формы на плоскость для того, чтобы на них можно было положить текстуры.

В оригами ты делаешь из плоского листа бумаги объемный объект.Развёртка делает то же самое, но наоборот — из объемного делает плоское.

Развёртка для видеоигр всегда делается из лоуполи модели, про которую мы писали в прошлой статье.

Кстати, в мультфильмах и иногда в кино мапят хайполи с технологией pTex, которая позволяет текстурить модель без развертки, но это отдельная история. Если ты разрабатываешь модель для компьютерной игры, то разворачивается всегда лоуполи.

Давай разбираться, что это и как это работает!

С чего начинается работа с развёрткой?

В любом 3D редакторе есть инструментарий для работы с UV.

Базового функционала той же Maya хватит, чтобы сделать развёртку даже для очень сложной модели. Но для удобства и редких фишек (например, отрисовка паддинга) иногда используют отдельные программы, созданные исключительно для работы с UV. Лично мне нравится работать в UV Layout. Есть ещё популярная программа Rizom UV.

Хотя я всё чаще стал мапить просто в Maya. За последние пару версий она обновилась и стала крутой.

У примитивов в редакторах есть развертка по умолчанию, но для мапинга сложных форм нужно воспользоваться функцией авторазвёртки.

Давай разбираться, из чего состоит развёртка

Как ты видишь на картинке, у куба есть 8 точек и 6 квадратных полигонов. Теперь посмотри на развёртку, и увидишь, что на развёртке тоже 6 квадратов.

Смотри, на кубе 8 точек, а на развёртке целых 14.

Но количество точек на UV больше, чем на самой модели — на развёртке их целых 14. Чтобы понять, откуда они появились, выдели на кубе одну точку, и увидишь, что на развёртке выделится сразу несколько точек.

Одна точка на модели может иметь несколько точек на UV.

На самом деле, на пересечении полигонов происходит следующее:у каждого вертекса, помимо положения в пространстве и нормали (смотри прошлую статью), есть ещё один параметр — положение этого вертекса на UV.

В общем, если на самой модели ты видишь одну точку, то на UV при её выделении может появиться сразу несколько точек и каждая из них будет принадлежать полигону, который с ней связан.

Главное сейчас, чтобы ты понял — каждый полигон имеет своё место на UV как плоский объект, чтобы программа знала как класть текстуру на геометрию.

Итак, ты понял, что развёртка нужна тебе, чтобы текстурить модель. И каждый полигон твоей модели должен присутствовать на развёртке.

Очень скоро ты узнаешь, как положение объекта на UV влияет на поведение текстур. Так что идём дальше!

Как UV влияет на поведение текстур

Давай для примера возьмём кузов от нашего грузовичка.Наложим на него текстуру дерева.

Первым делом, давай сделаем авторазвёртку:

Наша простенькая моделька для примера c авторазвёрткой

Давай выделим на модели одну из дощечек и перенесём на UV вправо:

Двигаем объекты по UV

[ Свойство 1 ] Изменяешь положение объекта на UV — изменяешь положение текстуры.

Кстати, все объекты на UV называются UV шеллы (UV shell).

[ Свойство 2 ] Так вот, поворачивая шеллы, ты поворачиваешь текстуру на геометрии:

Измени размер UV шелла, и посмотри как изменились текстуры на объекте:

[ Свойство 3 ] Изменяя размер на UV, ты меняешь размер текстуры на модели.

Если гифок оказалось недостаточно для понимания, в этой статье мы добавили несколько наших видеоуроков про UV.

Это было краткое интро про то, что такое UV. Прежде чем мы пойдём дальше, к техническим нюансам, давай разберёмся, как текстурится модель, если у неё правильная развёртка.

Как красятся модели, имеющие развёртку
Открой Substance Painter или любую другу программу, которая создана для работы с текстурами. И загрузи в неё свою модель с развёрткой.
Если всё нормально, то красить будет одно удовольствие:

Но иногда встречаются странные вещи:

Что происходит? С кистью творится что-то очень странное!

Ответ лежит в UV. Для примера мы специально немного его попортили, чтобы ты увидел, как косяки на UV напрямую влияют на твои текстуры. А плохие текстуры испортят любую хорошую модель.

Тому, откуда берутся глюки на UV и как избежать их появления, будут посвящены все последующие разделы этой статьи.Будет и теория, и рекомендации для правильной работы.

Два вида мапинга

Без теории не обойтись.Когда ты разворачиваешь объекты на UV, есть 2 пути:

1) Сделать уникальный мапинг.

2) Сделать тайловый мапинг.

Прежде чем разбираться с каждым из них по отдельности, обрати внимание на следующее: на UV пространстве много квадратов. На самом деле, они бесконечны.

Бесконечное тайловое пространство. Квадраты никогда не закончатся, каждый из них повторяет текстуру из первого квадрата, а уместить развёртку нужно в квадрат 0-1.

Но нас особенно интересует именно первый квадрат на UV, который находится от 0 до 1. Имменно на него накладывается текстура, а на всех остальных квадратах текстура просто повторяется (про UDIM-ы сегодня говорить мы не будем)

Если ты разворачиваешь модель на UV так, что все объекты находятся в первом квадрате и не выходят за его пределы, это называется уникальным мапингом.

Делая hard surface или персонажей для игры, тебе нужно делать именно уникальный мапинг. А для объектов окружения, ландшафтов и зданий часто используется тайловый мапинг, хотя там тоже не всё так просто.

Давай начнём с уникального мапинга.

1 Уникальный мапинг

Как ты помнишь, один материал имеет всего лишь одну единственную текстуру. И она полностью растягивается на первый квадрат UV.

Теперь представь, что мы хотим замапить наш грузовичок. У него есть текстура с деревом для кузова и текстура с крашеным металлом для кабины (хотя на самом деле их гораздо больше).

В принципе, мы можем не заморачиваться. И сделать 2 материала. Один под дерево, другой под крашеный металл. И уже мапить объекты на эти 2 материала.

Но есть нюанс. Каждый новый материал — это лишний вызов отрисовки (draw call), который нагружает игровой движок. А мы моделим грузовичок для игры. Нам крайне важно использовать минимальное количество ресурсов.

Поэтому, вместо того, чтобы плодить кучу лишних материалов, мы делаем всего один материал. Сначала мы разворачиваем все объекты на UV, потом кидаем в фотошоп или Substance Painter и красим эти элементы по отдельности.

Кстати, на важные объекты для больших современных игр ты можешь добавлять по 3-5 материалов.

На выходе мы получаем одну единственную квадратную текстуру, сделанную специально для нашей модели.

Это и называется уникальным мапингом. Это технология, которая заключается в следующем:
— Мы мапим все объекты на UV только в первый его квадрат. Ни один из шеллов не выходит за его пределы, и шеллы не пересекаются (кроме оверлапов, о которых поговорим сегодня чуть позже).
— Объекты покрашены по-разному (кузов деревянный, кабина из крашеного металла). Причём это не повторяющиеся, а уникальные текстуры.
— Но на выходе мы имеем одну единственную текстуру (не считая карты нормали, рафнеса и металнеса, но об этом в статье про текстуры) и один материал, тем самым экономим ресурсы игрового движка.

2 Тайловый мапинг

Как ты уже знаешь, квадраты на UV бесконечны. Это значит, что текстура, которую ты положил в первый квадрат будет повторяться бесконечное количество раз. Это бесконечное повторение текстур называется тайлом.

Тайловый мапинг очень часто используется для развёртки зданий, предметов окружения и ландшафтов.

Представь, что мы хотим сделать развёртку этого дома:

Сначала мы создаём материалы с бесшовными текстурами.Потом кладём их на геометрию с помощью авторазвёртки (box maping).

И так делаем для каждого из объектов. Для стены дома — один материал с кирпичной кладкой. Для прилавка — другой материал с текстурой дерева. И так далее.

Ещё один момент — при тайловом мапинге сами UV шеллы могут выходить за пределы первого квадрата UV. Это нормально.

Зачем это нужно? Представь, что у тебя есть бесшовная текстура с кирпичом. Если развёртка всех стен будет в первом квадрате, то кирпичи будут слишком крупными (как ты можешь увидеть на гифке). Так как текстура с первого квадрата бесконечно повторяется, а у текстуры нет швов — мы просто меняем размер шеллов на UV и подбираем подходящий для нас размер.

В автомапинге не так важно как выглядит UV развёртка. В отличие от уникального мапинга, нет смысла умещать все шеллы внутри первого квадрата и экономить пространство на UV. Главное, чтобы текстуры выглядели аккуратно и без потягов.

Надеюсь, что сейчас ты понял разницу между уникальным мапингом и тайловым.

Вот так выглядит наш дом после развёртки и текстур.

Говоря про тайловый мапинг, есть один важный момент насчёт текстур.

Если ты не хочешь, чтобы при повторении текстуры были швы — используй тайловые текстуры, то есть текстуры без швов

Ты далеко не первый, кому они нужны, поэтому есть целый ряд библиотек с тайловыми текстурами. Вот несколько полезных сайтов, где ты их найдёшь:

Тайловая текстура, т.е. текстура, которая повторяется без швов.

Но есть нюансы. У нас в сцене есть несколько разных фруктов.

Кусок сцены с фруктами.

Как ты знаешь, каждый из материалов — это отдельный вызов отрисовки в игровом движке. Чтобы сэкономить ресурсы и не создавать под каждый из фруктов отдельный материал, мы сделали следующее: мы нарисовали одну текстуру и замапили на неё все фрукты. На самом деле это не сцена для игры, а демонтрация технологий, в игре мы бы почти все не тайловые текстуры засунули в один атлас, сделали бы его плотнее и аккуратнее.

Одна текстура — и сразу несколько покрашенных объектов. Это простейший атлас.

Атласы — это один из приёмов, которые часто используются в видео играх. Есть ещё тримы, но про них чуть позже будет в этой статье.

Раз речь зашла о текстурах, есть ещё один момент, который нужно знать.Лучше всего работать с квадратными текстурами.

Во всех программах на данный момент все текстуры растягиваются и полностью занимают первый квадрат на UV. Поэтому если текстура прямоугольная, то она растянется до квадрата.

Видишь, текстура некрасиво растянулась на UV. Всё потому что прямоугольные текстуры растягиваются до квадрата.

Иногда для экономии видеопамяти используют прямоугольную текстуру (например 1024х512 или даже 2048х256. Да, так тоже бывает!) Такая текстура все-равно растягивается до квадрата, и для неё очень важно правильно растянуть развертку.

Кстати, насчет разрешения текстур: из-за особенностей цифровых вычислений, разрешение текстур всегда стараются делать кратными степени двойки. То есть сторона текстуры может быть 32 пикселя в ширину. Или 64, 128, 256, 512, 1024, 2048 или, даже, 4096 пикселей. Как я писал выше, текстура может быть прямоугольной, например 512х256, или 512х128, но, как правило, их делают квадратными.

Текстуры кратные степени двойки заполняют целые ячейки видеопамяти. Если вместо текстуры 1024х1024 засунуть в движок текстуру размером 1000х1000 — она не заполнит всю ячейку видеопамяти, её обработка потребует чуть больше ресурсов от видеокарты, и из-за такой мелочи игра чуть-чуть потеряет в производительности. Эти потери очень несущественны и почти не заметны, но рендер видео игр — это всегда борьба за оптимизацию, и поэтому все разработчики игр ни секунды не сомневаются, что текстура в 1024х1024 лучше текстуры в 1000х1000.

Совет: старайся использовать квадратные текстуры, а прямоугольные лучше, по возможности, сделать квадратными.

Про текстуры пока что всё, давай вернёмся к UV, ведь про текстуры у нас будет отдельная, не менее огромная статья 🙂

Как правильно работать с UV

Сейчас мы разберём несколько приёмов, которые всегда используются при работе с UV. Они помогут сэкономить пространство и упростить процесс текстурирования.

Оверлапы сэкономят пространство на UV

Если на твоей модели есть одинаковые элементы, например, болты на обшивке, то на UV их можно размапить на один и тот же UV shell. Просто посмотри видео, там всё рассказано:

Симметричные объекты также можно оверлапить.Про это ты можешь узнать больше в этом уроке:

Дальше нас ждут тайлы, тримы и атласы.Они часто используются для объектов окружения, зданий и ландшафтов. Но, например, тайлы иногда бывают очень полезны и для hard surface моделей, и персонажей. Давай узнаем что это такое.

Тайлы, тримы и атласы

Как ты помнишь, текстура из первого квадрата UV повторяется бесконечно на все другие квадраты, и это называется тайлом.

Тримы используют это бесконечное повторение, чтобы более эффективно использовать ресурсы игрового движка.

Тримы — это те же тайлы, но повторяются они не во все стороны, а только по одной оси.

Трим дерева на лестнице. С атласом тримов мы можем размапить лестницу любого размера, и на ней никогда не будет швов.

Есть история, как крутой моделлер покрасил целый игровой уровень, используя всего 2 атласа. Как он это сделал, мы рассказали в этом уроке.

Итак, ты уже много узнал про UV, но это далеко не всё.

Важно не только уметь разворачивать объекты, но и проверять UV на косяки. А по ходу работы их будет много. Давай разберёмся, как это сделать?

Как проверить развёртку на ошибки

Помнишь нашу гифку, где при покраске модели творились странные вещи. Давай ещё раз на них посмотрим:

Такое происходит, когда у тебя есть ошибки на UV, например, текстуры могут растянутся, это называется «потягами на UV». Помимо потягов есть ещё несколько ошибок, которые мы разберём в этой статье чуть позже.

Хорошая новость — во всех программах есть «чекер». Это текстура с шахматной доской, которую используют для проверки развертки.Он выглядит вот так:

Так выглядит чекер. Здесь он везде без потягов и одного размера, значит ошибок на UV нет.

Если квадраты на чекере искажены, то при текстурировании возникнут проблемы.

Идеальная развертка — когда все квадраты чекера ровные.

Запомни, когда ты сделал развёртку, обязательно проверяй чекер.Если нашёл ошибки — исправляй!
Кстати, в программах есть функция, которая поможет тебе быстро исправить ошибки на UV.

Функция Unfold поможет исправить ошибки

Unfold есть во всех программах.
Если ты увидел, что чекер неровный — жми волшебную кнопку.Программа всё исправит.

Но ей тоже нельзя доверять на 100%. Сложные формы анфолд не сможет исправить, и придется резать UV.

Как ты уже понял, взять свою лоуполи, сделать авторазвёртку, а потом нажать Unfold — это далеко не всё. Тебе нужно выбрать способ мапинга твоей модели, правильно развернуть все элементы, сделать оверлапы, если они необходимы, уместить все шеллы внутри первого квадрата (и ещё много всего другого).

Работы много, и плохая развертка может попортить жизнь на текстурировании, поэтому UV — очень важный этап пайплайна.

Твоя задача на этом этапе

Сейчас ты понял основы работы с UV.Давай подведём небольшой итог, что конкретно ты должен сделать на этом этапе пайплайна, чтобы с текстурами не было проблем.

Прежде чем ты получишь целый ряд советов по правильной работе с UV, давай разберём самые частые ошибки новичков.

Частые ошибки на UV с примерами

Потяги на UV — чекер не квадратный

Если видишь нечто подобное — исправляй через Unfold.Если он не поможет — исправляй руками.

Кстати, у нас есть классный урок на эту тему:

Здесь мы много писать не будем — и так всё ясно.

2 Квадраты чекера разного размера

Чтобы ты понял, почему квадраты чекера могут быть разного размера, тебе нужно знать, что такое тексель.

Тексель — это количество пикселей на метр (или сантиметр, или дюйм — в зависимости от проекта).

Тексель показывает, насколько детальной будет текстура.В шутерах тексель высокий, так как игроки могут сильно приближаться к объектам. В играх от 3 лица тексель немного ниже, а в стратегиях тексель еще ниже.

Очень важно, чтобы объекты переднего плана имели одинаковый тексель. А объекты среднего и дальнего плана зачастую имеют более низкий тексель, так как им не нужна такая высокая детализация.

Примерные цифры. Для каждого проекта тексель отличается и высчитывается тех. директором

Если рядом находятся объекты с разным текселем, то один будет выглядеть очень детализированным, а второй — мыльным. Поэтому на проектах следят за текселем, чтобы картинка была гармоничной.

Как тексель связан с UV?

Когда ты правильно сделал развёртку, квадраты чекера будут одного размера.Если ты сделаешь один из шеллов меньше, то квадраты чекера увеличатся, а тексель уменьшится.

Меняем тексель на UV шеллах

Теперь важный момент.

Если ты моделишь грузовичок, то хорошая практика — на днище грузовичка сделать тексель меньше, потому что игроки вряд ли его увидят в игре. Тем самым ты сэкономишь место на юви для чего-нибудь более важного.

Запомни — изменять тексель нужно осознанно.

Когда ты меняешь тексель, ты должен точно понимать, зачем ты это делаешь.

Подробнее про тексель мы рассказали в этом уроке:

3 Слишком много свободного места на UV пространстве

Здесь слишком много свободного пространства на UV. Нужно увеличить размер всех шеллов и перепаковать их, чтобы они полностью заняли первый квадрат. Тогда будет выше тексель и текстура будет более детализированной

Текстуры дороже геометрии, поэтому текстурное пространство очень ценно.Мы стараемся заполнять его как можно плотнее, чтобы максимально эффективно использовать данные нам ресурсы.

4 Объекты на UV пересекаются

Никогда не пересекай UV шеллы. Это приведёт к артефактам на текстурах.

Исключения из этого правила — оверлапы.

В них ты осознанно накладываешь шеллы друг на друга. Зачем это нужно, мы уже писали в этой статье.

5 Кривые оверлапы

Когда объекты не идеально лежат друг на друге, могут появиться швы или некрасивые артефакты на текстурах.

Всегда проверяй оверлапы, которые делаешь.

С частыми ошибками разобрались.Пришло время понять, как правильно работать с UV.

Этот порядок действий не универсален. У каждого моделлера свой подход, но суть примерно та же. Если ты не мастер UV, то лучше сохрани этот небольшой чеклист для самопроверки.

Советы по правильной работе с UV

1 Обрезай сложные формы

Большие стенки нужно обрезать, иначе могут появиться потяги на UV.Ты сразу увидишь — в таких местах чекер будет неровным.

Давай разберём этот момент на примере нашей модели.Если мы просто сделаем авторазвёртку этой детали, то мы увидим потяги:

Что делать? В UV редакторе есть функция Cut. Просто сделай разрезы на больших деталях:

На торцах остались артефакты, отрезай их в отдельные шеллы:

В результате мы избавились от потягов, сделав всего 3 разреза (кстати, очень важно делать как можно меньше разрезов на юви — так на текстуре будет меньше швов):

Вывод: разрезай на UV сложные формы.

2 Когда размер квадратов можно увеличить или уменьшить

Когда делаешь UV, твоя задача на старте — сделать чекер везде ровным и получить квадратики чекера одинакового размера.

Если ты увеличиваешь или уменьшаешь размер шелла на UV, то размер квадратов чекера тоже меняется.

Давай разберёмся, когда и зачем нужно изменять размер шеллов?

Когда разрешение текстур можно уменьшить?

На деталях, которые не видно игрокам. Пример — днище автомобиля. Игроки его не видят, поэтому ты можешь сэкономить ресурсы и изменить размер объектов на UV. И чекер в таких местах будет меньше, чем у всей модели.

Это делается для того, чтобы сэкономить бесценное юви пространство.

Когда разрешение текстур можно увеличить?

Обычно его увеличивают в самых важных и заметных частях модели, а так же для надписей/символов. Это не нужно делать на каждой модели. Но если моделишь что-то очень важное, например, дробовик с которым бегают игроки, то разрешение текстур на его верхней части можно увеличить. Тогда чекер будет меньше, а текстуры в этом месте будут более детальными.

3 Добавляй отступы на местах швов

Минутка теории (не считая 20 минут уже прочитанного текста). В игровых движках текстуры теряют разрешение на расстоянии. Чем дальше объект от камеры, тем ниже разрешение текстур. Это называется в трёхмерке MIP Map.

Пример того, как текстуры теряют разрешение на расстоянии.

Давай разберёмся как это связано с UV.

Нельзя мапить объекты на UV вплотную друг к другу.

Чтобы при MIP мапах, т.е. удалении объектов от камеры, соседние объекты не брали информацию друг от друга. Это особенность игровых движков, которую нужно знать.

Всегда нужно оставлять небольшой отступ между UV шеллами. Этот отступ называют паддингом (padding).

Если этого не сделать, то на местах стыков объекты при MIP мапах появятся некрасивые швы.

Поэтому всегда добавляй отступы между объектами на UV.

Если хочешь узнать больше, вот урок на эту тему:

8 Отрезай все острые углы и углы под 90 градусов

Это нужно, если ты запекаешь нормал. В 90% случаев, если ты работаешь по пайплайну, то ты будешь запекать Normal Map. Про запечку (backing) как раз будет в следующей статье. Так что эта рекомендация тебе пригодится.

Если ты внимательно читал прошлую статью про сетку, то ты уже знаешь, что такое hard edge и soft edge.

С хардами тоже есть моменты, при работе с UV. Когда печешь нормал, на месте харда должен быть обязательный разрез на развертке (или вместо харда стоит сделать софт), а иначе нормал запечется со швом.Обязательно посмотри это видео, если хочешь понять, как правильно работать с хардами:

Всегда нужно отрезать острые углы и углы под 90 градусов. Они не запекутся на следующем этапе, и на модели опять появятся некрасивые швы.

Более подробно про шейдинг хардов мы разобрали в этом уроке:

А вот что будет, если ты неправильно работаешь с хардами:

Видишь швы на бочке? Их быть не должно.

В этих двух видео (которые были выше) мы рассказали как это работает, так что идём дальше.

9 Как разворачивать цилиндры

Авторазвёртка добавляет кучу лишних шеллов, лучше размапить в прямую линию.

Стенку цилиндра мы мапим в прямую линию. Обрати внимание, на юви много тонких прямоугольных шеллов — их очень удобно паковать вместе.

10 Неровную линию нужно мапить как прямую на UV

Если линия неровная, она занимает много места на UV, поэтому лучше размапить её как прямую — ведь прямоугольники очень легко паковать.

Небольшие неровные линии отлично мапятся в прямые. Так их легче паковать.

Мы сделали UV, что дальше?

1) На следующем этапе мы будем запекать детализацию с хайполи на лоуполи.
2) Потом сделаем текстуры для нашей модели
3) А в конце нас ждёт подача модели, чтобы сделать сочный скрин для твоего портфолио.

Даты писать не будем — мы в них не попадаем (работы много, курсы, все дела, не успеваем статейки писать)

И обязательно вступай в группу в ВКонтакте и группу в Фейсбуке, чтобы не пропустить следующий выпуск!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *