Как стать автором
Обновить

Handpaint 3d-модели своими силами

Время на прочтение6 мин
Количество просмотров6K

Несколько game-ready low-poly моделей, которые делал вручную с применением разделённой покраски: цвет и монохром отдельно. Используется Blender, без каких-то дополнительных штук.

Боевые ножницы

Начнём с 3d-модели оружия для фэнтэзийного жанра (условный bonepunk):

Battle Scissors, рендер
Battle Scissors, рендер

Стилизованная модель, концепт боевых ножниц. В целом это арт-проект, но вот так выглядело бы в игровом движке:

Например, в Godot, с дополнительным cellshade материалом.
Например, в Godot, с дополнительным cellshade материалом.
Сетка модели
Сетка модели

Некоторые подробности процесса разработки: для начала набрасывается приблизительная форма - в данном случае мне было удобнее изобразить её через метаболлы и склеить их в одну сетку (mesh). Вторая часть делается как связанная копия полученной сетки.

Шаги по созданию базовой формы. Используется классический Блендер.
Шаги по созданию базовой формы. Используется классический Блендер.

Далее примёнён некоторый минимальный скульптинг, для уточнения формы. Можно было продолжить детально скульптить, вплоть до получения финальной high-poly, но для экономии времени перехожу к другому этапу.

И это не ретопология (опять же для экономии сил), а некоторый относительный моделинг, родственный технике проективного моделирования по чертежам:

Намечаю точки в top-down проекции, чтобы получить приблизительную плоскую форму.
Намечаю точки в top-down проекции, чтобы получить приблизительную плоскую форму.
Затем форме добавляется некоторый объём и начинается её доработка/полировка. Базовый мини-скульпт более не нужен
Затем форме добавляется некоторый объём и начинается её доработка/полировка. Базовый мини-скульпт более не нужен
Модель, перед удалением последних избыточных edge loops и сшиванием некоторых точек в более оптимальный вид. 
Модель, перед удалением последних избыточных edge loops и сшиванием некоторых точек в более оптимальный вид. 
На этапе развёртки и первоначальной покраски.
На этапе развёртки и первоначальной покраски.

Следует отметить, что в данной модели я хотел оставить текстуру чёрно-белой, а цвет задавать через покраску вертексов. То есть общий цвет получается через смешивание текстуры с vertex color.

Собственно, красилось всё внутри Blender, его внутреннего функционала вполне достаточно. Даже без использования каких-то кастомных кистей (а их можно было делать давным давно, как вручную так и через подключаемые плагины) и разных слоёв (тоже легко делаются в узлах материала). Красить можно как по модели, так и по текстуре (включив режим рисования, вместо просмотра). Кнопка S берёт цвет, как пипетка. Хоткей на квадратные/фигурных скобках увеличивает/уменьшает кисть. При желании можно открывать текстуру и подкрашивать отдельно, в графическом редакторе. В принципе можно подключить графический редактор к самому Blender, но изменения не будут происходить в реалтайме (если не спамить обновление картинки), поэтому лучше так не делать и лучше посмотреть в сторону кастомных кистей или плагинов (чтобы всё работало внутри Блендера). Ну, или идти пиратить свои сабстенсы - тут как сами хотите.

Слева цвет текстуры, справа вертексная покраска, подмешанная в режиме overlay.
Слева цвет текстуры, справа вертексная покраска, подмешанная в режиме overlay.
В итоге, после доработки формы и дополнительных шагов покраски получаем финальную модель, которую быстрее отрендерить уже в eevee, в какой-нибудь новой версии Блендера (что и было сделано).
В итоге, после доработки формы и дополнительных шагов покраски получаем финальную модель, которую быстрее отрендерить уже в eevee, в какой-нибудь новой версии Блендера (что и было сделано).

Для красоты добавляем к модели аутлайн (через Grease Pencil), свет, и "ленивую" карту нормали на основе текстуры. Для использования нормали в игровом движке её можно тут же и запечь как отдельную текстуру:

Простенькая normal map
Простенькая normal map

В игровом движке для аутлейна (обводки) может понадобится писать шейдер, но конкретно в Godot можно просто поставить материал обводки, в качестве next pass к основному:

Получаем как бы модель со вторым материалом, немного распухшую (grow) в габаритах и рендерящуюся другой своей частью на камеру (режим обрезки front, вместо стандартного back). Что в совмещении выглядит как обводка.
Получаем как бы модель со вторым материалом, немного распухшую (grow) в габаритах и рендерящуюся другой своей частью на камеру (режим обрезки front, вместо стандартного back). Что в совмещении выглядит как обводка.

Rootsword

Другой арт-проект, на этот раз стилизованный фэнтэзийный деревянный меч.

Вид внутри редактора игрового движка:

Анимация, внутри игрового движка:

Здесь моделинг происходил не от приблизительного скульпта, а от наброска.

