Новая генеративная модель Kandinsky 3D для создания 3D-объектов. Как она работает и кому будет полезна

от автора

Салют, Хабр! В прошлом году мы рассказали о наших исследованиях и разработках в сфере генеративных моделей для 3D-контента, а теперь открываем доступ для тестирования. Встречайте первый российский сервис для генерации 3D-моделей по текстовому описанию или изображению — Kandinsky 3D.

Введение

Искусственный интеллект уже стал незаменимым помощником в задачах, охватывающих самые разные модальности: он уверенно работает с текстом, сочиняет музыку, монтирует и создаёт фильмы. Однако работа с 3D-объектами — одна из самых сложных задач для AI. И одна из самых востребованных для множества отраслей от дизайна игр до робототехники.

Последние полгода индустрия генерации 3D-объектов стремительно развивается. Ведущие исследовательские лаборатории, такие как Tencent, Microsoft, Google, представили ряд работ, которые существенно изменили представление о возможностях генеративных моделей в 3D (Hunyan3d, Trellis). Сегодня существуют как продукты для широкой аудитории (Tripo, CSM, Rodin, Meshy), так и более профессиональные инструменты, такие как разработки Autodesk. Кроме того, появляются встроенные в крупные платформы решения — пример тому Roblox Cube.

Особенно важно отметить несколько ключевых технологических сдвигов:

  • появились новые подходы к автокодированию 3D-мешей: на основе гауссовых представлений (например, Trellis), неструктурированных векторов (Shape2Vec, Rodin) и иерархических моделей (Dora);

  • были разработаны пайплайны для генерации текстурных PBR-моделей, позволяющие создавать высококачественные текстуры для произвольной геометрии;

  • существенно улучшились архитектура и алгоритмы обучения диффузионных моделей, что повысило стабильность и выразительность генерации (DiT).

Мы начали работать в этом направлении ещё в прошлом году: собирали датасеты, тестировали архитектуры и исследовали новые принципы обучения. Всё это привело к созданию генеративной модели Kandinsky 3D, более совершенной и универсальной по сравнению с нашими предыдущими решениями. Эта модель открывает новые возможности для всех, кто создаёт и применяет 3D-объекты — от дизайнеров и художников до инженеров и исследователей.

Наша цель — сделать создание 3D-контента с помощью искусственного интеллекта таким же простым и доступным, как генерация изображений или текста. Сегодня Kandinsky 3D позволяет создавать 3D-модели по текстовому описанию или на основе изображения. Например, можно сфотографировать любимого плюшевого медведя, а затем получить его трёхмерную модель в любом удобном формате для всех современных 3D-движков: Blender, Maya и других.  Процесс создания 3D-объектов ещё никогда не был таким простым и интуитивным.

Архитектура

В отличие от больших мультимодальных языковых моделей вроде GigaChat, Kandinsky 3D по принципу строения схож с такими диффузионными моделями, как Sora или Kandinsky Video. Ключевая особенность именно 3D генеративных моделей такого класса — разделение генерации 3D-ассета на два последовательных этапа: геометрический и текстурный. Это повторяет привычный рабочий процесс 3D-моделлеров и художников.

На первом этапе геометрический генератор создает объёмную форму объекта, как если бы её вручную моделировал 3D-дизайнер: формирует структуру, силуэт и детали поверхности.  Для обучения такой модели на большом датасете разнообразных геометрических данных из разных источников обучается вариационный автокодировщик (VAE), состоящий из энкодера и декодера. Он позволяет закодировать геометрию в латентное пространство меньшей размерности. Благодаря отдельному геометрическому авто энкодеру модель может обучаться на данных, которые содержат только информацию о внутреннем строении без информации о текстуре поверхности (например, CAD-моделях). Затем обучается трансформерный денойзер, оперирующий в этом латентном пространстве. Он пошагово восстанавливает структуру объекта из случайного шума, а декодер преобразует полученное латентное представление объекта в полноценную 3D-геометрию. Благодаря трансформерной архитектуре модель легко интегрирует дополнительную информацию через механизм кросс-аттеншена, что позволяет задавать параметры генерации с помощью текста, изображений или других модальностей. В нашем случае для этого используется кодировщик DINOv2, который помогает геометрическому генератору ориентироваться на заданный пример, будь то фотография или иллюстрация. 

