LL3M (Large Language 3D Modeler, Языковая модель для трёхмерного моделирования) использует мощь больших языковых моделей, чтобы автоматически генерировать Python‑код для создания и редактирования 3D‑объектов в программе Blender.
Разработкой LL3M занимается исследовательская группа 3DL при Чикагском университете под руководством профессора Раны Ханоки.
Принцип работы прост: LL3M воспринимает текстовые инструкции от пользователя и превращает их в выразительные формы с нуля. Так удаётся управлять геометрией, добиваться тонкой и сложной проработки модели — и всё это через код. В отличие от классических LLM‑моделей, которые ограничены процедурными скриптами и примитивами, LL3M не накладывает ограничений на геометрию, композицию или внешний вид будущего объекта.
Используя высокоуровневый код как представление трёхмерной сцены, LL3M работает по принципу последовательных улучшений, а также совместного с человеком творчества. Агент генерирует код автоматически, анализирует результат и подвергает его визуальной самокритике. Пользователь, в свою очередь, может вносить высокоуровневые правки на любом этапе. Сгенерированные структуры Blender остаются прозрачными и читаемыми: код снабжён понятными параметрами и легко редактируется.
Алгоритм LL3M разбит на три условные стадии: первичное создание, автоматическая корректировка и корректировка с участием пользователя. В каждой из фаз задействованы разные агенты, отвечающие за свои этапы.
На этапе первичного создания пользователь вводит описание объекта — например, «стул». Агент‑планировщик раскладывает модель на составные элементы: ножки, спинку, подлокотники. Далее поисковый агент с помощью технологии RAG обращается к документации Blender API и подбирает подходящие решения. На основе полученной информации кодирующий агент пишет Python‑код для сборки 3D‑модели.
На фазе автокоррекции подключается агент‑критик, который оценивает результат и указывает на недочёты. После этого кодирующий агент снова переписывает код с учётом исправлений. Наконец, агент‑проверяющий сверяет, были ли правки внесены корректно. Если всё верно — процесс идёт дальше.
В фазе корректировки с участием пользователя система получает обратную связь. Кодирующий агент вносит изменения в код, а агент‑проверяющий удостоверяется, что пожелания пользователя были учтены точно.
На иллюстрации показано, как та или иная модель проходит через три стадии.
Вот примеры объектов, созданных с помощью LL3M через следующие промпты:
скейтборд с фиолетово-розовым градиентом;
пятибарабанная красная ударная установка с тарелками;
запускающаяся красная ракета;
регулируемая настольная лампа;
мельница в мультяшном стиле;
замок из песка;
элегантное чёрное пианино;
розовая башня «Восточная жемчужина»;
стильный китайский фонарь;
зелёный детёныш дракона, пышущий пламенем.
Важно, что на стадии пользовательской корректировки LL3M даёт возможность править один и тот же объект несколько раз подряд. При этом базовые характеристики сохраняются, меняются лишь указанные детали.
Ниже — пример кода Python, который LL3M сгенерировал для Blender. Код написан грамотно: присутствуют поясняющие комментарии, чёткие названия переменных (например, ширина клавиш) и понятная логика (например, расположение клавиатуры). Всё это облегчает дальнейшее редактирование.
LL3M умеет работать и со сложными сценами. Она способна сгенерировать несколько объектов и разместить их в пространстве, выстраивая иерархию сцены: от простого дублирования геометрии (instancing) до отношений «родитель — потомок». По запросу кодирующий агент может применить такие связи даже внутри одного сложного объекта — например, лампы. Благодаря этому, получается иерархическая структура, которую легко читать человеку.
Делегируйте рутинные задачи вместе с BotHub! По ссылке вы можете получить 100 000 бесплатных капсов и приступить к работе с нейросетями прямо сейчас.
Источник: habr.com