Текстурирование руками программиста
Хочу поделиться знаниями, которые могут кому-нибудь пригодиться.
Предупреждаю: вступление длинное, дабы отсеять людей, которым статья просто не нужна.
Ремарки о грамматике и пунктуации приветствуются.
Стоит пояснить название, что если вы - художник, то текстурировать вы будете руками программиста, который писал ПО, которым вы воспользуетесь.
И так, для кого статья:
- для программистов, которые ищут художника, для реализации графической части своей готовой, или только запланированной игры, и совершенно не слышали о процедурном текстурировании, или не "попробовали" себя в этом безумно интересном деле.
- для художников/дизайнеров, сталкивающихся со сложностями в создании современных наборов текстур (bump, normal, specular, metalness, curvature, albedo ~= diffuse, color (разметка материалов), object-space maps), или попросту бесшовных текстур.
I. Процедурное текстурирование.
Проще говоря: создание текстур, программными, "автоматическими" методами.
Наверняка вы слышали о нем, и может даже пробовали ( если вы - программист) писать генераторы шума Перлина, или диаграммы Вороного, но не думаю, что самописные генераторы способны удовлетворить современным меркам качества, требованиям реализма и т.д. Потому, остается только стороннее решение. Если вы - художник, пропускайте следущий текст, и переходите сразу к пункту II.
Для начала:
- Выберите стилистику (условные примеры: Sci-Fi + фотореализм, Фэнтези + Casual Cartoon, Top-down + Дарк Фэнтези)
- 2D или 3D?
- есть ли у вас освещение ( в 2D оно тоже бывает, и смотрится очень даже хорошо ), отражения, сложные графические техники, требующие определенного типа текстур ( в 2D с освещением normal map, как мне кажется, must have. А современная 3D игра в фотореализме уже неторт без normal + specular на каждом листочке каждого кустика минимум)
- Если 3D - есть ли у вас 3D модели и, упаси господи (простите, я агностик, наверное ), анимация к ним? Если нет - текстурирование хоть и очень важно, но вторично в вашем случае, закрывайте вкладку, ищите ( или создавайте ) 3D модели и ( самое, на мой взгляд, сложное ) анимацию.
- Вы владеете базовыми навыками фотошопа, слышали о масках, альфа-канале и т.д. ?
Если вы прошли эти пункты, и еще здесь, значит в этой статье вы почерпнете для себя что-то новое, что вам наверняка пригодится.
Если вы - 3D-моделлер, вы наверняка видели в своем 3D-редакторе ( Blender, 3ds-Max, Maya ) генератор текстур. И как вам качество? Мне кажется что возможности довольно узкие, или порог вхождения не стоит результата, каждую текстуру придется собрать самому, и потратить на каждую отдельную кучу времени и сил.
Зато у вас есть некоторое преимущество над программистами и художниками, если у вас есть исходная high-poly и low-poly модель, вы сможете получить все необходимые карты для работы, например, в ddo ( Object-space map, base normal map, ao map, curvature map и т.д.)
*Если найдется статья, из которой я узнал основы о procedural texturing, она будет здесь*
Кратко из статьи:
Плюсы генерированных текстур:
+ Бесшовность
+ Гигантские размеры ( до 64к )
+ Готовые наборы многих видов текстур ( diffuse + normal + specular + metalness и т.д. )
+ Внесение правок во все виды текстур одновременно
+ Легкость и скорость создания ( нарисовать от руки в любом случае сложнее и дольше, как не крути )
+ Множество вариантов одной текстуры ( в Filter Forge при 1 рандомном компоненте = 30к вариантов )
+ Вариативность вдоль самой текстуры ( очень полезно в мегатекстурах ландшафта )
+ готовая покадровая анимация
минусы:
- большой размер => требуют много памяти
- гиперреализма достичь довольно трудно, но вполне возможно ( P.S. да, ddo не генерирует с нуля, я в курсе )
- Генерировать на лету - просто не выгодно, или невозможно ( сугубо личное мнение )
- Рендеринг текстур жрет много ресурсов
- Сложность в освоении ПО, алгоритмов, техник
Что легко создать с помощью процедурных текстур, а что сложно?
Сильно зависит от стилистики, возьмем сложную задачу - фотореализм, фентези ( много органики ).
Легко:
- Материал предмета, преимущественно неорганический (метал, дерево, камень, кожа, ткань, краска, шпаклевка, асфальт, бетон, лава)
- Некоторые отдельные части живого существа ( зубы, глаза)
- Многие виды частиц ( Particles ), в готовом виде (электрические дуги, облака, вспышки, огонь, дым )
- Колейдоскопо-подобные картины, некоторые виды фракталов и другие основанные на паттернах текстуры
- Составные части ландшафта ( земля с камешками, травой, валяющимися листьями, снегом или песком )
- Космические тела, и космические ландшафты
Работая в ddo/Quixel Suite :
- Современные текстуры материалов, со всеми необходимыми видами текстур, с потертостями и ржавчиной, беспорядочной, по всей площади
имея Color map:
- Комплексную текстуру, в которой может быть одновременно пластик, кожа, метал, камень и т.д. А царапины все еще беспорядочны, в рамках каждого материала
еще базовую normal map:
- Можно выбрать готовый комплексный материал, и "потертости" ( мелкие детали, вторичный материал ) будут там же, где и на превью-модели
имея high-poly исходник 3д модели, разбитую на объекты, покрашенные в цвета, соответствующие Color map, и low-poly модель, в размере 1 к 1 к high-poly, object-space map, base normal map, occlusion map:
- Всё, что угодно ( в рамках библиотеки материалов, которую можно расширить самому )
Работая в Filter Forge :
- Всё, что есть в библиотеке, и вашего владения данной программой. для художников: включая пост-обработку изображений, например: пикселизация,дождевые капли
имея лицензионную версию FF (Filter Forge), и зная XML или пользуясь любительским GUI :
- Рендерить множество текстур подряд, в простонародии - Batch processing, включая покадровую анимацию ( рендер карт в духе diffuse + normal и так доступен в professional trial и pirated версиях )
Владея масками в фш и созданием фильтров в FF :
- очень широкие возможности ( маски + фильтры FF )
III. Программное обеспечние
- ddo, входящий в Quixel Suite.
( субъективно ) Самое современное ПО для создания полного набора текстур. Делаете фотореализм? Вам сюда.
- ndo2, так же входящий в Quixel Suite.
( так же ) Лучшее ПО для создания normal map из фото, или из ничего, или конверсии между картами. Есть diffuse, нужны normal, specular и т.д. ? Вам сюда.
ПО, для генерации материалов, материалы совместимы с Unity3D и UE 3-4. Знаком крайне поверхностно, низкая производительность в купе с сложностью в основах сильно оттолкнули.
ПО, автоматизирующее операции, возможные в PS(Photoshop, уровни, контраст, маски, RGB-операции), и оборачиваюшее всё в Node-программирование.
для генерации с нуля, в основе есть: шум Перлина, диаграмма Вороного и еще с 5ку других алгоритмов, с гибкими настройками, базовые 2д примитивы, моделирование освещения, система партиклов, работа с несколькими исходниками в одном фильтре, bezier и заготовленные кривые, циклы, multisamling, antialiasing, поддержка multicore-процессоров. Важное преимущество FF - большая библиотека готовых фильтров, доступных даже из trial версии, лучшие из которых вы найдете здесь
многие частичные задачи можно решить с помощью filter forge, например, я написал фильтр, "сшивающий" 3 текстуры ( делает их бесшовно-стыкуемыми между собой ) и создает на их основе случайный атлас, со всеми наиболее необходимыми тайлами, подробнее в описании и примеры готовых атласов на форуме.
Всё зависит от поставленной задачи, ваших навыков / знаний / опыта в FF и в процедурном текстурировании в общем. Ежедневно ставят низкоуровневые, но комплексные задачи, приходится много работать в PS, Action слишком накладно и муторно записывать, или ищете ....... текстуру или пост-эффект ? Вам сюда.
Пока что всё. Всем удачи в творчестве и труде.