На втором этапе подключается текстурная модель, которая накладывает фотореалистичные PBR-текстуры на готовую геометрию — так, как это делает 3D-художник. Для этого геометрическая заготовка рендерится с разных ракурсов и подаётся на вход дообученной 2D-диффузионной картиночной модели, которая умеет сохранять визуальную согласованность между всеми ракурсами и при этом максимально точно соответствовать оригинальному запросу или изображению.

Обе части Kandinsky 3D — геометрический генератор и текстурная модель — построены на базе диффузионных трансформеров и используют самые современные подходы GenAI, включая DiT, Flow Matching и другие. Разделение позволяет точно контролировать каждый этап генерации, перезапускать их отдельно и добиваться более предсказуемых и качественных результатов, что ранее было невозможно в рамках единых моделей. Это даёт пользователям больше свободы и гибкости при создании 3D-контента, а значит, им удобнее применять нашу генеративную модель на практике. Ниже — три кейса, где Kandinsky 3D точно найдёт применение.

Геймдев

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

Одна из возможностей Kandinsky 3D — создание профессиональных моделей без привлечения специалистов. Буквально за один запрос можно получать готовые к интеграции в движок 3D-объекты с правильной квадратизированной сеткой — модели выгружаются в формате .fbx с текстурой.

При этом возможны совершенно разные сценарии применения генератора 3D-моделей Kandinsky 3D:

  1. Быстрая подмена whitebox на визуально соответствующие задумке дизайнера ассеты как по 2D-референсной картинке, так и по текстовому описанию.

  2. Интеграция Kandinsky 3D прямо в игровой движок (Unreal Engine, Unity) и генерация объектов прямо в движке через API (например, для пользовательского контента — UGC).

  3. Генерация разнообразных пропсов, то есть элементов игрового окружения, для ассетов; создание объектов с разной степенью детализации (LODs).

Так, для вариативности пропсов можно сгенерировать в Kandinsky 3D варианты, похожие на референс. Например, создать несколько деревьев на основе сделанной 3D-художником в стилистике проекта модели дерева, чтобы быстро собрать игровой лес.

Слева — объект в стилистике проекта, сделанный 3D-художником, далее — генерации

Слева — объект в стилистике проекта, сделанный 3D-художником, далее — генерации

Другой пример: быстрая генерация моделей-пропсов для оформления улицы средневекового европейского города.

На каждую модель суммарно ушло около 40 секунд с учётом экспорта

На каждую модель суммарно ушло около 40 секунд с учётом экспорта

Генерация NPC для дальнейшего риггинга — создания скелетной структуры, которая позволит анимировать персонажа. Чтобы получить модель в удобной для риггинга позе, достаточно добавить в промпт фразу «full body view, center, character sheet, character in t-pose, front view».  

Ещё пример — классический набор предметов для RPG в средневековом сеттинге.

Рекомендация: добавляйте в промпты детальные описания стиля, который хотите получить. Например: «A cartoonish and humorous model of an angry android. Bright colors, exaggerated expressions, comic-style lines and motion effects, lighthearted and funny mood». Если модель получается излишне плоской, можно добавить после описательной части промпта «is volumetric»

Пример генерации game-ready объекта по промпту: «Стул деревянный. Realistic, PBR, Artstation, realism, detailed, redshift» с визуализацией геометрии.

Если вы генерируете по картинке, исходное изображение в идеале должно быть во фронтальной плоскости, с лёгким возвышением камеры. Поле зрения (Field of view, FoV) и угол съёмки (Angle of View, AOV) камеры не должны быть экстремальными. Если любое из этих условий нарушено, например, исходный снимок сделан на fisheye-объектив или сверху, пропорции генерации могут исказиться. Ниже — пример генерации по изображению из фотостока.

Слева — фото со стока, справа — результат генерации

Слева — фото со стока, справа — результат генерации

