Shuttle Spacecraft

Всем привет.

Решил сделать свою первую хорошую работу для публикации на артстейшене. Сам работаю в игровой студии. Занимаюсь космическими кораблями. Поэтому первая публичная работа на площадке будет в этой тематике.

Долго с выбором концепта не возился. Нашел в своей коллекции сохраненных работ не слишком сложный, но и не слишком простой вариант. Собирался сделать как можно быстрее. Заодно параллельно пройти курс Cargo Spaceship by Vaughan Ling (2019). Там уклон идет на быстрое моделирование под концепт-арт. Мне было интересно повозиться с новым билдом интерфейса, предоставленного автором. Но работал он на половину. Профита сильного от него не было. Так что продолжил работать с привычным мне билдом.

-0.jpg

https://www.artstation.com/artwork/Xnk2Q за авторством 鄂 零.

Блокаут

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

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

sketch_by copy.jpg

blockout.jpgblockout_2.jpg

Обратная сторона

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

sketch_by_me copy.jpg

Развитие форм и игнорирование прокрастинации

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

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

engine.jpg

Проработка, проработка...

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

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

refs.jpg

high_poly1.jpghigh_poly2.jpghigh_poly3.jpg

Лоуполи

В этом этапе важно понять какой рабочий ракурс от модели и какую угловатость мы ожидаем видеть. У меня требований со стороны движка или заказчика не было. Так что выбирал требования под свой вкус. Решил что хочу на крупных ракурсах иметь едва заметную угловатость. Прикинул тексель денсити в 256 пискелей на метр. Чтобы это понять нужно поставить метровый кубик около модели. У меня разрешения экрана по высоте 1080. Значит в текселе 256 этот метровый куб должен занимать 256 пикселей из 1080. То есть примерно 1/4.

texel density.jpg

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

working_angle.jpg

wireframe.jpg

UV

Как я писал ранее моя цель то тексель равный в 256. Благодаря удачным стечением обстоятельств и нескольким дням развертывания добиться ровно текселя в 256. Кажется только один шел у меня вышел на 245. Понадобилось 2 квадратные текстуры на 4096 и 1 на 2048. Не все игровые движки могут работать с юдимами, но меня для презентационной работы это не ограничивает.

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

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

uv_groups.jpg

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

uv_wireframe.jpg

uv.jpg

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

В процессе развертки в блендере активно пользуюсь системой Live Unwrap. Поэтому на скрине часть точек красная. Live Unwrap позволяет закрепить часть точек на юв пространстве, а остальные точки шела должны автоматически подстроиться так, чтобы растяжки в шеле были минимальны. Удобно в случае выравнивании ребер шела.

Запекание

Этап важный. От него напрямую зависит качество текстурирования.

Придерживаюсь этих принципов:

  • Иметь как можно более быстрый и качественный процесс. Я использую мармосет для запекания. Есть свою проблемные нюансы, но свою работу делает.
  • Фаски не должны прерываться. Ниже на скрине в зеленой рамке как должно быть, в красной как быть не должно, иначе генераторы на этапе текстуринга будут накладываться не удобным образом. Будут выглядеть артефачно
  • Чем лучше отработано по правилу рабочего ракурса, тем лучше лоуполи отрабатывает хайполи в необходимом текселе текстур. Это позволяет избежать большинства артефактов на скруглениях.
  • Фаски на хайполи должны быть больше пикселя на запеченной текстуре.
  • Где-то намеренно искажаю хайполи, чтобы подогнать форму или фаски под нужное расстояние до лоуполи. Допускается если изменения не сильные и если хайполи не идет на съемки в крупном ракурсе.
  • Не дорабатывать артефакты в ручную, а добиваться хорошего результата сразу после запекания. Если работа срочная и не потребует правок, то могу игнорировать этот пункт и доработать вручную. Но это случается крайне редко. Может раз в пару лет.

baking_bevels.jpg

