Модульное окружение в UDK

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

Предисловие
Это руководство является результатом приобретенных знаний в процессе производства Zest Foundation.Этот проект начался с простого и непринужденного изучения модульных sci-fi элементов и быстро превратился в один из моих самых больших личных проектов на данный момент.

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

Для этого окружения я использовал: 3ds Max для моделирования, Photoshop для текстурирования и UDK для визуализации. Я старался, чтобы все части были довольно универсальны для других движков или 3d пакетов удобных пользователю.

Я надеюсь, вы узнаете кое-что новое для себя , и мне было бы любопытно посмотреть, что вы сделаете ,используя методы, представленными в данном руководстве. Присылайте мне любые WIP’ы или финальные скриншоты на почту @ thiagoklafke.com, я буду очень рад видеть их!

Планирование
Одним из наиболее важных шагов при работе с модульными сетами — прикладывать больше времени планированию. Вы всегда должны экспортировать свои сеты в редактор для создания структур на ранних этапах. Это нужно,чтобы проверить такие аспекты, как:

1.Удобство использования
2.Повторение
3.Виды и формы
4.Композиция

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

Начиная ваш сет

Одной из моих целей с Zest Foundation — было создание большой окружающей среды, используя небольшой набор текстур. Таким образом, было бы легче держать общий вид окружающей среды в соответствии, а также для сохранения памяти текстуры и времени.
Одной из идей было определение списка категорий, которые понадобятся на ранней стадии.Подразумевая это шаг, как слова (единицы), вы будете в дальнейшем использовать для создания полные предложения (группы единиц). Сама среда будет как книга, состоящая из различных пунктов (разделов). (Я надеюсь, что это имеет смысл).
Для Zest Foundation я использовал 3 категории:

1.4 направления тайленных стен
2.Отделка
3.Пол

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

Строение папок и согласование названий

Работа в организованной среде является очень важной для художника. Это очень личное, но моя структура папок для такого рода проектов, как правило, следующая:
ProjectName/Meshes
Расположение max/maya файлов
ProjectName/Textures
PSDs, TGA , прочее…
ProjectName/ASE
Расположение ASE файлов (которые потом импортируются в UDK — вы также можете использовать FBX если пожелаете, но обычно это доставляет мне неудобства)
ProjectName/Media
WIP скриншоты для темы на форумах, прочее..

Мои текстуры сохраняются следующим образом: texturename_map.
Пример: wall01_d, wall01_n, etc…

Внутри UDK я люблю использовать следующую структуру для моих пакетов:

1.Meshes
2.Materials
3.Prefabs
4.Textures

Все остальное, как пост-процессы, может пойти в корневую папку.

Использование сетки

Это очень важно, соблюдать границы объектов внутри сетки, в противном случае вы получите много крошечных промежутков, когда тайлите их.
Мои «snap to grid» настройки очень просты : привязка только к точки сетки.Я также люблю использовать кратность двум для «home grid spacing». Это облегчает работу при увеличении или уменьшении шага сетки. Пример: Если вы начинаете со значением сетки 8, вы можете уменьшить его до 4, 2, 1. Если вы начинаете со значением сетки 5 (без разницы), у вас не получится округлить значения, и они будут иметь вид : 2,5, 1,25, и т.д. … You get the idea.(непереводимая игра слов — прим. перевод.)

Ограничительные рамки и контактные центры

Все части ограничительных рамок должны быть выдержаны в соотношении 1х1. Даже если вы делаете поверхность изогнутую на 90 °, ограничительные рамки все равно должны соответствовать соотношению 1×1.Совет — всегда используй кубики, чтобы проверить,как находятся сеты, и соблюдается ли соотношение 1х1.

