Skip to content

v0.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 Oct 09:21
· 1 commit to main since this release
ac9bf8c

v0.9.0 — Рельеф по глубине: нейросеть прямо в приложении

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

🧠 Рельеф по глубине

  • Три источника рельефа в блоке «Режим глубины»: яркость картинки (по умолчанию), глубина от нейросети и карта глубины из файла. Цвет каждого филамента — средний цвет картинки внутри своего слоя глубины, поэтому предмет переднего плана получает собственные филаменты, а не смешивается с фоном той же яркости.
  • Depth Anything V2 Small (квантованная, 27 МБ) на ONNX Runtime Web, в отдельном потоке: интерфейс не замирает. Первая оценка занимает несколько секунд (около 5 с на тестовой картинке 640×480, включая загрузку модели), потом результат переиспользуется — ползунки, размер и число цветов пересчитываются без повторной оценки.
  • Только порядок, не расстояния. Глубина говорит «ближе / дальше»; миллиметры задают основание и максимальная высота. Для картинок, которые нейросеть прочитала наоборот, и для эффекта врезанного изображения есть «Инвертировать глубину». Если на картинке почти нет перепада глубины, рельеф строится по яркости — плоская плита с полосами цвета никому не нужна.
  • Контраст, «Детали», сглаживание, дизеринг и слияние близких цветов работают поверх глубинного рельефа так же, как поверх яркостного. Переключатель «светлое / тёмное выше» и режим «по цветам изображения» при глубине неактивны, а режим каталога катушек и глубина взаимоисключают друг друга.
  • Если модель не загрузилась, картинка всё равно обрабатывается по яркости, причина видна под переключателем, а повторный выбор после исправления работает.

🗺️ Своя карта глубины

  • PNG, 8 или 16 бит — серый, серый с прозрачностью, RGB, RGBA. 16 бит читаются собственным декодером без потерь: плавный градиент печатается плавным склоном, а не террасами (<canvas> браузера свёл бы его к 8 бит).
  • По умолчанию светлее — ближе; для обратного соглашения включается инверсия. Полностью прозрачные пиксели остаются на уровне основания при любом направлении глубины, поэтому вырезка с прозрачным фоном печатается без ступеньки вокруг.
  • Карта растягивается под картинку (если пропорции разные, приложение скажет), плоский фон остаётся одним слоем, а не режется на полосы. Однотонная карта не используется — рельеф строится по яркости.
  • Ограничения: файл до 64 МБ, до 16 мегапикселей (4096×4096), без чересстрочной развёртки; повреждённый или неподдерживаемый файл даёт понятную ошибку и не ломает текущий результат.
  • Карту можно получить из любой программы глубины или из Blender; готовый путь через Unique3D описан в README как направление (самим конвейером внутри приложения мы не пользуемся — он требует видеокарту NVIDIA).

💾 Проекты и экспорт

  • Источник рельефа и «инвертировать» запоминаются в настройках, в проекте и в шагах отмены/повтора. Старые проекты открываются по яркости, как раньше.
  • Карта из файла входит в сохранённый проект — вместе с картинкой, потому что палитра записана в порядке слоёв глубины и имеет смысл только с тем же рельефом. Если при открытии рельеф восстановить не удалось (карта повреждена, модель недоступна), проект открывается по яркости с автоматическими цветами и сообщением — накладывать сохранённые цвета на другой порядок слоёв хуже, чем не накладывать.
  • Describe.txt и 3MF называют источник рельефа: вместо «светлое выше» пишется «relief from a depth map», а в метаданных 3MF появились ReliefSource и InvertDepth.

🔒 Офлайн и лицензии

  • Всё считается локально. Модель и рантайм WebAssembly вшиты в приложение, политика безопасности страницы по-прежнему не пускает запросы наружу — это закреплено тестом.
  • Лицензии вшитых компонентов лежат в сборке: модель Depth Anything V2 Small — Apache-2.0, ONNX Runtime — MIT; тексты и уведомления о стороннем коде — в THIRD_PARTY_NOTICES.txt и THIRD_PARTY_NOTICES_ONNXRUNTIME.txt в корне приложения. Другие размеры модели (Base, Large) выпущены под некоммерческой лицензией и не включены.

⚠️ Что стоит знать при обновлении

  • Размер вырос. Из-за вшитой модели и рантайма deploy-пакет hueforge-web-deploy-v0.9.0.zip весит около 25 МБ (было доли мегабайта), установщик настольной версии тоже заметно больше; автообновление скачает его целиком.
  • Крупная карта глубины декодируется в основном потоке: лимит в 16 мегапикселей ограничивает паузу, но на слабом ПК большая карта даст заметную задержку.
  • Как проверено. 523 автотеста, плюс прогон в реальном Chromium (production-сборка и dev-сервер) и в Electron под Linux (из каталога и из app.asar) на настоящей модели; установщик для Windows собирает CI.

Полный changelog: v0.8.9...v0.9.0