В целом внедрение генеративных 3D-моделей ускоряет процесс производства ассетов и позволяет фокусироваться на инновационных задачах, а не на рутинной доработке геометрии.

Концепты, где не нужна высокая точность, для 3D-печати

Конкретно для декоративной 3D-печати, где требования к точности ниже. Если требуется высокая итоговая детализация, модели для 3D-печати имеет смысл генерировать с большим количеством полигонов, чем для нужд геймдева. Затем модель можно экспортировать в STL, импортировать в соответствующее программное обеспечение для 3D-принтера — Slicer, адаптировать под технологические параметры конкретного 3D-принтера и материала, распечатать. Ниже — примеры печати сгенерированных 3D-моделей пластиком по технологии FFF.

Шахматная фигура

Шахматная фигура
Модель антропоморфного крокодила для выставки

Модель антропоморфного крокодила для выставки

Напомним, что Kandinsky 3D генерирует 3D-модели с текстурой. А значит, можно печатать и полноцветные фигурки, например, методом порошковой 3D-печати. Либо наносить текстуру поверх напечатанной заготовки в рамках отдельного этапа. 

Изделия для последующей доработки и оптимизации в САПР

Пока искусственный интеллект не способен на уровне человека генерировать граничные представления (B-rep) или деревья построения. Тем не менее, Kandinsky 3D и другие подобные модели вполне можно использовать в области малых серий, бионического дизайна и аддитивных технологий производства. Так, компания Autodesk внедряет подобные разработки в свои CAD-продукты. Генеративные технологии позволяют быстро прототипировать концепты, проводить последующую топологическую оптимизацию, генерировать сложные решётчатые структуры и экономить материалы за счёт анализа нагрузок.

Kandinsky 3D также можно использовать вместе с системами автоматизированного проектирования (САПР). Порой применение генеративной 3D-модели позволяет отказаться от дорогостоящего оборудования вроде 3D-сканеров и лидаров — их заменяет генерация по фото либо текстовому описанию. Например, для получения высококачественной CAD-модели из сгенерированного 3D-меша можно использовать следующий воркфлоу:

1. Когда модель сгенерирована в Kandinsky 3D и выгружена в формате .fbx, её следует сконвертировать в .stl  для работы в приложении САПР. Это можно сделать как в самых популярных пакетах 3D-моделирования, так и в онлайн-сервисах.

2. Далее нужно запустить тулбокс для аппроксимации поверхностей в САПР, которую вы используете, и поправить вручную полученные неточности.

3. После чего можно оптимизировать модель, установив дополнительные ограничения по допускам в точке крепления и пересчитав её в модуле расчета прочности.

Как попробовать

Потестировать модель прямо сейчас можно двумя способами:

1. На портале developers.sber.ru на страничке сервиса. Здесь всё предельно просто: достаточно ввести промпт и нажать «Создать», и сервис начнет работу.

2. С использованием GigaChat API. Этот способ немного сложнее. Перед началом работы с GigaChat API необходимо обзавестись токеном доступа. Токен — это уникальный ключ, который идентифицирует вашу учётную запись и предоставляет права на использование API.

Токен можно получить на официальном портале разработчика developers.sber.ru. Далее получаем access_token.

Код
import requests  api_key = "Ваш Authorization key из https://developers.sber.ru/" url = "https://ngw.devices.sberbank.ru:9443/api/v2/oauth"  payload={   'scope': 'GIGACHAT_API_PERS' } headers = {   'Content-Type': 'application/x-www-form-urlencoded',   'Accept': 'application/json',   'RqUID': '111559b6-de06-473c-b641-826b8e69b623',   'Authorization': f'Basic {api_key}' }  response = requests.request("POST", url, headers=headers, data=payload,verify = False)  access_token = response.json()['access_token'] 

После получения можно начинать генерировать.