Так выглядит итоговое место. Линии ровные, верно описывают кривизну поверхности: выпуклости и вогнутости.

curvature_correct.jpg

Запеченные текстуры на модели выглядят так. Есть еще картай ID, position. Но не вижу смысла их показывать, не самые интересные карты)additional_texture.jpg

cargo_spaceship_maps_present.jpg

На данный момент WIP подходит к концу. Дальше предстоит этап корректировки нормалей лоуполи объекта, Запекание карты нормалей. И планирую долго возиться с текстурами. Часть детализации добавлю через сабстанс дезайнер, чтобы дополнительная детализация проявлялась на курватуре, ао и карте нормалей.

Благодарю за внимание!

604 0 850 6
12
2023-09-05
Отличный пост) Слушай, а ты можешь подробнее описать момент с алиазингом и артефактами запекания? как ты решал эту проблему?
Ну и плюс, что значит "адекватная" упаковка, почему не использовал автоматические пакеры?
2023-09-05
Есть вопросы. Не маловато ли будет 256 пикселей на метр для такого большого объекта и не проще ли текстурить тайлово поверх уникального нормала при помощи масок и декалей. Хотя тут опять же вопрос в ракурсе и назначении модели, для рендера с 15 метров конечно и этого будет вполне достаточно.
2023-09-05
Евгений Черных (.ECHER)Отличный пост) Слушай, а ты можешь подробнее описать момент с алиазингом и артефактами запекания? как ты решал эту проблему?
Ну и плюс, что значит "адекватная" упаковка, почему не использовал автоматические пакеры?
Благодарю. Для редактирования корректировки запекания использую:
  • поддерживающие грани на лоуполи, которая участвует в запекании. Об этом есть в этой статье https://vk.com/@idutvuk-osobennosti-primeneniya-ka... в разделе "Причины возникновения «искажений деталей» на КН". На своем примере я подкорректировал отступ этой поддерживающей грани, расположив ее ближе к шву. Скорректировал так направления запекания. До этого фаска запекалась когда направления запекания были под большим наклоном.
  • Где-то приподнял геометрию хайполи, а то часть геометрии утопала в другой, из-за чего не вся фаска запекалась
Я видел сложности в автоматической паковке:
  • Нужно было указать шелы которые будут располагаться в определенных юдимах. Я заранее не знал что и где лучше расположить.
  • Я хотел расположить части одной геометрии ближе друг к другу за юв. В современных пайплайнах это не особо важно, но бывает что я рисую что-то на текстурах по юв развертке. Расположенные рядом шелы создают удобство в поиске.
Я видел как вариант расположить крупные формы пакером. Понять для себя в каком юдиме что будет располагаться. И затем автоматически запаковать средние и мелкие юв шелы. Но в этом процессе сложно соблюсти расположение рядом. Можно конечно обозначить в паковщике группы юв. Но я в этом не сильно пока разбирался. Учиться этому процессу не хотел.
2023-09-05
Андрей ДеревянкоЕсть вопросы. Не маловато ли будет 256 пикселей на метр для такого большого объекта и не проще ли текстурить тайлово поверх уникального нормала при помощи масок и декалей. Хотя тут опять же вопрос в ракурсе и назначении модели, для рендера с 15 метров конечно и этого будет вполне достаточно.
Ну 15 метров довольно большое расстояние. С расстояния рабочего ракурса пиксилизации текстуры не будет видно. А это уже довольно близкий ракурс. Это модель рассчитывается не как главный объект, а как объект окружения.
Процесс с тайловыми текстурами может быть и проще, но я таким способом не владею)
Но рассчитываю сделать одну из следующих моделей в такой пайплайне. В стар ситизен видел, детализацию добавляют декалями
2023-09-05
Константин ЧеклецовБлагодарю. Для редактирования корректировки запекания использую:
  • поддерживающие грани на лоуполи, которая участвует в запекании. Об этом есть в этой статье https://vk.com/@idutvuk-osobennosti-primeneniya-ka... в разделе "Причины возникновения «искажений деталей» на КН". На своем примере я подкорректировал отступ этой поддерживающей грани, расположив ее ближе к шву. Скорректировал так направления запекания. До этого фаска запекалась когда направления запекания были под большим наклоном.
  • Где-то приподнял геометрию хайполи, а то часть геометрии утопала в другой, из-за чего не вся фаска запекалась
