YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

worldsculpt-pipeline

Статус: ✅ пайплайн прошёл целиком. scene.glb 299 МБ, 13 объектов, опубликован. Текстуры: ❌ не наложены — причины и обход в TEXTURES.md. Дата старта: 2026-09-20.


Документы: с чего начать

Файл О чём Кому
PIPELINE.md как повторить прогон: стадии и тайминги, контракт путей, все патчи, правило наблюдения тому, кто будет запускать
DATASET.md данные: что метод просит на вход, как разметить, какие объекты воспроизводимы, а какие нет тому, кто будет готовить свои данные
TEXTURES.md текстуры: что мешает, почему прогон был геометрическим, три варианта дальше тому, кто хочет материалы
STATUS.md дневник эксперимента: хронология, все блокеры и как они решались, полная таблица ловушек тому, кто разбирается, «почему так»
results/ 510 файлов: scene.glb, scene_mesh.glb, обзорные PNG, 24 рендера, видео тому, кому нужен результат

1. Что это за проект

WorldSculpt (Alaya Lab + Univ. of Tokyo, arXiv 2609.05416, сентябрь 2026) — генеративная «скульптовка» сцены: берёт сцену с готовой разметкой объектов и выдаёт композиционный меш, то есть отдельные меши на каждый объект, собранные в одну сцену.

Формально на входе:

Что Формат
кадры NNN.png
маски объектов по кадрам masks/<объект>/NNN.png
3D-боксы объектов в мировых координатах transforms.jsoninstances[].aabb_world
карты глубины (опционально) depth_gt/NNN.png

На выходе: _crops/ (вырезки объектов), _recon/ (меши по объектам), _scene/scene.glb (сцена целиком).

Внутри: Pixal3D (дообученный на перекрытых объектах)

  • TRELLIS.2 (базовое окружение) + DINOv3.

2. Почему это интереснее гауссиан

Три причины, и все три — прямые ответы на то, на чём умер прошлый проект.

  1. Выход — меш, а не гауссианы. Прошлый результат нельзя было даже показать: 246 292 гауссианы по 0.0003 радиуса дают 0.03–0.14 пикселя на экране, Blender их не рисует. Меш (scene.glb) Blender открывает штатно. Это снимает главную практическую боль.
  2. Вход — данные с готовой разметкой, а не сырые фото. Прошлый проект убило качество исходников: 8 бит, фон 5/255, весь объект в 30 уровнях из 256. Здесь авторы дают свой размеченный бенчмарк. Урок из CLOSED.md («начинать с данных, а не с кода») выполняется автоматически.
  3. Есть с чем сравнить. Опубликованы результаты авторов — значит, метод рабочий, и наш риск лежит в сборке окружения, а не в самой идее.

3. Результат

/vol/output/marble_serene_living_room_countryside_view/
    _recon/obj01..obj13/        mesh.pt + ss_coords.npz + ss_render.png
    _scene/scene.glb            299 027 036 байт   <- ЦЕЛЬ
    _scene/scene_mesh.glb       299 017 124 байт
    _scene/mesh_scene_3d.png    обзор: 13 мешей + AABB + камеры
    _scene/mesh_scene_topdown.png
    _scene/renders/scene.mp4    24 кадра @ 10 fps
    _scene/renders/view00..23.jpg

Валидация GLB: magic glTF, version 2, declared length == фактическому размеру, generator trimesh, 13 мешей / 13 узлов с именами obj01..obj13, 0 материалов (прогон геометрический — см. TEXTURES.md). 6 209 074 вершины, 12 499 862 треугольника, один буфер 299 016 120 Б, bbox ≈ 4 × 8.3 × 2.7 м.

Открывается в Blender 5.2 без аддонов. Сцена приходит с Z вверх, а импортёр glTF ожидает Y вверх, поэтому лежит на боку — лечение rotation_euler = (-90°, 0, 0) на корневых объектах, подробности в PIPELINE.md §6.

Публикация: hf upload rc=0, 510 файлов, 2 меша → livadies/worldsculpt-pipeline/results/marble_serene_living_room_countryside_view.

4. Данные

Целевая сцена marble_serene_living_room_countryside_view: 24 кадра 1280×720, 13 объектов, у каждого мировой AABB в transforms.json, маски по кадрам, карты глубины. Выбрана потому, что это пример из README авторов (самый обкатанный путь) и она ровно того размера, чтобы прогон стоил единицы долларов.

Главное ограничение: свои данные подключить нельзя — разметки нет

