Всем привет.
Решил сделать свою первую хорошую работу для публикации на артстейшене. Сам работаю в игровой студии. Занимаюсь космическими кораблями. Поэтому первая публичная работа на площадке будет в этой тематике.
Долго с выбором концепта не возился. Нашел в своей коллекции сохраненных работ не слишком сложный, но и не слишком простой вариант. Собирался сделать как можно быстрее. Заодно параллельно пройти курс Cargo Spaceship by Vaughan Ling (2019). Там уклон идет на быстрое моделирование под концепт-арт. Мне было интересно повозиться с новым билдом интерфейса, предоставленного автором. Но работал он на половину. Профита сильного от него не было. Так что продолжил работать с привычным мне билдом.
https://www.artstation.com/artwork/Xnk2Q за авторством 鄂 零.
Блокаут
Первое с чего начинаю свою работу, это с построения блокаута. Создаю основные формы, смотрю пропорции, соотношу элементы и стараюсь добиться максимального подобия 3д болванки с концептом. Основные формы отмечаю красными линиями, средние формы зелеными, синими отметил форму, которая отличается от остальной большинства форм корабля. Прорисовывая линии я помогаю себе понять как выстроена форма. Это эффективнее, чем просто смотреть на концепт.
Сложностей не возникло, но в какой-то момент понял, что двигатель расширяется от центра корабля к снаружи. После того как это подметил всё формы наконец сработали. И только когда уже перешел после этапа блокаута к проработке форм выяснил, что в этом корабле-бутерброде, нижняя половина имеет скос. Пока я не уяснил этот нюанс, линия посередине, разделяющая корабль на верх и низ, у меня была не параллельна верхней части, а была под сильным наклоном.
Обратная сторона
Автор концепта изобразил лишь одну сторону корабля. Обратную сторону нужно продумывать самостоятельно. Для этого добавил фигуру человека в проект, чтобы понять размерность форм и деталей относительно человека. Это сильно помогает в дальнейшей работе над концептом и моделированием.
На концепте нижней части мне достаточно было придумать основные формы, а детали можно будет набросать уже после создание этих форм в 3д
Развитие форм и игнорирование прокрастинации
Дальше наконец смело начинаю развивать формы. Обогащать их средними и малыми формами. В этот момент важно просто начать делать, потому-что приступить к этому этапу мне далось не сразу. Представляю весь объем работы и прокрастинация стала появляться в моей голове. Я рандомно выбрал для проработки зону двигателя. Потому-что не важно с чего начать, главное начать.
Часто бывает что концепт сложно перенести на 3д, ввиду нарушения линиями перспективы. В такие моменты ничего не остается, кроме как самому принять решение как лучше всего выстроить форму, чтобы выглядело правдоподобно, не рушило образ и решало визуальные задачи. В моей работе такие места конечно же были, но это такие нюансы, о которых хочется упомянуть лишь общими словами и детально не заострять на этом внимания.
Проработка, проработка...
На этом этапе я подсматриваю ранее собранные референсы. Анализирую похожие объекты, смотрю логику построения и наполнения деталями. Я решил что эта работа будет не реалистичная, а в какой-то мере стилизованная, как и концепт на мой взгляд.
Рефов не много. Планирую на этапе текстуринга пополнить коллекцию. Собрал как реальные изображения, так и хорошие работы других художников. Они мне помогли на этапе концепта нижней части.
Лоуполи
В этом этапе важно понять какой рабочий ракурс от модели и какую угловатость мы ожидаем видеть. У меня требований со стороны движка или заказчика не было. Так что выбирал требования под свой вкус. Решил что хочу на крупных ракурсах иметь едва заметную угловатость. Прикинул тексель денсити в 256 пискелей на метр. Чтобы это понять нужно поставить метровый кубик около модели. У меня разрешения экрана по высоте 1080. Значит в текселе 256 этот метровый куб должен занимать 256 пикселей из 1080. То есть примерно 1/4.
Теперь, когда мне нужно было понять что отбивать геометрией, а что запекать, я приближался к поверхности на расстояние рабочего ракурса и смотрел насколько форма силуэтна. На примере ниже я решил по такой логике добавить фаску на лоуполи. Альтернативный вариант - это сэкономить полигонаж и не добавлять фаску на луополи, Но цели лоуполи не только быть экономной, но и работать на визуальное представление образа. Пользуясь исключительно правилом рабочего ракурса количество треугольников получилось почти 33 тысячи.
UV
Как я писал ранее моя цель то тексель равный в 256. Благодаря удачным стечением обстоятельств и нескольким дням развертывания добиться ровно текселя в 256. Кажется только один шел у меня вышел на 245. Понадобилось 2 квадратные текстуры на 4096 и 1 на 2048. Не все игровые движки могут работать с юдимами, но меня для презентационной работы это не ограничивает.
Раскладывал вручную, без использования автоматических пакеров. Мне важно было адеватно распределить шелы и как эту адевкатность объяснить автоматическому пакеровщику. Визуальное разделил геометрию лоуполи по цветам, чтобы мне было проще ориентироваться в дальнейшем, где красный - первый юдим, зеленый - второй, а синий - третий.
У меня есть одна большая геометрия, которая располагается во всех 3 юдимах. И есть объекты поменьше, которые заполлняют свободные пространства. Ниже приложено изображение с полной юв разверткой. Другие объекты лоуполи, которые располагаются в первом, втором или третьем юдиме имеют соответствующий цвет на луопол.
На скриншоте ниже может показаться что часть модели имеет разрешение текстуры больше, чем другие. Просто проверочная текстура имеет один и тот же размер на всей модели, а вот шелы у третьего юдима увеличены в 2 раза, чтобы заполнить квадрат юв.
Для наглядности сместил все шелы за пределы квадрата, чтобы на сером фоне юв читалась лучше.
В процессе развертки в блендере активно пользуюсь системой Live Unwrap. Поэтому на скрине часть точек красная. Live Unwrap позволяет закрепить часть точек на юв пространстве, а остальные точки шела должны автоматически подстроиться так, чтобы растяжки в шеле были минимальны. Удобно в случае выравнивании ребер шела.
Запекание
Этап важный. От него напрямую зависит качество текстурирования.
Придерживаюсь этих принципов:
- Иметь как можно более быстрый и качественный процесс. Я использую мармосет для запекания. Есть свою проблемные нюансы, но свою работу делает.
- Фаски не должны прерываться. Ниже на скрине в зеленой рамке как должно быть, в красной как быть не должно, иначе генераторы на этапе текстуринга будут накладываться не удобным образом. Будут выглядеть артефачно
- Чем лучше отработано по правилу рабочего ракурса, тем лучше лоуполи отрабатывает хайполи в необходимом текселе текстур. Это позволяет избежать большинства артефактов на скруглениях.
- Фаски на хайполи должны быть больше пикселя на запеченной текстуре.
- Где-то намеренно искажаю хайполи, чтобы подогнать форму или фаски под нужное расстояние до лоуполи. Допускается если изменения не сильные и если хайполи не идет на съемки в крупном ракурсе.
- Не дорабатывать артефакты в ручную, а добиваться хорошего результата сразу после запекания. Если работа срочная и не потребует правок, то могу игнорировать этот пункт и доработать вручную. Но это случается крайне редко. Может раз в пару лет.
Так выглядит итоговое место. Линии ровные, верно описывают кривизну поверхности: выпуклости и вогнутости.
Запеченные текстуры на модели выглядят так. Есть еще картай ID, position. Но не вижу смысла их показывать, не самые интересные карты)
На данный момент WIP подходит к концу. Дальше предстоит этап корректировки нормалей лоуполи объекта, Запекание карты нормалей. И планирую долго возиться с текстурами. Часть детализации добавлю через сабстанс дезайнер, чтобы дополнительная детализация проявлялась на курватуре, ао и карте нормалей.
Благодарю за внимание!
Ну и плюс, что значит "адекватная" упаковка, почему не использовал автоматические пакеры?
- поддерживающие грани на лоуполи, которая участвует в запекании. Об этом есть в этой статье https://vk.com/@idutvuk-osobennosti-primeneniya-ka... в разделе "Причины возникновения «искажений деталей» на КН". На своем примере я подкорректировал отступ этой поддерживающей грани, расположив ее ближе к шву. Скорректировал так направления запекания. До этого фаска запекалась когда направления запекания были под большим наклоном.
- Где-то приподнял геометрию хайполи, а то часть геометрии утопала в другой, из-за чего не вся фаска запекалась
Я видел сложности в автоматической паковке:- Нужно было указать шелы которые будут располагаться в определенных юдимах. Я заранее не знал что и где лучше расположить.
- Я хотел расположить части одной геометрии ближе друг к другу за юв. В современных пайплайнах это не особо важно, но бывает что я рисую что-то на текстурах по юв развертке. Расположенные рядом шелы создают удобство в поиске.
Я видел как вариант расположить крупные формы пакером. Понять для себя в каком юдиме что будет располагаться. И затем автоматически запаковать средние и мелкие юв шелы. Но в этом процессе сложно соблюсти расположение рядом. Можно конечно обозначить в паковщике группы юв. Но я в этом не сильно пока разбирался. Учиться этому процессу не хотел.Процесс с тайловыми текстурами может быть и проще, но я таким способом не владею)
Но рассчитываю сделать одну из следующих моделей в такой пайплайне. В стар ситизен видел, детализацию добавляют декалями
соотношение с пиксельной сеткой, что бы рисовать например прямые линии
или типа того, потом закрепляю их пином а остальное упаковываю
автоматиечски. Так что я понял тебя.
Оверлапы сдвигал вверх
Спасибо, рад что нравится)
Если цель-обьект окружения, то можно в основном и без декалей обойтись, сетка достаточно плотная, вполне можно врезать/вставить в нее бэйкнутые элементы, а основу просто замидполить, то есть и бэйкать то не придется по большей части, места пустого дофига для 2 атласов в 4к. Редкие деталюхи в крупной энвирке эффективнее добавлять по схожим методикам с тем, как сделано в deus ex-e, тексель общий будет в разы выше https://www.artstation.com/artwork/4vO0Y
О, спасибо за ссылку
И не совсем понял, почему нужен сабстенс дизайнер, если при текстурёжке надо будет дополнять курватуру и ао, если в самом паинтере, уже при непосредственной покраске, с любой альфы или маски в любом канале, с помощью якорей можно собрать как курватуру, так и ао любых деталей, и дополнить ими базовые карты, и потом через те же якоря использовать в любом генераторе, ну, или, если надо, выгрузить через экспорт и загрузить обратно в проект эти карты с дополненными деталями.
Я в итоге по текстурам так и сделал. Нарисовал детали в сабстанс пеинтере натсроил ао, курватуру и экспортнул карты.
https://blendermarket.com/products/perspective-plo...
Как fSpy https://fspy.io/ только внутри блендера.
Сопоставьте камеру с изображением с помощью Perspective Plotter, интерактивного дополнения Blender для моделистов, архитекторов и художников. Это полезно для создания 3D-моделей из 2D-эскизов, сопоставления 3D-сцены с 2D-фотографией или динамической анимации камеры.
Определение линий перспективы в окне просмотра задает фокусное расстояние, местоположение и позиционное положение камеры в режиме реального времени. Дополнение также будет работать с несколькими камерами в сцене.
Дополнительные инструменты позволяют вам соответствовать пропорциям фонового изображения камеры, быстро перемещать вершины или объекты вдоль линии обзора и автоматически выравнивать горизонт.
Спасибо за инструмент, добрый человек)