Это статья про компьютерную графику, 3D-дизайн и геймдев. Про замечательную бесплатную программу для воксельного моделирования MagicaVoxel я уже рассказывал. В этом видео я ускоренно нарисовал довольно сложное здание театра Помпея в древнем Риме, а в этой заметке перенесём это здание в Blender и Unity. Бонусом создадим в Unity игру от первого лица, в которой можно осмотреть этот античный амфитеатр. Описанные способы актуальны на версиях программ с осени 2020 (сейчас середина лета 2021).
Импорт модели из MagicaVoxel в Blender
Экспортируем модель из MagicaVoxel в формате .obj. Рядом с экспортированным файлом появится использовавшаяся палитра в формате .png.
В Blender создаём новый файл, удаляем из него всё не нужноеи через меню File->Import->Wavefront(.obj) выбираем экспортированный файл .obj.
Если включить Viewport Shading можно заметить что палитра цветов "подхватилась" и все цвета хорошо лежат. Но есть проблема. Дело в том что для каждой вершины кубика были созданы по три вершины (для каждой его грани). Это делает не удобным например пропорциональное редактирование в Blender или определение границ объектов в Unity. Поэтому я не рекомендую ничего (с чем планируется любое взаимодействие в Unity) грузить напрямую из Magica Voxel, минуя слияние вершин, например с помощью Blender (он тоже бесплатный, так что это не создаст проблем).
В сети можно найти кучу советов по уменьшению числа полигонов после экспорта из Magica Voxel, всяких плагинов и сторонних программ. На последних версиях Magica Voxel они уже не нужны и число треугольников потом без потери качества (например применив модификатор в Blender) не уменьшить!
Чтобы слить вершины в одну надо в Edit Mode выбрать в меню Mesh->Merge->By Distance (первая картинка галереи).
Даже не выходя из Edit Moda можно заметить, что всё "поплыло" из-за сбившегося направления нормалей.
Чтобы это исправить надо выбрать любое наружнее ребро (например на самой верхней наружней грани крыши) и нажать Shift+G -> Face Angles, затем нажть Ctrl+E -> Mark Sharp. Всё станет как надо. Но не всегда, иногда произойдут в лучшую сторону изменения (исчезнут треугольные тени, все прилегающие к рёбрам грани станут как надо), но не всё исправится. Причём на одной и той же модели бывало и нормально, потом импортирую в другой документ, снова повторяю и не так! Если столкнётесь с такой проблемой, то помогает использовать модификатор Weld для слияния вершин, после него выбрать наружнее ребро ну и вы поняли. Как вариант создать новый документ в Blender и повторить действия. Если кто знает более стабильный способ - напишите в комментариях, буду признателен.
Импорт модели из MagicaVoxel в Unity
Из Magica Voxel можно импортировать напрямую в Unity, но повторюсь, что рекомендую объединить перед этим вершины в Blender. Экспортировать модель из Blender можно с помощью File->Export->Wavefront(.obj) и не забыть поставить галочку Selection Only (и выделить перед экспортом соответственно только саму модель).
Если будете сохранять модель даже в новую папку, то не появится палитра, так как для этого в Blendere надо до экспорта включить её в сам .blend-файл. Проще всего просто скопировать эту палитру из той папки, куда экспортировали из Magica Voxel.
Если кому-то интересно как импортировать модель, полностью созданную в Blender (с созданным в нём материалом и UV-развёрткой), то вот хороший ролик на пару минут, а я пересказывать его не буду - там и так всё понятно рассказал парень.
Для импорта в Unity надо просто перетащить экспортированные файлы в папку проекта.
Игра от первого лица в Unity
Кстати слышал мнение, что уже 100 тысяч полигонов на моделях импортированных из MagicaVoxel в Unity тормозят сцену (на среднем Android-устройстве) аж до 10 fps. Проверил - правда, но легко решается запеканием или отключением теней.
На рисунках в галерее видно как создать управление персонажем от первого лица и результат.
Если кого-то заинтересовало создание игр в Unity, но он не знает с чего начать, то вот плейлист парня, в котором мне понравилось как рассказывает. Это не реклама, просто просмотрел пару разных уроков, чтобы сэкономить своему читателю время и выбрал на свой вкус.
_________________
Возможно Вам будет интересно узнать как работают текстуры и как нарисовать свою для 2D и 3D. Или программирование (C#) для тех, кто хочет научиться, но не знает с чего начать.