Предварительный набросок
Предварительный набросок
Набросок в Blender
Набросок в Blender
Прочие моменты из процесса создания меча
Построение начальной сетки и отдельных элементов
Построение начальной сетки и отдельных элементов
Сетка сразу создаётся с расчётом на то, что развёртка будет произведена сразу же для половинки, а целая модель будет сшита после отзеркаливания этих половинок
Сетка сразу создаётся с расчётом на то, что развёртка будет произведена сразу же для половинки, а целая модель будет сшита после отзеркаливания этих половинок
В сетке корней сразу намечаются продольные линии в более широком месте, а на краях экструдируем лишние полигоны с одной стороны. После отзеркаливаниия, с одной части они будут отрезаны, а с другой - пришиты вручную к соответствующим точкам.
В сетке корней сразу намечаются продольные линии в более широком месте, а на краях экструдируем лишние полигоны с одной стороны. После отзеркаливаниия, с одной части они будут отрезаны, а с другой - пришиты вручную к соответствующим точкам.
Для удобства текстурирования, отдельные развёрнутые части модели можно дублировать и красить отдельно. А вот вертексаная покраска у копии своя.
Для удобства текстурирования, отдельные развёрнутые части модели можно дублировать и красить отдельно. А вот вертексаная покраска у копии своя.
Цветок тоже оптимизирован - развёрнут только центр и один лепесток. Прочие копии этого лепестка (с той же развёрткой) пришиты к центру с других сторон.
Цветок тоже оптимизирован - развёрнут только центр и один лепесток. Прочие копии этого лепестка (с той же развёрткой) пришиты к центру с других сторон.
Заканчиваем расстановку цветов и прочих частей
Заканчиваем расстановку цветов и прочих частей
Этап моделинга закончен и можно делать рендер
Этап моделинга закончен и можно делать рендер

Финальную модель уже можно рендерить, настраивая освещение и материал:

Так как эта модель тоже использует смешение цвета текстуры и цветов вертексов (обычно это режим смешения overlay или multiply), то её проще перекрасить, при желании:

Слева монохромная текстура, справа цвет вертексов
Слева монохромная текстура, справа цвет вертексов

Корнеяр, древесный рыцарь

Вот и добрались до персонажа. Это некоторое существо, которое носит деревянные доспехи и оружие, а также обладает какими-то специфическими силами, полученными от леса.

В данном случае процесс примерно схож с вышеописанными моделями, но тут от наброска моделилась больше сама маска, а прочее тело собиралось в более свободном стихийном режиме, без вспомогательных high-poly масс. Так как модель более сложная, то вместо цвета вертексов я делаю просто вторую текстуру - на которой будет цвет. Ну или можно было рисовать сразу всё по единой текстуре, по классике, но так пропадает некоторая гибкость.

Стадии создания
Стадии создания
Сетка
Сетка
И вот персонаж готов
И вот персонаж готов

Кстати, для большей живости героя и понимания его природы/возможностей, можно несколькими фразами задать общие определяющие персонажа "ролевые" параметры. Например в настольно-ролевой системе Несудьба стартовый "лист" персонажа выглядел бы следующим образом:

Корнеяр

древесный рыцарь 53

_1, разговор с растениями (513)

_2, темновидение (523)

_3, лесной телепорт (533)

_4, выращивание древесного оружия (543)

ищет источник природной магии 61

+ имеет Цветущий Меч 89

Ну и говоря о большей живости - почему бы не сделать персонажу кости/анимации и, допустим, добавить для тестов в игровой движок. Так как модель стилизованная, то не так важно какой именно будет движок. Я захотел закинуть рыцаря в Godot 4. И с этим возникли некоторые нюансы - тут желательна анимированная модель в формате gltf/glb, в отличие от Godot 3x, где я обходился collada/dae форматом.

С glb я уже имел дело, так как вёб-движок PlayCanvas тоже хотел подобный формат, но я закидывал туда в основном неанимированные модели или модели с одним треком анимации. А с Godot 3x пайплайн с переносом костной анимации из Blender у меня был построен на закидывании модели в dae-формате с одним анимационным треком и затем к ней, при желании, забрасывались дополнительные треки, которые достаточно было сохранить, добавить в аниматор и удалить сам файл с новым треком. В этом способе есть некие плюсы, так как можно добавить анимации потом, не ломая уже настроенные связи.

Для glb требуется иной подход - множественные треки анимации нужно сделать для модели внутри самого Блендера, расположив их по своим "слоям" и таким образом перенеся в движок. В принципе тут ничего особо сложного, просто пришлось немного разобраться и привыкнуть к тому как это делается. Ну и если менять анимации, то придётся весь файл заново импортировать в движок, проводя некоторые манипуляции для того, чтобы встроить новую модель в созданную структуру на место старой (что тоже не так сложно).

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

В итоге получаем героя, бегающего внутри тестовой сцены игрового движка (две основные текстуры - монохром и цвет - заранее сведены в одну для albedo). В первом ролике настройки графики снижены:

В следующем ролике добавлено оружие, простенькие удары и кое-что ещё. Также тут во второй половине видео включаются более высокие настройки - каскады теней, объёмный туман и прочее.

Wild Guitar

Модель фэнтезийного музыкального инструмента. Использован всё тот же пайплайн, что в примерах выше.

Внутри игрового движка:

Ещё пара кадров с видом внутри движков
В Godot 3.5
В Godot 3.5
В редакторе Godot 4.3
В редакторе Godot 4.3

Прочее

Если не делать handpaint текстуры и low-poly, то органические формы можно моделить из метаболлов (набросав из них болванку для последующей обработки), а более квадратные-техногенные вещи из примитивов внутри одной сетки, на которую затем применить ремеш-модификатор. То есть внутри сетки двигать различные примитивы, а наложенный поверх ремеш будет склеивать их в цельный объект. Например, так были сделаны следующие модельки:

Кибердека
Кибердека
Светолёт
Светолёт

Для начинающих в Blender пригодится пара статей с разбором базовых приёмов работы с классической версией - моделинг, материалы, рендер:

Blender, 1000 мелочей
Базовые приёмы работы с Blender версии 2.79. Продолжение: статья про материалы в Cycles и рендер изо...
habr.com
Blender, 1001 мелочь
Приёмы работы с Blender версии 2.79, продолжение. На этот раз затронуты материалы и получение финаль...
habr.com

Теги:
Хабы:
Всего голосов 4: ↑4 и ↓0+4
Комментарии6

Публикации

Работа

Ближайшие события