Я видел сложности в автоматической паковке:
  • Нужно было указать шелы которые будут располагаться в определенных юдимах. Я заранее не знал что и где лучше расположить.
  • Я хотел расположить части одной геометрии ближе друг к другу за юв. В современных пайплайнах это не особо важно, но бывает что я рисую что-то на текстурах по юв развертке. Расположенные рядом шелы создают удобство в поиске.
Я видел как вариант расположить крупные формы пакером. Понять для себя в каком юдиме что будет располагаться. И затем автоматически запаковать средние и мелкие юв шелы. Но в этом процессе сложно соблюсти расположение рядом. Можно конечно обозначить в паковщике группы юв. Но я в этом не сильно пока разбирался. Учиться этому процессу не хотел.
  • Спасибо за ссылку на статью. Довольно большой и полезный материал, хотя и местами сложно усваиваемый) Качественное запекание требует очень хороших навыков и усилий так что да, эта тема нуждается в большем внимании.
  • Я тоже размещаю большие тайлы вручную, но только если этого требует
    соотношение с пиксельной сеткой, что бы рисовать например прямые линии
    или типа того, потом закрепляю их пином а остальное упаковываю
    автоматиечски. Так что я понял тебя.
  • Еще один вопрос, ты делал оверлапы? И если да, то куда ты их сдвигал при такой упаковке?
  • Ну и на последок, хайка получилась очень приятной) Выглядит классно.
2023-09-06
Евгений Черных (.ECHER)
  • Спасибо за ссылку на статью. Довольно большой и полезный материал, хотя и местами сложно усваиваемый) Качественное запекание требует очень хороших навыков и усилий так что да, эта тема нуждается в большем внимании.
  • Я тоже размещаю большие тайлы вручную, но только если этого требует
    соотношение с пиксельной сеткой, что бы рисовать например прямые линии
    или типа того, потом закрепляю их пином а остальное упаковываю
    автоматиечски. Так что я понял тебя.
  • Еще один вопрос, ты делал оверлапы? И если да, то куда ты их сдвигал при такой упаковке?
  • Ну и на последок, хайка получилась очень приятной) Выглядит классно.
Запекание да - это тема с многими нюансами)
Оверлапы сдвигал вверх
Спасибо, рад что нравится)
2023-09-08
Константин ЧеклецовНу 15 метров довольно большое расстояние. С расстояния рабочего ракурса пиксилизации текстуры не будет видно. А это уже довольно близкий ракурс. Это модель рассчитывается не как главный объект, а как объект окружения.
Процесс с тайловыми текстурами может быть и проще, но я таким способом не владею)
Но рассчитываю сделать одну из следующих моделей в такой пайплайне. В стар ситизен видел, детализацию добавляют декалями

Если цель-обьект окружения, то можно в основном и без декалей обойтись, сетка достаточно плотная, вполне можно врезать/вставить в нее бэйкнутые элементы, а основу просто замидполить, то есть и бэйкать то не придется по большей части, места пустого дофига для 2 атласов в 4к. Редкие деталюхи в крупной энвирке эффективнее добавлять по схожим методикам с тем, как сделано в deus ex-e, тексель общий будет в разы выше https://www.artstation.com/artwork/4vO0Y
2023-09-08
Илья Горохов (KumaBeer)
Если цель-обьект окружения, то можно в основном и без декалей обойтись, сетка достаточно плотная, вполне можно врезать/вставить в нее бэйкнутые элементы, а основу просто замидполить, то есть и бэйкать то не придется по большей части, места пустого дофига для 2 атласов в 4к. Редкие деталюхи в крупной энвирке эффективнее добавлять по схожим методикам с тем, как сделано в deus ex-e, тексель общий будет в разы выше https://www.artstation.com/artwork/4vO0Y

