sand3D: 3D-ассеты, которые можно читать и редактировать как код
sand3D позволяет языковым моделям создавать редактируемые 3D-ассеты с помощью компактного словаря Python, используя bpy из Blender для параметрического моделирования.

Основные моменты и результаты
sand3D предоставляет языковым моделям компактный словарь для создания 3D-объектов на Python. Разработанный Тибо Невё и Андреа Луа в Sandflow, он превращает программы в именованные детали, материалы и сочленённые сборки через bpy Blender. Изменение размера и повторный запуск программы пересоздают ассет. Публичный релиз объединяет библиотеку моделирования с наборами данных; он не предоставляет автономную обученную text-to-3D модель. Официальный репозиторий.
Пять карточек наборов данных содержат 66 887 объектов Objaverse, 24 495 CAD-объектов, 9 209 объектов Articraft, 2 334 объекта SimReady и 3 169 записей AutoMate: всего 106 094 объекта, включая 10 456 сочленённых объектов. В число AutoMate входят 2 297 отдельных деталей и 872 сборки. Каждая запись объединяет исполняемый код с визуализацией и экспортированным ассетом OpenUSD. Это коллекция реконструированных исходных ассетов, а не 100 000 вновь спроектированных механизмов. Официальные наборы данных.
Для сравнения токенов репозиторий использует o200k_base и исключает комментарии и docstring. Медианные отношения baseline/sand3D составляют 4,0× для написанного LLM Python-кода Blender на 30 CAD-деталях, 2,3× для 17 программ CadQuery, 6,0× для 13 программ FeatureScript и 2,0× для 12 программ Articraft. Это небольшие сравнения разных источников с отобранными программами sand3D; только 9 из 30 базовых программ Blender создают правильную деталь, а Articraft также представляет динамику. Они подтверждают заявление о компактности, но не универсальное повышение качества генерации. Подробности оценки.
Как это работает
Процесс создания выглядит так: предоставить API языковой модели или писать Python напрямую; описать сборку и её параметры; создать и разместить отдельные детали; объявить соединения и материалы; выполнить программу в bpy; проверить, исправить и экспортировать результат. API объёмом примерно 3 600 токенов помещается в промпт. Рекомендуемая структура программы сначала описывает план сборки, а затем реализует каждую деталь отдельно, сохраняя читаемость размеров и взаимосвязей размещения. Редактируемое представление — это исполняемый код геометрии и иерархия сцены; библиотека не реализует скрытое кодирование или диффузионное устранение шума. Рекомендации по написанию; API.
Словарь геометрии переходит от 2D-профилей к телам: rect и circle определяют сечения; extrude, revolve, sweep и loft создают объёмы; cut, pocket, shell и fillet редактируют их. Объекты Frame описывают положение и ориентацию, поэтому компонент можно разместить на именованной грани или локальном якоре вместо длинного списка мировых координат. group сохраняет отдельные сетки и материалы под одним родителем; join выполняет слияние; assembly добавляет именованные якоря к сгруппированному корню. Эти различия сохраняют информацию о том, какие детали относятся друг к другу, а какие остаются отдельно редактируемыми. Реализация сборки.
Пример со стиральной машиной делает механику наглядной: корпус поддерживает барабан, дверцу с кольцом, стеклом и ручкой, ящик и ручку управления. После размещения этих деталей в состоянии покоя функция joint записывает родителя, точку вращения, ось, тип и допустимый диапазон. Дверца поворачивается на 0–143°, ящик выдвигается на 0–200 мм, а барабан и ручка управления вращаются непрерывно. pose проверяет запрошенное значение и распространяет преобразования посредством прямой кинематики; геометрию она не пересоздаёт. seat удаляет объём, занимаемый вставленной деталью в состоянии покоя, вместо вычисления всей области её движения. Пример; Реализация соединений.
Создание наборов данных добавляет агентный цикл реконструкции: написать код, выполнить его, сравнить полученную поверхность с существующим исходным ассетом и внести изменения. Авторы ещё не опубликовали полный метод этого конвейера. F-мера наборов данных использует допуск 1% диагонали ограничивающего параллелепипеда. Пороговые значения приёмки составляют 0,70 для Objaverse и статических SimReady, 0,90 для CAD и жёстких объектов Articraft, а также 0,90 для каждой движущейся детали плюс корректные соединения для сочленённых ассетов. Это сообщаемые конвейером фильтры качества, а не результаты независимо измеренных тестов. Программы с ошибками выполнения или не прошедшие статические проверки исключаются. Методология набора данных.
Применения, доступность и будущие направления
Представление подходит для редактируемых вариантов ассетов, интерактивных механизмов и исследований создания 3D-объектов с помощью LLM. GLB экспортирует текущую позу, материалы и метаданные соединений в node extras; для работы с этими соединениями обычным средствам просмотра нужна дополнительная логика. URDF и USDA сохраняют механизм в состоянии покоя, причём USDA использует UsdGeom и UsdPhysics. OBJ/STL содержат только сетки. При экспорте длины масштабируются до метров. Параметры массы, трения и привода остаются за пределами описания динамики библиотеки, поэтому интеграция с симуляцией всё ещё требует доработки. Реализация экспорта.
Библиотека распространяется по лицензии Apache-2.0; релизы наборов данных используют CC BY 4.0, сохраняя лицензирование и атрибуцию исходных материалов. Текущий охват сосредоточен на объектах с жёсткими поверхностями, а реконструкция может не учитывать мелкие детали. Авторы называют органические формы направлением будущей работы; среди возможных дополнений — неявное смешивание, разбиение управляющей сетки, развёртки и лофты с переменным сечением, скелеты со скиннингом и процедурное смещение. Они также обещают больше предметных областей и готовящийся препринт; пока это лишь планы. В этом обзоре изучены официальная документация и исходный код на коммите 0d589a5, версия 1.6.2, по состоянию на 6 ноября 2026 года; бенчмарки не запускались независимо. Официальный релиз и ограничения.
Часто задаваемые вопросы
Даёт ли установка sand3D модель преобразования текста в 3D?
Она устанавливает библиотеку моделирования на Python. Языковая модель или человек должны написать программы с использованием её API; bpy выполняет их для создания ассетов. Наборы данных предоставляют примеры кода, а не автономный обученный генератор. Источник.
Как создать ассет другого размера?
Измените размеры, заданные в его программе, и запустите её повторно. Взаимосвязи размещения и именованные детали делают такие изменения проверяемыми. Автоматически обновляются только взаимосвязи, фактически закодированные в программе, поэтому проверьте пересобранный результат. Источник.
Готовы ли экспортированные механизмы сразу к физической симуляции?
URDF и USDA содержат структуру соединений, но для симуляции по-прежнему нужны параметры динамики, такие как масса, трение и привод. GLB хранит метаданные соединений в extras; приложение должно интерпретировать их для анимации механизма. Источник.