CREATING MODULAR ENVIRONMENTS IN UDK - перевод на русский
Не обязательно иметь x,y,z координаты внутри соотношения 1х1.Иногда достаточно x и y.Это актуально для сетов стен, которые были сделаны из плоскостей.Вы можете делать что угодно внутри плоскости, но контактные точки лучше оставить не тронутыми.
CREATING MODULAR ENVIRONMENTS IN UDK - перевод на русский
Скачать сцену
Зелёная плоскость показывает, где расположен pivot.

Пример 1: Идеальный сценарий. Все внешние вершины в той же плоскости, что и pivot и у вас не будет проблем при комбинировании этого с разными сетами.
Пример 2: Худший сценарий. Нет внешних вершин пересекающих плоскость pivot’а. Вы можете комбинировать это только с такими же сетами.
Пример 3: Относительно нормально — Если вы попробуете скомбинировать это с «Пример 1» у вас получиться разрыв. Вам понадобятся дополнительные куски для комбинирования этого с другими объектами.
Пример 4: Относительно нормально- Вы можете скомбинировать это с «Пример 1» по горизонтали, но не по вертикали.Вам также понадобятся дополнительные куски для заполнение разрывов между кусками возле пола и потолка.

Некоторые части используемые в Zest Foundation.
Часть пола размером 2×2. Как и все остальные части, контактные точки имеют квадратные размеры.
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Размещение Pivot

Размещение Pivot’а очень важно потому , что это решает, на сколько легко будет размещать ваши сеты на локации. Главное правило — размещение на конце плоскости.Некоторые люди предпочитают располагать его в центре предмета,но я не думаю , что это лучшее решение, потому что это делает повороты и изменение размеров немного сложнее.
Пример:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Поместите его в нужном месте и это позволит легче его вращать и создавать разные интересные комбинации:
1CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Совет: Когда работаете с большим количеством стен старайтесь размещать pivot в том же месте для всех частей. Это облегчает замену юнитов в редакторе.

(Ре)используйте ваши текстуры умным способом

Как я сказал ранее,большинство объектов используют одинаковую текстуру.Типичный юнит стены в Zest Foundation был создан из 2х текстур: 4х направленная тайленная текстура + текстура отделки. Я всегда стараюсь иметь минимум 1 вид отделки когда работаю над текстурами или объектами : они помогают визуально добавить вариативности и согласованности кускам. Вы также можете делать практически все, что вы хотите, при наличии хорошей коллекцией текстур отделки.

Вот разбивка некоторых элементов:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Вот другой пример, на этот раз из двух потолочных кусков. Обратите внимание, как отделка текстуры с решеткой выглядит по-другому, когда отображается на круговой геометрии:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Этот кусок стены был построен с использование лишь отделочной коллекции. «Vertex color» был использован для подкрашивания некоторых частей:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Коллекция отделки также была использована на реквизитах. Использование уникальных текстур для вещей- хорошая идея.
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Раскраска вершин

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

Раскраска вершин хорошо работает в UDK но я нашёл небольшой баг: они не затрагивают lightmass. Обнаружил я это только после того, как закончил с окружением,поэтому, если вы собираетесь раскрашивать большие площади, может быть хорошей идеей использовать цветную текстуру вместо этого.

Один из объектов, где раскраска вершин широко применяется:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Включить раскраску вершин в UDK материале достаточно просто:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Другие вещи, которые вы можете сделать с помощью вершинных цветов:
Умножьте его с зеркальной картой и вы получите цветную зеркальность
Используйте его как маску, чтобы смешать две текстуры
Совет: Вы также можете использовать раскраску вершин, используя отдельную маску,для этого используйте lerp ноду внутри редактора материалов.

Пользовательские Cubemaps

Иногда лучше использовать сгенерированную cubemap для рендеринга в UDK или другие cubemaps созданные на базе текущей локации. Я узнал, что cubemaps созданные в текущей локации лучше работают со стеклом или похожим материалом.Метал же, одинаково реагирует с разными видами cubemap.

Собственные cubemaps созданные для Zest Foundation достаточно просты.Я сделал скриншот локации и сильно его изменил.Основная идея этой цели была- добавление бликов на поверхности, а не фактического отображения информации.