О, спасибо за ссылку
2023-09-10
А почему не использовать UVpackmaster для Блендера? В нём есть абсолютно весь инструментарий для любых манипуляций с шелами: конверты, выборочная паковка, паковка отдельных шелов, паковка определённых шелов в определённую область, блокировка оверлапов и очень много чего ещё и главное, что чем больше шелов, тем проще будет со всем этим работать. Игнорировать такой инструмент, и тратить дни на паковку руками, как минимум, странно.

И не совсем понял, почему нужен сабстенс дизайнер, если при текстурёжке надо будет дополнять курватуру и ао, если в самом паинтере, уже при непосредственной покраске, с любой альфы или маски в любом канале, с помощью якорей можно собрать как курватуру, так и ао любых деталей, и дополнить ими базовые карты, и потом через те же якоря использовать в любом генераторе, ну, или, если надо, выгрузить через экспорт и загрузить обратно в проект эти карты с дополненными деталями.
2023-09-10
Даниил Лоскутов (Aiosame)А почему не использовать UVpackmaster для Блендера? В нём есть абсолютно весь инструментарий для любых манипуляций с шелами: конверты, выборочная паковка, паковка отдельных шелов, паковка определённых шелов в определённую область, блокировка оверлапов и очень много чего ещё и главное, что чем больше шелов, тем проще будет со всем этим работать. Игнорировать такой инструмент, и тратить дни на паковку руками, как минимум, странно.

И не совсем понял, почему нужен сабстенс дизайнер, если при текстурёжке надо будет дополнять курватуру и ао, если в самом паинтере, уже при непосредственной покраске, с любой альфы или маски в любом канале, с помощью якорей можно собрать как курватуру, так и ао любых деталей, и дополнить ими базовые карты, и потом через те же якоря использовать в любом генераторе, ну, или, если надо, выгрузить через экспорт и загрузить обратно в проект эти карты с дополненными деталями.
Я ранее ответил на вопрос по автопакерам. В целом могу сказать что мне было просто удобнее раскладывать вручную. Я хоть и пользуюсь автопакерами обычно. Но в данной работе не знал как раскидать всё с его помощью. Не стал разбираться. Выбрал понятный путь, но не быстрый.
Я в итоге по текстурам так и сделал. Нарисовал детали в сабстанс пеинтере натсроил ао, курватуру и экспортнул карты.
2023-09-11
Для более удобного моделирования по референсам есть
https://blendermarket.com/products/perspective-plo...

Как fSpy https://fspy.io/ только внутри блендера.
Сопоставьте камеру с изображением с помощью Perspective Plotter, интерактивного дополнения Blender для моделистов, архитекторов и художников. Это полезно для создания 3D-моделей из 2D-эскизов, сопоставления 3D-сцены с 2D-фотографией или динамической анимации камеры.

Определение линий перспективы в окне просмотра задает фокусное расстояние, местоположение и позиционное положение камеры в режиме реального времени. Дополнение также будет работать с несколькими камерами в сцене.
Дополнительные инструменты позволяют вам соответствовать пропорциям фонового изображения камеры, быстро перемещать вершины или объекты вдоль линии обзора и автоматически выравнивать горизонт.
2023-09-11
Александр Решетняк (Axelaredz)Для более удобного моделирования по референсам есть
https://blendermarket.com/products/perspective-plo...

Как fSpy https://fspy.io/ только внутри блендера.
Сопоставьте камеру с изображением с помощью Perspective Plotter, интерактивного дополнения Blender для моделистов, архитекторов и художников. Это полезно для создания 3D-моделей из 2D-эскизов, сопоставления 3D-сцены с 2D-фотографией или динамической анимации камеры.

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

Спасибо за инструмент, добрый человек)
RENDER.RU