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

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

Battle Scissors, рендер

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Rootsword

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wild Guitar

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

Пара кадров с видом внутри движков:

В Godot 3.5 В редакторе Godot 4.3

Прочее

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

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