WorldSculpt работает не с фотографиями, а с размеченной сценой, и «разметка» здесь — не «приложить маску», а целый конвейер, которого в репозитории нет. Полный разбор — в DATASET.md §2; коротко:

Что нужно Чем это делают Есть в репозитории?
позы камер и внутренние параметры SfM/COLMAP или _step2/transforms.npz нет
маски объектов по кадрам SAM / GroundingDINO + трекинг нет
3D-боксы объектов в мировых координатах вывод из масок, глубины и поз нет
_step1/{vipe,da3,moge_anchor}_out.npz ViPE, Depth Anything 3, MoGe нет
_step2/transforms.npz отдельный шаг, ничем не описан нет

Практический вывод. Пока этот конвейер не воспроизведён, единственные данные, на которых WorldSculpt запускается, — бенчмарк авторов (Marble и UE-MeshyScene), где разметка уже лежит готовой. Свои фотографии — это не «следующий шаг», а отдельный проект сопоставимого размера, причём без критерия правильности.

Про интернет-архив: не подходит

Проверено — не подходит. Репозиторий не умеет делать вход из фотографий: его точка входа требует _step1/*.npz и _step2/transforms.npz, а ни один скрипт в репозитории их не создаёт. Поиск по archive.org по subject:(photogrammetry) OR subject:(3D scan) даёт 3855 записей, но это готовые 3D-модели (Thingiverse), софт и книги — формата «кадры + маски по объектам + мировые 3D-боксы» там нет.

5. Что нужно, чтобы это запустить

Требование Вес / объём Статус
Данные Marble 347 МБ ✅ скачано, проверено
LoRA WorldSculpt 341 МБ ✅ на томе (steps=15000)
Pixal3D + _mv-варианты + декодеры 44 ГБ ✅ на томе, проверено по размерам
Окружение TRELLIS.2 6 CUDA-расширений из исходников ✅ venv 7.8 ГБ на томе
GPU H100 (sm_90) ⚠️ Modal, платно — единицы долларов за прогон

Окружение TRELLIS.2 по setup.sh — это torch 2.7.0+cu126, flash-attn 2.8.3, плюс компилируемые из исходников nvdiffrast, nvdiffrec, CuMesh, FlexGEMM, o-voxel, плюс NATTEN. Шесть-семь CUDA-расширений. Это была самая тяжёлая часть проекта — и она пройдена.

Почему вес скачивания — не проблема

7 МБ/с с Hugging Face — это скорость этой машины. Но веса качает контейнер на Modal, у которого нормальный интернет (200+ МБ/с). Локально 44 ГБ не качаются вообще: на HF уходит только текстовая полезная нагрузка. Приём отработан и в прошлом проекте — см. livadies/blender-3dgs-pipeline, §1.6.

6. Ключевые блокеры (все решены)

Полный разбор — в STATUS.md, здесь только суть.

Блокер 1: канал связи с Modal. Клиент на этой машине рвёт gRPC-поток каждые 3–4 минуты (StreamTerminatedError на AppHeartbeat). Обход: окружение собирается не в слоях образа, а функцией внутри работающего контейнера, в venv на томе. Контейнер не зависит от клиента и переживает обрыв.

Блокер 2: компилятор. Базовые образы NVIDIA CUDA экспортируют CXX=clang++, но clang не ставят, а torch берёт CXX для финальной линковки — все объектные файлы собираются успешно, падает на ссылке, и выглядит это как проблема в коде. Лечение: CC=gcc, CXX=g++.

Блокер 3: gated-репозиторий briaai/RMBG-2.0. pixal3d_image_to_3d.py:123 строит модель удаления фона безусловно, до чтения любых флагов, а pipeline.json называет gated-репозиторий. Лечение: единственная правка исходников за проект (modal_ws_patch.py) — rembg делается необязательным, двумя правками, потому что по отдельности ни одна не работает. Подробности и почему модель не нужна — в PIPELINE.md §3.

7. Чего здесь делать не будем

  • Не подключать фото из интернет-архива — пути нет, см. §4.
  • Не менять SAMPLER, SS_STEP, SHAPE_STEP без причины. inference.sh специально не имеет значений по умолчанию: неверный SS_STEP даёт правдоподобную сцену из не тех весов, и заметить это потом почти невозможно.
  • Не запускать на A100 «на всякий случай», если NATTEN под sm_90 собрался: расхождение с конфигурацией авторов превратит отладку в гадание.

🙏 Благодарности

WorldSculpt (Alaya Lab, Univ. of Tokyo), Pixal3D, TRELLIS.2, DINOv3, Modal.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support