Вот простая cubemap с несколькими простыми засветами:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Другая cubemap использует комбинацию вышеуказанную cubemap и скриншот уровня:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Настройка материала в UDK является немного сложнее.Прежде всего, необходимо будет создать реальный объект CubeMap. Сделайте так, щелкнув правой кнопкой мыши обозревателя содержимого и «создать новые TextureCube». Затем установите все грани cubemap и сохранить его.

Типичный материал с включённый cubemap выгляди следующим образом (cubemap mask сохранена в Альфа канал «Emissive/CubeMap Mask» текстурного образца):
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Результат:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Другой пример. Вот простой cubemap ,был добавлен небольшой слой зеркальной карте:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Результат:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Использование Bend Модификатора — правильный путь

Bend модификатор очень мощный инструмент в 3ds max, но большинство людей не знают как правильно его использовать. Он не очень точен, и вам нужно будет доработать немного геометрию, но как только вы научитесь, вам будет легче с этим работать.

Совет: Если вы моделите объекты для UDK, вам нужен будет 2й UV канал для lightmap координат.Сделайте это до того как согнёте вашу геометрию.Bend модификатор не уничтожит её.

В качестве примера, я сделал 90º кривую из этого куска размером 1х1 (обратите внимание на 2й канал UV карты в стеке модификаторов):
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Добавьте модификатор «Edit Poly» и создайте вертикальные петли используя соединения грайней. Чем больше петель сделаете, тем более круглой будет часть.Старайтесь оставлять одинаковые расстояние между петлями:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Теперь мы готовы начать изгиб геометрии.Я хочу сделать аккуратную короткую кривую, поэтому я добавил референсный куб, с длиной/шириной в половину от 1х1.Края этого куба представляют точки соприкосновения окончательной изогнутой геометрии.Вы также можете дублировать оригинальную геометрию, повернуть её на 90° и поместить на другом конце куба.Убедитесь, что точка pivot’а геометрии соответствует стартовой кривой.
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Примените модификатор bend.Для этого куска я установил кривую на оси Х и под углом -90 градусов.Настройки по умолчанию выглядят не достаточно приемлимыми, поэтому нужно их подкорректировать:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Для этого , разверните модификатор «Bend» и выберите «gizmo». Положение «gizmo» контролирует профиль изгиба. В данном случае я должен был переместить его по оси Х до тех пор, пока на краю не закроется щель:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Сейчас пойдёт рутинная часть. Перейдите в вид сверху , и увеличьте зум, до тех пор, пока не начнёте отлично видеть конечную точку кривой. Вы увидите, что есть небольшой зазор.Хитрость тут в том, чтобы переместить gizmo небольшими приращениями, используя инструмент трансформации в нижней части экрана. Чем сильнее вы увеличиваете, тем точнее вы можете выставить положение (убедитесь, что у вас всё ещё выбрано bend gizmo).
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
После того как закончите,добавьте edit poly, выберите вершины на краях и проверьте, лежат ли точки на сетке. На примере, вершина лежит в точке -639,99 по оси Х.Округлите до -640, и она отлично ляжет на сетку:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
Скачать пример.
Другие части построенные по этой технологии:
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

Baking Tiling Textures
(запекание тайловых текстур)
Большинство текстурных карт использованных в окружении , были запечены из hi-poly геометрии.Хитрость в том, что бы запечь геометрию в виде плоскости.Таким образом у вас будут тайловые текстуры, которые вы можете использовать как вам угодно.

Один из hi-poly объектов (этот был «выдавлен» перед запекание во избежание АО нарушений):
CREATING MODULAR ENVIRONMENTS IN UDK - русский перевод

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

CREATING MODULAR ENVIRONMENTS IN UDK — русский перевод
Перевёл на русский язык RedComrade © 2015 год.


Читайте также: