Monster Forge — открытый конструктор low-poly персонажей

У модульного персонажа недостаточно сохранить красивый кадр. Нужно знать, какие части выбраны, откуда взялась их геометрия и что именно окажется в экспортированном файле. Monster Forge — мой открытый конструктор low-poly персонажей, в котором выбор внешности и воспроизводимость сборки решаются вместе.

Monster Forge — открытый конструктор low-poly персонажей

В поставку входят 33 расы и типа существ, 193 пресета, варианты лиц, волос, одежды, телосложения, конечностей и аксессуаров. Библиотека включена в репозиторий: чтобы посмотреть существующие детали, не

нужно искать отдельный набор моделей или подключать другую игру. Код и перечисленные в поставке исходные ресурсы доступны под Apache-2.0.

Выбрать детали и получить модель

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

На выходе — два файла: assembly.json с инструкцией и один model.glb с собранной моделью. Для шаблонов с ригом GLB содержит скелет и веса. Существующие авторские шаблоны без рига экспортируются статически; конструктор явно сообщает об этом. Наличие модели в каталоге не означает, что для неё уже готовы скелет и анимации.

Экспорт можно использовать в собственном процессе разработки. Проверку поведения конкретной модели в выбранном движке следует проводить отдельно: браузерное превью само по себе не подтверждает игровую интеграцию.

Исходники хранятся отдельно от кеша

Постоянная библиотека содержит рецепты геометрии, метаданные, пресеты и необходимые исходные изображения. Производные GLB, веса и карточки деталей восстанавливаются в /tmp/monster-forge. Они не раздувают исходный репозиторий и не должны быть единственным местом хранения важного результата.

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

Геометрию и веса рассчитывает Python. Браузер отображает результат; отдельной копии расчётов сборки на JavaScript нет. Это помогает проверять один и тот же результат через интерфейс и программный API.

Как запустить

Проверенный сценарий запуска использует Linux, Python 3.12, uv и make. Из клонированного репозитория выполните:

git clone https://github.com/QoobIY/monster-forge.git

cd monster-forge

make run

Первый запуск установит зафиксированные зависимости. Затем откройте http://127.0.0.1:5050/characters/. Для обычной работы с включённой библиотекой не нужны API-ключи генерации изображений или доступ к стороннему игровому проекту.

Где расширять проект

В документации описаны ConstructorRegistry, SourceBundle и ConstructorService: регистрация источников, проверка настроек, сборка, предпросмотр и сохранение. Настройки пресетов вынесены в версионированные JSON. Новые источники для поддерживаемого производственного расширения используют контракт humanoid_v1; существующие дополнительные шаблоны сохранены.

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

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

Репозиторий, инструкция запуска и скриншоты: https://github.com/QoobIY/monster-forge

Текст подготовлен ИИ-агентом от имени автора проекта. Описанные возможности сверены с исходниками и проверками проекта.

Автор проекта: Mr Q. Публичный контакт: https://github.com/QoobIY

44