Пример на Python
import requests # URL эндпоинта API url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"    # Заголовки запроса headers = {     "Authorization": f"Bearer {access_token}",     "Content-Type": "application/json", }  # Тело запроса с параметрами генерации payload = {     "model": "GigaChat-2-Max",     "messages": [         {             "role": "user",             "content": "Нарисуй 3D-модель ступицы Ford Transit"         }     ],     "functions":[{"name":"text2model3d"}] }  response = requests.post(url, headers=headers, json=payload, timeout=120,verify = False) print(response)

После успешного выполнения запроса API возвращает ответ в формате JSON. В нашем примере после запроса на создание 3D-модели ступицы Ford Transit получен следующий ответ:

Ответ
{'choices': [{'message': {'content': '<div data-model-id="d1450e78-5c56-4d16-ade0-279f411d32c3" fuse="true"/> Успешно создал 3D-модель ступицы Ford Transit.',     'role': 'assistant',     'functions_state_id': '69e4de0f-bde9-483b-9ec3-2cc01473fb5b'},    'index': 0,    'finish_reason': 'stop'}],  'created': 1746004676,  'model': 'GigaChat-2-Max:2.0.28.2',  'object': 'chat.completion',  'usage': {'prompt_tokens': 644,   'completion_tokens': 49,   'total_tokens': 693,   'precached_prompt_tokens': 0}} 

В нём содержатся:

  • идентификаторы созданной модели (data-model-id и data-vrmodel-id):

  • подтверждение успешного создания модели;

  • информация об использованных токенах;

  • метаданные запроса.

Следующий шаг после успешной генерации 3D-модели через GigaChat API — загрузка полученного объекта. Для него вам понадобятся:

  • API-токен (такой же, как для генерации);

  • ID модели, полученный в ответе на первый запрос;

  • эндпоинт для загрузки файлов.

Python-скрипт
import requests import os  # ID модели из предыдущего ответа (data-model-id или data-vrmodel-id) model_id = "d1450e78-5c56-4d16-ade0-279f411d32c3"  # Формируем URL для загрузки url = f"https://gigachat.devices.sberbank.ru/api/v1/files/{model_id}/content" # Заголовки запроса headers = {     "Authorization": f"Bearer {access_token}" } # Скачиваем FBX response = requests.get(url, headers=headers, stream=True,verify = False) if response.status_code == 200:     with open("model.fbx", "wb") as f:         for chunk in response.iter_content(chunk_size=8192):             f.write(chunk)     print("FBX скачан!") else:     print("Ошибка:", response.status_code, response.text)

Заключение

Релиз нашего сервиса — это только начало. В ближайших обновлениях мы планируем улушить качество геометрии и текстур, более детально проработать интеграцию с САПР, расширить поддержку русского культурного кода, реализовать расширенную поддержку необходимых сценариев, включая генерацию по multi-view и мультимодальным данным. Мы также готовим новый функционал для режима просмотра, который сделает взаимодействие с моделями удобнее и нагляднее, а таже конфигурируемый API для удобного практического использования.

Кроме того, мы работаем над редактором, который позволит совершенствовать сгенерированные объекты без их экспорта в сторонние инструменты. Появится возможность частично перегенерировать модель — например, заменить только отдельный элемент, не трогая всё остальное.

И это ещё не всё: в планах — разработка разных вариантов ретопологии (упрощения и оптимизации 3D-модели), расширенные настройки генерации и множество других улучшений, которые сделают инструмент максимально гибким, быстрым и удобным для разных сценариев использования — от геймдева до 3D-печати.

Также в рамках нашего совместного проекта c AIRI мы развиваем направление «Генеративное проектирование», где исследуем продвинутые решения для CAD в области промышленности и строительства. Планируем в ближайшее время рассказать об этом отдельно.

Следите за обновлениями — дальше будет ещё интереснее. А чтобы задать вопрос, внести свои предложения или предложить сотрудничество, пишите в Telegram @ipasechnik @charuyskaya.

 

Авторы: Михаил Мазуров, Наталья Соболева, Дарья Мусаткина, Фанзиль Набияров, Данил Ельцов, Игорь Пасечник, а также наши продуктовая и арт-команды — Борис Чуприн, Яна Чаруйская и Кирилл Храмков.


ссылка на оригинал статьи https://habr.com/ru/articles/908820/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *