Как я устал дублировать .blend-файлы и написал свою Git для 3D

Вместо предисловия

Compare на вкладке Selected Object работает некорректно — его сломал ИИ. Код аддона не самый «чистый», и вообще это, по сути, прототип. И вообще я потратил своё время и деньги, поэтому ваши гневные отзывы можете отправлять Деду Морозу в письменном виде. Когда ты моделишь в Blender, особенно если это что‑то сложное, очень быстро приходит момент, когда хочется сохранить «этот вариант»… и «этот тоже… а вдруг переделаю?»

И тут у тебя в папке уже 10 копий:

model_v2.blend
model_v2_FINAL.blend
model_v2_final_ACTUALLY.blend
model_old_backup_really_old.blend


Пару месяцев назад я именно так и мучился, пытаясь придумать красивую топологию для модели. Вертел сцену, сохранял копии, создавал дубликаты объектов — надоело. И я решил написать с помощью ИИ свою систему контроля версий, заточенную под 3D.

Так родилась Difference Machine. Сначала это был небольшой аддон, который сохранял выделенные mesh-объекты как JSON‑файлы с геометрией, материалами и полным пакетом текстур. Это было неэффективно и занимало много места, так как текстуры каждый раз дублировались. Через пару итераций система превратилась в полноценную систему контроля версий.



Почему не просто Git?


Git, конечно, штука отличная. Но он плохо дружит с бинарниками. Да, есть Git LFS — но это отдельный сервис, плюс ограничения, плюс ещё один слой сложности. А я хотел просто: один бинарник, один плагин — и всё работает «из коробки».

Поэтому я написал Forester — это своего рода «Git, но для 3D». Работает как привычный Git: add, commit, branch, checkout, diff, stash… Но при этом изначально заточен под двоичные файлы, особенно .blend.

Название «Forester» («Лесник») отсылает к управлению «ветками», а вся система — к роману «Машина различий» (Difference Engine).



Что умеет Difference Machine?

Система состоит из двух частей:

1. Forester — CLI‑движок на Go

Это основа, написанная на Go, которая работает из терминала. Она умеет:

  • Двухэтапный коммит как в Git: add → commit.
  • Diff для текстовых файлов с поддержкой side‑by‑side сравнения.
  • Reflog — журнал операций, который позволяет восстанавливать «удалённые» коммиты.
  • Garbage Collection — автоматическая очистка старых данных с настройкой срока хранения.
  • Блокировка файлов — для командной работы.
  • Хукиpre-commit, post-checkout и другие.
  • Stash — временное сохранение изменений без коммита.


2. Аддон для Blender — графический интерфейс

Чтобы не лезть в терминал, я сделал плагин для Blender. Он позволяет:

  • Инициализировать репозиторий в один клик.
  • Создавать коммиты, ветки, теги.
  • Просматривать историю и сравнивать версии.
  • Загружать отдельные объекты из коммитов — можно посмотреть, как выглядела модель в прошлом, не переключая всю сцену.
  • Сохранять объекты как ассеты — выделил объект, нажал — он сохраняется в отдельный .blend в папке assets.
  • Работать со stash прямо из интерфейса.

Как безопасно удалять коммиты?

Forester использует механизм reflog, как и Git, но более прозрачно:

  • forester commit --delete — помечает коммит на удаление.
  • forester gc — удаляет только те коммиты, у которых истёк срок хранения в reflog (по умолчанию — 90 дней).
  • forester gc --dry-run — показывает, что будет удалено, без реального удаления.

В отличие от Git, где нужно помнить про git gc, здесь всё происходит автоматически и с возможностью предварительного просмотра.




А как же облако и командная работа?

Удалённых репозиториев, как в GitHub, пока нет. Forester — это локальная система.

Но ничто не мешает вам положить проект на NAS или просто синхронизировать папку через Syncthing / rsync / любой другой инструмент.

Плагин поддерживает блокировку файлов — так что несколько человек могут работать над проектом, не перетирая изменения друг друга.

Важное преимущество: ваши данные остаются у вас, а не у корпораций.




Что в планах?

Сейчас я с ИИ делаю GUI. Но я не команда из десятка разработчиков — просто один дизайнер интерфейсов, который для своего хобби устал плодить .blend.backup_03.blend.

Если будет интерес сообщества, можно развивать:

  • Плагины для других 3D‑редакторов (Maya, 3ds Max).
  • Облачный хостинг типа GitHub, но для 3D‑проектов.
  • Встроенную рендер‑ферму — запускаешь разные версии сцены параллельно.
  • CI/CD для игровых проектов — автоматическая сборка и тестирование.

Если кто‑то заинтересуется — возможно, расширим функционал. Но пока это мой личный инструмент, который, возможно, не нужен никому.

Репозиторий на Github
Установщик на Яндексе

497 0 850 1
0
RENDER.RU