Если ты когда-нибудь пробовал генерировать 3D-модели через популярные диффузионные нейросети, то наверняка помнишь смесь восторга и тихого ужаса. Ты вводишь запрос «шестерня для редуктора» или «футуристический шлем», алгоритм бодро выдает картинку, ты скачиваешь файл OBJ... открываешь его в редакторе и хватаешься за голову. Сетка представляет собой бесформенный комок из сотен тысяч слипшихся треугольников. Подвинуть грань нельзя, изменить диаметр отверстия невозможно, а при попытке отправить такой шедевр на 3D-печать слайсер выдает десятки ошибок незамкнутой геометрии.
Китайская лаборатория Moonshot AI решила положить конец этому пластилиновому безумию. В своей новой флагманской модели Kimi K3.1 Pro, вышедшей 23 октября 2026 года, инженеры сделали ставку не на аппроксимацию вокселей, а на чистый процедурный код. Модель генерирует исполняемые скрипты для Blender, параметрические модели CAD и трехмерные веб-сцены на Three.js. Давай разберемся, почему именно код стал святым Граалем трехмерного моделирования в ИИ и как устроен этот конвейер на практике.
От нейросетевого пластилина к математически точному коду
Флагман Kimi K3.1 Pro построен на базе колоссальной архитектуры Mixture of Experts (MoE) с суммарным объемом в 2,8 триллиона параметров (2.8T) и 104 миллиардами активно задействованных параметров на каждом токене. Благодаря такой мощности модель прекрасно оперирует пространственными представлениями и математической логикой.
Главный концептуальный сдвиг заключается в отказе от генерации полигональной сетки «в лоб». Вместо того чтобы выдумывать координаты каждой вершины, Kimi генерирует процедурный программный код на языке Python для Blender (bpy), скрипты для CadQuery или OpenSCAD, либо сцены на JavaScript с библиотекой Three.js.
Почему это переворачивает всю индустрию?
- Идеальная топология (Clean Topology): код создает правильные четырехугольники (quads), аккуратные фаски и логичные направляющие ребер (edge loops), которые легко анимировать и деформировать;
- Параметрический контроль: если тебе нужно изменить количество зубьев у шестерни с 12 до 24 или увеличить посадочный диаметр с 15 до 20 мм, не нужно перегенерировать модель заново — достаточно поправить одну цифру в коде;
- Микроскопический размер: вместо передачи сотен мегабайт «сырых» полигонов модель оперирует текстовым скриптом размером в пару килобайт.
В специализированном бенчмарке инженерного моделирования BenchCAD модель Kimi K3.1 Pro в связке с внешним исполнителем кода набрала рекордные 92,7% точности, уверенно оставив позади Claude 3.5 Sonnet (78,2%) и GPT-5.4 (71,4%). Как мы отмечали в подборке тестов семейства Kimi K3.1 Pro, именно специализированная алгоритмическая база позволяет этой модели удерживать планку в прикладном кодинге.
Процедурный конвейер для Blender: геометрия без плагинов
Самый впечатляющий сценарий — прямая генерация скриптов для пакета Blender. Модель обучена на официальном API bpy и знает все тонкости контекста версий Blender 4.x. Она генерирует чистые процедуры: очищает сцену, создает примитивы, выполняет булевы операции, навешивает процедурные фаски (Bevel Modifier) и сабдив (Subdivision Surface).
Вот типичный пример процедурного скрипта, который Kimi K3.1 Pro создает по запросу на построение механической детали — ступенчатого вала с проточкой и фасками:
import bpy
import math
def create_stepped_shaft(base_radius=1.2, shaft_length=4.0):
# Очистка сцены от старых мешей
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False)
# Создание основной ступени вала
bpy.ops.mesh.primitive_cylinder_add(
vertices=32,
radius=base_radius,
depth=shaft_length,
location=(0.0, 0.0, shaft_length / 2.0)
)
shaft = bpy.context.active_object
shaft.name = "Drive_Shaft_Core"
# Добавление посадочного фланца
bpy.ops.mesh.primitive_cylinder_add(
vertices=32,
radius=base_radius * 1.6,
depth=0.8,
location=(0.0, 0.0, 0.4)
)
flange = bpy.context.active_object
flange.name = "Mounting_Flange"
# Объединение геометрии в единый меш
ctx = bpy.context
ctx.view_layer.objects.active = shaft
shaft.select_set(True)
flange.select_set(True)
bpy.ops.object.join()
# Сглаживание нормалей и процедурная фаска
bpy.ops.object.shade_smooth()
bevel = shaft.modifiers.new(name="Bevel_Edge", type='BEVEL')
bevel.width = 0.05
bevel.segments = 3
bevel.limit_method = 'ANGLE'
bevel.angle_limit = math.radians(35.0)
return shaft
if __name__ == "__main__":
create_stepped_shaft()
Этот скрипт исполняется в Blender за доли секунды и дает твердотельную геометрию с правильными нормалями, полностью готовую к текстурированию или экспорту.
Инженерный CAD и веб-графика: от OpenSCAD до Three.js
Помимо Blender, Kimi освоила генерацию моделей для веб-приложений и промышленного производства. Внутри платформы Moonshot AI запущен сервис 3D Make, где пользователь в текстовом чате описывает объект и сразу крутит его в интерактивном окне браузера.
Под капотом фронтенд использует легковесный рендеринг на Three.js. Модель сама собирает сцену, расставляет источники освещения, настраивает камеру с орбитальным контролем (OrbitControls) и описывает математику полигонов. Вот как выглядит фрагмент сгенерированного кода для интерактивного отображения параметрического узла в браузере:
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
// Инициализация сцены, камеры и рендерера
const scene = new THREE.Scene();
scene.background = new THREE.Color(0x1a1a24);
const camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 100);
camera.position.set(5, 4, 6);
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
document.body.appendChild(renderer.domElement);
const controls = new OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
// Построение параметрического кронштейна
const bracketGroup = new THREE.Group();
const baseGeo = new THREE.BoxGeometry(3.0, 0.4, 2.0);
const matMetal = new THREE.MeshStandardMaterial({
color: 0x3d72b4,
metalness: 0.8,
roughness: 0.25
});
const baseMesh = new THREE.Mesh(baseGeo, matMetal);
baseMesh.castShadow = true;
bracketGroup.add(baseMesh);
// Освещение сцены
const dirLight = new THREE.DirectionalLight(0xffffff, 2.5);
dirLight.position.set(6, 8, 4);
dirLight.castShadow = true;
scene.add(dirLight);
scene.add(new THREE.AmbientLight(0x404050, 1.2));
scene.add(bracketGroup);
function animate() {
requestAnimationFrame(animate);
controls.update();
renderer.render(scene, camera);
}
animate();
Для физического прототипирования модель умеет экспортировать результат в формат STL для прямой отправки на слайсер 3D-принтера, строго проверяя замкнутость оболочек (manifold geometry).
Ограничения метода: где процедурный подход пасует
Несмотря на триумф в твердотельном и архитектурном моделировании, у подхода Kimi есть свои естественные границы:
- Органическая скульптура: смоделировать кодом человеческое лицо, складки ткани или шерсть животного практически невозможно — формулы получаются чудовищно сложными. Для органики традиционная диффузия или ручной скульптинг в ZBrush пока остаются вне конкуренции;
- Безопасность выполнения кода: выполнение произвольных скриптов Python требует строжайшей песочницы. Если запустить сгенерированный скрипт локально без проверки, он теоретически может затронуть файловую систему или выполнить стороннюю команду;
- Разнобой в API: Blender регулярно меняет синтаксис внутренних модулей от версии к версии. Модель иногда может использовать устаревшие вызовы
bpy.opsвместо прямого манипулирования структурами данныхbpy.data.
Kimi K3.1 Pro задает новый стандарт качества для индустрии. Модель доказала: будущее генеративного 3D лежит не в хаотичном нагромождении треугольников, а в чистой математике и строгой архитектуре программного кода.
