Промты, которые превращают Blender и Maya в конвейер: моделлинг, риггинг и рендер без ручной рутины
Большинство 3D-художников используют нейросети как «умный поиск»: спрашивают, как сделать bevel, получают ссылку на документацию и идут читать её руками. Гораздо полезнее другой сценарий — просить модель сгенерировать готовый Python-скрипт под Blender API или MEL-команду для Maya, вставить его в редактор скриптов и сразу запустить. Это не замена художнику, а ускоритель рутины: массовое переименование объектов, процедурная геометрия, автоматический риггинг по маркерам, пакетный рендер.
Ниже — реальные промты, которые я использую в работе. Каждый даёт на выходе рабочий код, а не абстрактный совет. Важно понимать: LLM не «видит» вашу сцену, поэтому в промте нужно явно указывать версию софта, имена объектов и ожидаемую структуру. Чем конкретнее входные данные — тем меньше правок после генерации.
Официальные источники, на которые стоит опираться при проверке кода: документация Blender Python API, справочник MEL-команд Autodesk Maya, а также PEP 8 для стиля Python-кода.
1. Процедурная генерация геометрии по текстовому описанию
Самый частый запрос — «сделай мне процедурный объект». Промт должен фиксировать: тип объекта, параметры, топологию и способ создания через bmesh, а не через операторы, чтобы скрипт работал без активного 3D-курсора.
Промт:
Ты — технический художник по Blender 4.x. Напиши Python-скрипт для Blender Python API, который создаёт процедурную спиральную башню: N витков, радиус r, высота h, сегментов на виток s. Используй bmesh, не операторы. Добавь модификатор Subdivision Surface уровня 2. В конце выведи в консоль количество вершин и полигонов. Комментируй ключевые шаги.
Что получаем на выходе (фрагмент, который реально запускается):
import bpy, bmesh, math
N, r, h, s = 5, 2.0, 6.0, 24
bm = bmesh.new()
prev = None
for i in range(N * s + 1):
a = 2 * math.pi * i / s
z = h * i / (N * s)
v = bm.verts.new((r * math.cos(a), r * math.sin(a), z))
if prev:
bm.edges.new((prev, v))
prev = v
mesh = bpy.data.meshes.new("SpiralTower")
bm.to_mesh(mesh)
bm.free()
obj = bpy.data.objects.new("SpiralTower", mesh)
bpy.context.collection.objects.link(obj)
obj.modifiers.new("Subsurf", 'SUBSURF').levels = 2
print(len(mesh.vertices), len(mesh.polygons))
Такой скрипт — стартовая точка. Дальше можно попросить добавить скручивание (twist) или массив по кривой.
2. Автоматический риггинг по маркерам
Риггинг — самая дорогая часть пайплайна. Если у вас уже есть маркеры (empty или joint), LLM может собрать армтуру по именам.
Промт:
В сцене Blender есть набор empty-объектов с префиксом «MRK_»: MRK_hips, MRK_spine, MRK_head, MRK_arm_L, MRK_arm_R, MRK_leg_L, MRK_leg_R. Напиши скрипт, который создаёт армтуру Armature, добавляет кости между соответствующими парами маркеров и привязывает меш тела через модификатор Armature. Используй edit_bones. Проверь, что кости не имеют нулевой длины.
Результат — готовый скелет, который можно дошлифовать в Pose Mode. Для Maya аналогичная задача решается через joint -p x y z и skinCluster.
3. MEL-скрипт для массового переименования в Maya
Художники в Maya часто получают сцены с именами вида pCube1, pCube2, pSphere37. Ручное переименование — часы работы.
Промт:
Напиши MEL-скрипт для Maya 2026, который переименовывает все трансформы в выделении по шаблону: <префикс>_<номер с ведущими нулями>. Префикс спроси через promptDialog. Номера начинаются с 001. Сохрани порядок объектов таким, каким он был в outliner. Добавь проверку на дубликаты имён.
Ядро скрипта:
string $prefix = `promptDialog -title "Rename" -message "Prefix:" -button "OK" -default "asset"`;
string $sel[] = `ls -sl`;
int $i = 1;
for ($obj in $sel) {
string $newName = $prefix + "_" + `format "%03d" $i`;
if (`objExists $newName`) { warning ($newName + " exists"); continue; }
rename $obj $newName;
$i++;
}
4. Оптимизация UV: развёртка и упаковка
UV-развёртка вручную — это боль. В Blender есть bpy.ops.uv.smart_project() и bpy.ops.uv.pack_islands(). Промт помогает настроить параметры и пройтись по всем объектам коллекции.
Промт:
Напиши Blender Python-скрипт, который для каждого меша в коллекции «Assets» переходит в Edit Mode, выделяет всё, вызывает smart_project с angle_limit=66°, island_margin=0.02, затем pack_islands с rotate=True и margin=0.005. Выведи на каждый объект процент использованной UV-площади (посчитай через bmesh). Учти, что объекты могут быть скрыты — пропускай их.
Такой скрипт экономит десятки минут на каждой партии ассетов.
5. Настройка освещения по референсу
Промт про свет работает лучше, если задать желаемую схему словами: «tri-point», «soft box сверху + rim справа», «HDRI + area fill».
Промт:
В Blender 4.x настрой трёхточечное освещение для портретного рендера: key — Area 200W сверху-слева, fill — Area 80W справа, rim — Area 150W сзади. Все источники поверни на пустой Empty «LookAt» в центре сцены через Track To. Добавь World с HDRI, подключив ноду Environment Texture. Задай color management Filmic. Верни список созданных объектов.
6. Пакетный рендер с логированием
Пакетный рендер — классическая задача автоматизации. LLM отлично справляется, если указать формат вывода, движок и сколько кадров.
Промт:
Напиши Blender Python-скрипт для пакетного рендера всех объектов сцены по очереди: скрыть все, кроме одного, отрендерить в PNG 1920×1080, сохранить в /renders/<имя_объекта>.png. Движок — EEVEE Next, samples=64. По завершении каждого кадра пиши строку в /renders/log.txt с именем и временем. Обработай исключения так, чтобы падение на одном объекте не останавливало очередь.
Скелет:
import bpy, os, time
out = "/renders"
os.makedirs(out, exist_ok=True)
bpy.context.scene.render.image_settings.file_format = 'PNG'
bpy.context.scene.render.resolution_x = 1920
bpy.context.scene.render.resolution_y = 1080
for obj in [o for o in bpy.data.objects if o.type == 'MESH']:
for o in bpy.data.objects:
if o.type == 'MESH':
o.hide_render = (o != obj)
bpy.context.scene.render.filepath = os.path.join(out, obj.name + ".png")
t = time.time()
try:
bpy.ops.render.render(write_still=True)
with open(os.path.join(out, "log.txt"), "a") as f:
f.write(f"{obj.name}\t{time.time()-t:.1f}s\n")
except Exception as e:
print("fail", obj.name, e)
7. Деформация меша по кривой
Промт:
Blender Python: возьми активный меш и Curve-объект «Path». Добавь модификатор Curve с этой кривой. Установи use_curve_radius=False. Примени модификатор через bpy.ops.object.modifier_apply. Проверь, что меш имеет достаточное количество сегментов вдоль оси деформации, иначе выведи предупреждение.
8. Материалы на нодах: PBR-сетап пакетно
Промт:
Напиши Blender Python-скрипт, который создаёт Principled BSDF-материал и подключает три текстуры (BaseColor, Roughness, Normal) из папки /textures/
/. Для Normal поставь Non-Color colorspace. Пропиши материал каждому мешу в коллекции, имя материала = имя меша + «_mat».
9. Maya: автоматическая привязка контроллеров к ригу
Промт:
Maya 2026 MEL: создай NURBS-кривые-контроллеры (круг) для каждой кости скелета, расположи их в позиции joint, задай orient constraint на соответствующую кость, добавь атрибут «Follow» типа bool. Сделай префикс «CTRL_». Пропусти кости с именем, содержащим «end».
10. Проверка сцены на «мусор»
Промт:
Blender Python: пройди по сцене и выведи отчёт: объекты без материалов, меши с нулевыми полигонами, текстуры с отсутствующими файлами, дубликаты имён, объекты вне видимости камеры. Отчёт — в CSV.
11. Экспорт в glTF/OBJ с проверкой
Промт:
Blender Python: экспортируй все выделенные объекты в glTF 2.0 с параметрами export_format='GLB', export_apply=True, export_yup=True. Перед экспортом примени все модификаторы. После экспорта проверь, что файл существует и больше 1 КБ, иначе выведи ошибку.
12. Генерация превью-рендера для ассетов
Промт:
Blender Python: для каждого объекта в коллекции «Props» сделай рендер-превью 512×512 с камеры, которая автоматически подстраивается под bounding box объекта (расстояние = 2×max_dim). Фон — нейтральный серый. Сохраняй в /thumbs/
.png.
Как проверить сгенерированный код
LLM иногда путают API между версиями Blender (например, bpy.ops.object.select_all vs контекстные переопределения в 4.x). Мини-чеклист:
| Что проверить | Как |
|---|---|
| Версия API | Сверить с docs.blender.org/api/current |
| Контекст операторов | В 4.x использовать with bpy.context.temp_override(...) |
| Типы данных | bpy.types.Mesh.vertices — не список, а коллекция |
| MEL-команды | Сверить в Maya Command Reference |
| Исключения | Обернуть в try/except и логировать |
Что это даёт на практике
Автоматизация через промты не заменяет художника, но снимает рутину: переименование, UV, экспорт, пакетный рендер, превью. По моему опыту, на типовой сцене из 30–50 объектов экономится несколько часов в день — особенно на повторяющихся операциях. LLM хорошо справляется с шаблонным кодом, но требует проверки: API меняется, а модель может выдать устаревший вызов. Правило простое: генерируй, читай, запускай на копии сцены.
Если хотите копнуть глубже — начните с двух-трёх промтов из этой подборки, адаптируйте их под свой пайплайн и заведите папку со скриптами. Через неделю у вас будет личная библиотека автоматизации, которая работает быстрее любого туториала.
Комментарии