Салют, Хабр! В прошлом году мы рассказали о наших исследованиях и разработках в сфере генеративных моделей для 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.

 

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

Комментарии (9)


  1. goldexer
    13.05.2025 14:49

    Будем посмотреть. Пока что у нейросетей есть серьезные проблемы с отношением количества полигонов к качеству деталей раз, правильной обработкой любых выступающих частей (а полы плащей, хвосты, ручки судуков, волосы - это вообще ужас) - два, проблемы с разверткой - три и наконец иерархия чаще всего отсутствует, как таковая, или, в лучшем случае, будет... кхм, плохонькой. Сейчас глянем, что вы там наваяли и может ли это выдать хоть сколько нибудь годный результат)


  1. SinsI
    13.05.2025 14:49

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

    А нельзя ли сделать Style Transfer, как для моделей генерации картинок в Stable Diffusion?

    Дать пару-тройку references гораздо проще чем пытаться описать стиль словами.


    1. sthfaceless
      13.05.2025 14:49

      Скоро будет доступна генерация по картинке, тогда вы сможете задать любой стиль картинке с той же Stable Diffusion и по ней сделать 3D модель.


  1. pechkinkorp
    13.05.2025 14:49

    Зачем нужна авторизация через сбер айди?

    Лучше бы просто ограничили скорость генерации, чем авторизацию через , по сути, банковское приложение


  1. AlKnight
    13.05.2025 14:49

    Попробовал сейчас вашу генерацию. Генерация лиц вообще оставляет желать лучшего, топология моделей тоже нуждается в доработке. Но начало положено, удачи вам в этом направлении! Возможно будет интегрировать сервис в такие приложения как Blender или Maya?


    1. sthfaceless
      13.05.2025 14:49

      Интеграция в приложения в виде, например, плагинов в планах, но, как вы сами заметили, качество моделей в приоритете)


  1. AleGen
    13.05.2025 14:49

    Чото как-то плохо.

    Попробовал сгенерить просто правильную геометрическую фигуру - усечённый конус с определёнными размерами для печати на 3D-принтере, промпт был примерно такой: "усечённый конус для печати на 3D-принтере со следующими размерами: ширина (диаметр) конуса у основания - 22 мм., ширина (диаметр) конуса у вершины - 16 мм., высота конуса - 46 мм.". В итоге выдал 4 варианта, из которых 3 - какая-то дичь типа ваз неправильной формы, и только один - конус, но со скруглением на вершине, и совершенно другой высотой (приблизительно - раза в 2 меньше заданной).

    Сбер, несолидно (впрочем, как и всегда - к Сберу у меня уже лет 10 нет доверия - мощная показуха при качестве ниже плинтуса).


    1. sthfaceless
      13.05.2025 14:49

      Сейчас наша модель для создания 3D объектов де факто работает по картинке, то есть ваше описание модели уже скорее всего не воспроизводится на этапе создания картинки по тексту, такая проблема есть и она общая для всех известных в мире подходов создания картинок по тексту.

      Для создания точной 3D модели, соответствующей описанию детали с ее размерами, мы работаем над другим подходом в рамках упомянутого проекта генеративного проектирования.


  1. Kden2019
    13.05.2025 14:49

    Где почитать про промты для моделей - ликбез так сказать.