Тогда приступим, че откладывать-то - это надолго Но наверное легче будет показывать, походу рассказывая. Думаю это пригодится и тем кто вообще боится текстурирования. Буду делать ту же мину
1) Перво-наперво делаем высокополигоналку (в моем случае мидл-поли).
Не стал искать чертежи, а так как фото не особо информативное пришлось придумывать как делать дно. Результат ниже:
2) По высокополигоналке создаем лоу-поли для использования в игре.
Aevien, вы я как понял делали мину из 32-гранного цилиндра, мне хватило 16-гранного+ все выступы заменил нормалями. Итог - у вас 512 треугольников, у меня 184. Даже если добавить треугольников на уменьшение угловатостей все равно 512 не наберется. Почему у вас так произошло? Потому, что вы добавили лишних деталей вот здесь:
Мне тоже хочется делать высоко-детализированные модели и использовать их в играх, но реалии таковы, что на такую мину в игре прийдется не 512 трисов, а раза в 3 больше. Игровые подсистемы графической визуализации полигоны не считают, к сожалению, а считают простейшие геометрические фигуры состоящие из 3 точек, 3 ребер и 1 плоскости - треугольники (трисы). А если и поддерживают полигоны, то в итоге все равно при импорте разбивают на треугольники. Вот допустим: загрузили модель в движок - получили 512 трисов, добавили источник освещения (ИС) получили еще 512 трисов - если объект попадает в зону действия источника количество треугольников в его геометрии умножается на 2. Если объект на уровне и не попадает в зону ИС - его геометрия не умножается. Второй важный фактор - шедоу-маппинг - динамические тени в простонародье. Думаете они просто отбрасываются ИС и все? ничего подобного - полигонаж тоже добавляется: тени строятся трисами. Во всяком случае как показал CryEngine3 в сцене с 1,8 млн. трисов на построение теней уходит 600-700 тыс. трисов, все остальное сложные шейдерные еффекты. Хотя реальной геометрии там от силы 200-250 тыс. в кадре. Обыдно... Третий важный фактор - сложные шейдерные эффекты. Отражения, преломления и прочая муть. Если подвести итог, то мина (в 512 трисов) в игре будет занимать около 2000 трисов. Ого, блин! Чет я отвлекся
3) снимаем карты амбиент окклюжна и нормал-маппинга.
Я накосячил с нормальками , т.к. делал быстро, но думаю в редакторе подрихтую. Вобщем получился вот такой фуфломицин Но под пиво прокатит - литров так под 6:
Все знают для чего карта нормалей - объяснять, наверное, не стоит. Далее запекаем амбиент окклюжн:
Для чего нужна эта черно-белая карта? Она симулирует отраженное затенение, показывая глазу как расположены поверхности относительно друг друга. Область ее применения - это важнейшая составляющая диффузной текстуры. Aevien, если вы не возражаете, я рассмотрю текстуру, которую нашел в вашем архиве и разберем ее на предметы ошибок. Думаете я никогда не запекал текстуры методом FULL RENDER? Запекал, запекал - неблагодарное это дело, скажу вам.
1 - дно мины темнее чем верхняя крышка 2, 5 - кольцевая ямка постепенно высветляется 3 - на боковине появилось световое пятно 4 - все углубления освещены и затенены по разному. Нормал-мапа выполняет эту функцию - она показывает игру свето-тени, но не диффузка 6 - с ручкой опять та же беда - засветы-пересветы. Самый главный изъян Full Render'a - то, что он запекает освещение на модели, из-за чего и получаем такую мрачную картину.
4) Изготовление карты диффуза
Ищем в сети подходящий материал - не фотографию мины сбоку и сверху, а в данном случае материал - зеленый пластмасс, во всяком случае так я вычитал на одном из сайтов: "Противотанковая неметаллическая мина YM-III. Корпус мины полностью неметаллический, металлические компоненты присутствуют только во взрывателе. Страна-разработчик: Иран (копия китайской мины Type 72). Применялась в: Афганистане, Боснии, Хорватии. Иране, Ираке. Вес: 7 кг. Взрывчатое вещество: 5,7 кг.... " Я взял текстуру пластмассы на CG Textures.
Затем в паинт-нете настроил оттенок и освещенность
И вообще на будущее: никогда не упирайтесь в базовую текстуру материала - эксперементируйте, смешивайте, лепите как из пластилина - покажите кто в доме хозяин. А то начинается: я не смог найти подходящую текстуру, помогите, будь ласка Сам никогда не работаю с чистым материалом - смешиваю по 3, а то и больше. Короче - делайте ваши текстуры интересными О как раз нашел еще одну текстуру ну и переделал. Интересно каким же будет симбиоз? Пришло время замечательной проги PhotoFiltreStudio - вот это тема. Прога не бесплатная если что... но мы то знаем, что надо делать в таких случаях Не я не пропогандирую - эт только в частных случаях: если нельзя, но очень хочется. Фишка в том, что мы через основную текстуру начинаем прорисовывать другую - получается очень даже неплохо. Полученную текстуру отправляем в Paint.NET и открываем там же нашу карту амбиент окклюжн. Послойно блендим их в режиме умножения - верхний слой материал, а нижний карта окклюжна. Рихтуйте карты в процессе блендинга, не бойтесь: окклюжн слабовато отрисовал шурупы на донышке, я их выделил, поиграл с контрастностью и вуаля - теперь они глаза режут , а недавно были еле заметны. Те затенения которые мне не нравятся: темные - осветляю, сильно светлые - затемняю. Как-то так. Вот как работа выглядит на данном этапе:
И заметьте: такое может делать абсолютно любой - особых талантов не надо... разве что желание А ну глянем, что у нас
Под пиво прокатит, а если еще на халяву, так и подавно. Слишком темная? Не вопрос
Осталось разве что потертости дорисовать, карту спекуляра и можно в эксплуатацию сдавать.
5) Конкретная оптимизация текстурных разверток.
- только на крайний случай Всем бы хотелось, чтоб в игре были минимальное разрешение текстур по 2048, но увы такие даже на персонажах нечасто используют. Причина - нехватка аппаратных возможностей современных компьютеров, в частности ограничение по видеопамяти. Где-то слышал, что как-то Хидео Кодзиму спросили: - "Новый Metal Gear Solid просто шедеврален, как вам это все удается?!" А он такой скромный: "Да я в принципе и лучше могу..." - "А что же вам мешает?" - "Аппаратные возможности консолей нового поколения...." Так-то оно так - человеку всегда мало
Но вернемся к нашей мине когда я ее только начал делать, уже подразумевалось возможное деление текстуры на одинаковые островки полигонов - отзеркаливание своего рода, это хорошо но в меру. Конечно само лучше можно отыграться на корте нормалей. Например так - если прям надо сильно покоцать:
1 - оставить только нижнюю часть ручки с выемкой (зря ее делал что ли? ) и отхватить от нее чуть меньше половины 2 - от боковой стороны оставить четверть с полукругом 3 - от нижней крышки оставить половину 4 - от верхней крышки оставить четверть что получилось в итоге и как это выглядит на модели:
Естественно пустое место потом обрезается, я просто не стал - пришлось бы развертку подгонять. Все шо угодно можно покоцать, но лучше не злоупотреблять. Все должно быть в меру. Например, если модель будет использоваться в Юнити, лучше нормал-мапу в 2 раза сокращать (если это возможно) так как в отличии от допустим UDK, который может хранить нормал в DXT1, то Юня упорно не хочет, корячится и держит нормал только в DXT5 (который в 2 раза больше занимает памяти) - пробовал и так и этак Юнька изорвалась, но не сдалась
Вчера не дописал по техническим причинам (т.к. упал как подкошенный ). Осталась индивидуальная обработка и интеграция в движок. Все что было до этого это общее поверхностное ознакомление - то что может сделать каждый не особо напрягаясь. Продолжим.
6) Индивидуальная обработка и интеграция в движок.
Сначала хотелось бы сказать, что изначально я делаю текстуры в 4 раза большем разрешении, от того которое будет использоваться в игре: если в игре текстура мины будет в разрешении 512х512, то делаю 1024х1024. Для чего? Просто по текстуре высокого разрешения легче вырисовывать мелкие детали, а когда заканчиваю - сжимаю ее до 512 и подвожу резкость. Начнем прорисовку - для этого я беру текстуру подряпанной пластмассы и опять же через PhotoFiltreStudio прорисовываю потертости, для которых взял вот такую незатейливую текстурку с сайта CG Textures:
Потом затемнил, поворочал ее как мне надо и получил такое
Далее прорисовываем потертости и сколы по текстуре. Для этого сразу визуально выделяем части на которых будут потертости (пока не прорисовывая их на текстуре):
то есть на концах всех выступающих частей, на ребрах ямок и т.д. - где их присутствие вполне логично. Начинаем издеваться над текстурой в Фото-Фильтре: не буду профессионально вырисовывать, так как не умею - буду вырисовывать как получится, просто чтоб был понятен смысл. Опять же запеченная карта амбиент окклюжна будет вам орентиром - по ней будет видно, где прорисовывать. После недолгих потуг получилась вот такая хрень (хрень - потому, что там особо думать не надо - только мышкой ворочать. Не некст-ген конечно, но для игр среднего уровня графики вполне потянет....):
Осталась спекулярная карта. Я допустим хочу, чтобы места с потертостями у меня вообще не бликовали. Чтоб долго не мучиться пришлось пойти на хитрость - в паинт-нете выкрутил контрастность текстуры до такой степени, покане остались видны только места потертостей. Далее вырезал черный фон получил такую карту:
Не шибко точно, но нам прокатит - тем более при сжатии до 512 все равно точность потеряется. Далее выкрутил контрастность этой карты до абсолютно черного цвета. Далее обыкновенную диффузку сделал черно-белой, сверху добавил слой с текстурой которая показана выше получил вот такую карту спекуляра
Думаю пришла пора посмотреть, что получится в Юньке (ну если там нормально будет смотреться, то в других двигах тем более) текстура 1024х1024:
текстура 512х512 (но теперь я еще и перенес текстуру потертостей с альфа каналом прямо на нормал-мапу, чтоб частично компенсировать размытость текстуры):
Берите на заметку, арт решает, а не движок. Когда говорят, что в современном двиге плохая графика, люди забывают что контент генерирует не движок, а чьи-то руки разной степени кривизны. Так что: экспериментируйте, творите, в общем - творчески совершенствуйтесь. Удачи в начинаниях.
Ну и конечно же не смог я обидеть..... любителей халявы
Чем их можно порадовать:
1) была проведена оптимизация текстуры ровно на половину. Теперь она выглядит вот так:
- нижнюю крышку я отзеркалил на половину - смысла нет ее делать полностью, в основном-то мы верх видим. Но на тот случай если мина будет как физ объект, или вращаться в инвентаре как оружие в 3д виде (как наподобие серии игр RE)
- верхнюю крышку оставил полностью, т.к. это основная часть модели, которую мы видим всегда. Почему не отзеркалил? Только на тот случай, если особо ярый любитель фотожопа захочет сверху написать на ней что-нибудь, там: инвентарный номер, маркировку или просто "Аллах акбар!" Надписи можно наложить и деколями, но это такое убожество, что лучше, наверное, нарисовать
- ручка мины отзеркалена, оставлена только нижняя часть с выемкой
- целиндрическая боковина мины также уменьшена на половину и отзеркалена, учитывая особенность зрения игрока, которое сможет увидеть только одну параллельную сторону объекта, а вторую нет. Т.е. смысл такой (возьмем к примеру - ящик, упрощенно покажу). Конечно мы можем натянуть на ящик текстуру доски, сидеть радоваться и кричать, что это сверхреалистично. А можно разнообразить текстуру и запечь в развертку, учитывая все особенности окружающей обстановки. А пока базис (все делаю очень упрощенно): Вот обычный шестисторонний куб. Какая сразу приходит мысль о запекании его развертки? Правильно - быстро запечь все шесть сторон и не париться Вот как-то так: Мда.... не экономно получилось - треть текстуры пустует, да и четкось оставляет желать лучшего, ведь мы хотели уложиться в разрешение 512х512, и чтобы каждая сторона была уникальна, и покрасивше И что теперь?
Мы можем сделать некоторые выводы: - если мы видим сторону 1, то никогда не сможем увидеть ей противоположную сторону 2 - на них вешаем одинаковый текстурный фрагмент, потому, что не видя двух одинаковых сторон одновременно, игрок не может заподозрить обман, так как не может их сравнить (но ящик то будет не один , хотя можно ворочать его под разными углами) - если мы видим сторону 3, то никогда не сможем увидеть ей противоположную сторону 4 - на них тоже вешаем одинаковый текстурный фрагмент далее логика чуток меняется в сторону разнообразия и качества - верхняя сторона менее подвержена абразивным изменениям и влиянию сред (сырости, трению, дождю). Нет, конечно, исключений полно - можно на том же ящике дрова рубать, никто не запрещает и т.д. - вобщем верхняя сторона имеет отдельный текстурный фрагмент - нижняя сторона более подвержена трению сырости и др., т.к. расположена в непосредственном контакте с почвой или опорой. Вот к примеру, дождь пошел, дерево начинает высыхать и вся вода скапливается на дне, которое постепенно гниет, сыреет, плесневеет, мхом обрастает и т.д. Но повторюсь, это как пример. Есть же ящики состоящие и из других материалов, и расположены в других местах. Что мы в итоге получили? Щас посмотрим Думаю, можно и не сравнивать 2 ящика по четкости текстуры. Есть выигрыш и по качеству и по производительности. Ну это я отвлекся...
2) Увеличена базовая геометрия мины до 220 трисов. Сейчас она выглядит так:
скрины в Юнити (текстуры с разным качеством)
Ну и собственно архив. В нем есть наборы текстур (диффуз, спекулар, нормал, нормал-детейл)- высокого (1024х512) и низкого (512х256) разрешения, а также модель в форматах FBX и OBJ. ХАЛЯВА
Сообщение отредактировал Hanzo - Чт, 06 Окт 2011, 21:26
Класс. Побольше бы таких практических занятий! А то по тонкостям геймдев моделирования маловато информации. Во всяком случае так хорошо воедино собранной.
Отличный урок! Вынес в отдельную тему, перезалил скрины и объединил сообщения в одно. Не пропадать-же такому добру в дебрях темы.
Насчет полигональности мины, могу добавить, что если применять LOD то уровень детализации можно повысить не опасаясь перегрузить рендер движка. В таком случае, получится выигрыш в качестве мины возле которой находится игрок. Одна мина в поле зрения игрока будет высшего качества, скажем из 500...1000 трисов, в то время как остальные объекты на удалении в 3..5м могут состоять всего из 100..150 трисов, или даже меньше. Т.е. заменены на менее детализированные копии с таким расчетом, чтобы визуально они не отличались от детализированных версий.
P.S. Hanzo, одна просьба, выкладывай скриншоты как превью с увеличением по клику. Под спойлером их неудобно смотреть, каждый раз кликать приходится да и форум их сжимает с потерей четкости. Поиск | Правила | Новые сообщения
Добавлено (05.10.2011, 23:22) --------------------------------------------- Дорогие товарищи, на днях буду делать новый урок. Как вы считаете: стоит ли освещать моделлинг (процесс создания мид-, хай-поли моделей, ретопология лоу-поли) или делать по образцу первого урока?
Да, будет очень интересно узнать как работать в Blender-е. smile
Принцип такой же как как и в Максе, только все в основном на горячих клавишах держится. Но буду стараться объяснить так, чтобы можно было в любом 3д-пакете сделать.
Quote (Dekterev)
Верхний скрин выглядит естественнее. Нижний скрин не очень. Такое впечатление, что кто-то пальнул по мине из дробовика biggrin
мне вообще ни один не нравится - с нормальками накосячил - не дают должного эффекта. Опыта мало. Но решил поделиться хоть тем, что знаю. Одно дело - сидеть и пинать людей за ошибки, другое - показать самому как их исправить (хотя и у самого-то без ошибок не обошлось)....
Quote (Dekterev)
Качество пригодное для коммерческого использования. Не хуже чем в том-же Far Cry или Stalker.
Не знаю насчет качества. На Юньке нормально смотрится, вот только не мешало бы в Strumpy Shader Editor разобраться. Да и если художник получше будет, то он по этому уроку лучше сделает. Все рассчитано на новичков - уж теорию как мог разжевал.
в архиве 2 папки с разными разрешениями 1024 - это для презентаций и на тот случай, если нужно отредактировать текстуру 512 - игровой вариант
Quote (6aPMeH)
Нормал менее интенсивнее сделай (царапины, порезы)
Сделано. Так же отрихтовал карты нормалей. Свет специально так установлен - чтоб показать игру нормалей и спекулара. Перезалил новый архив в первый пост.
Quote (6aPMeH)
потертостей с грязью добавил бы.
Целью урока было - не сделать за кого-то, а показать как. Кому надо тот и грязи добавит, и потертостей, и надписей, не думаю что это составит каких-то проблем. Эту мину можно улучшать до бесконечности. Просто не вижу в этом смысла - не портфолио же выставляю.
Сообщение отредактировал Hanzo - Чт, 06 Окт 2011, 21:27
Целью урока было - не сделать за кого-то, а показать как. Кому надо тот и грязи добавит, и потертостей, и надписей, не думаю что это составит каких-то проблем.