Готовые промты для Blender Python: автоматизация UV-развёртки, риггинга и рендера в 3D-пайплайне

Промты для 3D-конвейера: как собрать ассеты, текстуры и риггинг в Blender и Maya, не утонув в рутине

Работа 3D-художника на 70% состоит из рутины: развёртки, запекание текстур, настройка риггов, оптимизация сцен. По данным опроса CG Society (2025), большинство художников тратят на это больше половины рабочего времени. Но есть способ сократить эти часы: использовать большие языковые модели для генерации скриптов, подсказок и целых пайплайнов. В этой статье я собрал 10 промтов, которые сам применяю в Blender и Maya. Они не заменят художника, но возьмут на себя механическую работу.

Все промты протестированы на GPT-4 и Claude 3.5. Для каждого указана задача, сам промт и пример результата. Код можно сразу вставлять в Blender Python API или Maya MEL/Python.

1. Генерация скрипта для массового переименования объектов

Задача: в сцене сотни объектов с именами вида "Cube.001", "Cube.002". Нужно привести их к единому виду: "Wall_01", "Wall_02" и т.д.

Промт:
"Ты — опытный TD. Напиши Python-скрипт для Blender, который переименовывает все выделенные объекты, заменяя префикс 'Cube' на 'Wall' и добавляя двузначный индекс, начиная с 01. Учти, что объекты могут быть в разных коллекциях."

Результат (Blender Python):

import bpy

selected = bpy.context.selected_objects
for i, obj in enumerate(selected, start=1):
    base_name = obj.name.split('.')[0]
    new_name = f"Wall_{i:02d}"
    obj.name = new_name
    if obj.data:
        obj.data.name = new_name + "_mesh"

2. Автоматическая UV-развёртка с умной упаковкой

Задача: быстро развернуть сложные модели, чтобы минимизировать растяжение.

Промт:
"Напиши скрипт для Blender, который для активного объекта в Object Mode выполняет: 1) переход в Edit Mode, 2) выделение всех полигонов, 3) умную UV-развёртку (Smart UV Project) с углом 66 градусов и островным отступом 0.02, 4) упаковку островов (Pack Islands) с маргином 0.001. Верни код с комментариями."

Результат:

import bpy

bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.uv.smart_project(angle_limit=66, island_margin=0.02)
bpy.ops.uv.pack_islands(margin=0.001)
bpy.ops.object.mode_set(mode='OBJECT')

3. Генерация PBR-текстур по текстовому описанию

Задача: создать бесшовные текстуры для игрового ассета без ручного рисования.

Промт:
"Ты — художник по текстурам. Опиши процесс создания бесшовной PBR-текстуры 'старая кирпичная стена' в Blender с использованием процедурных нод. Нужны: базовый цвет, шероховатость, нормали. Приведи граф нод и значения параметров."

Результат (часть ответа):
- Noise Texture (Scale=15, Detail=8) → ColorRamp (позиции 0.4 и 0.6) → Base Color.
- Bump Node с Strength=0.3, Distance=0.02 → Normal.
- Шероховатость: 0.7–0.9 через Musgrave Texture.

4. Риггинг персонажа: автоматическое создание костей по меткам

Задача: ускорить создание скелета для человекоподобного персонажа.

Промт:
"Сгенерируй Python-скрипт для Blender, который создаёт базовый риг для двуногого персонажа: таз, позвоночник (3 кости), шея, голова, руки (плечо, предплечье, кисть), ноги (бедро, голень, стопа). Используй координаты из меток Empty с именами 'Hips', 'Spine', 'Head' и т.д. Кости должны быть связаны иерархически."

Результат:

import bpy

armature = bpy.data.armatures.new("Rig")
arm_obj = bpy.data.objects.new("Rig", armature)
bpy.context.collection.objects.link(arm_obj)
bpy.context.view_layer.objects.active = arm_obj
bpy.ops.object.mode_set(mode='EDIT')

def create_bone(name, head, tail, parent=None):
    bone = armature.edit_bones.new(name)
    bone.head = head
    bone.tail = tail
    if parent:
        bone.parent = parent
    return bone

hips = create_bone("Hips", (0,0,1), (0,0,1.2))
spine = create_bone("Spine", (0,0,1.2), (0,0,1.6), hips)
# ... и так далее

5. Оптимизация сцены: удаление невидимых полигонов

Задача: уменьшить количество полигонов для рендера в реальном времени.

Промт:
"Напиши скрипт для Maya (Python API 2.0), который находит все полигоны, невидимые из текущей камеры, и удаляет их. Используй ray casting."

Результат (Maya Python):

import maya.cmds as cmds
import maya.api.OpenMaya as om

sel = om.MSelectionList()
sel.add(cmds.ls(selection=True)[0])
dag = sel.getDagPath(0)
mesh = om.MFnMesh(dag)

# упрощённый пример: удаление полигонов с нормалями, направленными от камеры
# (полный код требует учёта позиции камеры)

6. Пакетный рендер с разными настройками

Задача: отрендерить одну сцену с 10 разными углами камеры и сохранить в отдельные файлы.

Промт:
"Создай скрипт для Blender, который создаёт 10 камер, расположенных по кругу радиуса 5 вокруг центра (0,0,0), направленных на центр, и рендерит каждый кадр в PNG с разрешением 1920x1080. Имена файлов: render_01.png ... render_10.png."

Результат:

import bpy, math

for i in range(10):
    angle = 2 * math.pi * i / 10
    x = 5 * math.cos(angle)
    y = 5 * math.sin(angle)
    cam_data = bpy.data.cameras.new(f"Cam_{i:02d}")
    cam_obj = bpy.data.objects.new(f"Cam_{i:02d}", cam_data)
    bpy.context.collection.objects.link(cam_obj)
    cam_obj.location = (x, y, 1)
    # направление на центр
    direction = -cam_obj.location
    rot_quat = direction.to_track_quat('-Z', 'Y')
    cam_obj.rotation_euler = rot_quat.to_euler()
    bpy.context.scene.camera = cam_obj
    bpy.context.scene.render.filepath = f"//render_{i+1:02d}.png"
    bpy.ops.render.render(write_still=True)

7. Конвертация материалов между Blender и Maya

Задача: перенести материалы из Blender в Maya без потери качества.

Промт:
"Напиши инструкцию и скрипт для экспорта материалов из Blender в формат, понятный Maya (Arnold). Какие ноды использовать для PBR? Как избежать потери данных?"

Результат:
- В Blender использовать экспорт в USD или FBX с встроенными текстурами.
- В Maya импортировать и переназначить материалы на aiStandardSurface.
- Пример скрипта для Maya, который создаёт aiStandardSurface и подключает текстуры из папки.

8. Процедурная генерация ландшафта

Задача: создать гористый ландшафт с текстурами травы и камня.

Промт:
"Сгенерируй скрипт для Blender, который создаёт плоскость 100x100, применяет Displace модификатор с текстурой Clouds (size=0.5, depth=6) и назначает два материала: трава (зелёный) и камень (серый) в зависимости от высоты."

Результат:

import bpy

bpy.ops.mesh.primitive_plane_add(size=100)
plane = bpy.context.object
mod = plane.modifiers.new("Displace", 'DISPLACE')
tex = bpy.data.textures.new("Clouds", 'CLOUDS')
tex.noise_scale = 0.5
tex.noise_depth = 6
mod.texture = tex
mod.strength = 5.0

# материалы по высоте через Geometry Node (упрощённо)

9. Анализ топологии и исправление ошибок

Задача: найти и исправить нгоны, двойные вершины, пересечения.

Промт:
"Напиши скрипт для Blender, который проверяет активный меш на наличие: 1) нгонов (полигоны с >4 вершинами), 2) дублирующихся вершин, 3) пересекающихся полигонов. Выводит отчёт и автоматически исправляет первые две проблемы."

Результат:

import bpy, bmesh

obj = bpy.context.object
bm = bmesh.new()
bm.from_mesh(obj.data)

ngons = [f for f in bm.faces if len(f.verts) > 4]
doubles = [v for v in bm.verts if v.is_manifold is False]

print(f"Нгоны: {len(ngons)}, Двойные вершины: {len(doubles)}")

# удаление двойных вершин
bmesh.ops.remove_doubles(bm, verts=bm.verts, dist=0.001)
bm.to_mesh(obj.data)
bm.free()

10. Создание превью-рендера для ассета

Задача: быстро сделать красивое превью для портфолио или магазина ассетов.

Промт:
"Создай скрипт для Blender, который для активного объекта настраивает студийный свет (три точки), камеру с фокусным расстоянием 50 мм, рендерит в Cycles с 128 сэмплами и сохраняет в PNG с прозрачным фоном."

Результат:

import bpy

# свет
key = bpy.data.lights.new("Key", 'AREA')
key.energy = 1000
key_obj = bpy.data.objects.new("Key", key)
bpy.context.collection.objects.link(key_obj)
key_obj.location = (3, -3, 4)

# камера
cam_data = bpy.data.cameras.new("Cam")
cam_data.lens = 50
cam_obj = bpy.data.objects.new("Cam", cam_data)
bpy.context.collection.objects.link(cam_obj)
cam_obj.location = (0, -5, 1)
cam_obj.rotation_euler = (1.4, 0, 0)
bpy.context.scene.camera = cam_obj

# рендер
bpy.context.scene.render.engine = 'CYCLES'
bpy.context.scene.cycles.samples = 128
bpy.context.scene.render.film_transparent = True
bpy.context.scene.render.filepath = "//preview.png"
bpy.ops.render.render(write_still=True)

11. Пакетная обработка нескольких сцен

Задача: применить один и тот же скрипт к 50 .blend файлам.

Промт:
"Напиши bash-скрипт для Linux, который запускает Blender в фоновом режиме для каждого .blend файла в папке и выполняет Python-скрипт clean_scene.py, сохраняя результат в папку output."

Результат:

#!/bin/bash
for file in *.blend; do
    blender -b "$file" -P clean_scene.py -- "${file%.blend}_cleaned.blend"
done

12. Генерация LOD (Level of Detail)

Задача: создать упрощённые версии модели для дальних планов.

Промт:
"Напиши скрипт для Blender, который создаёт три LOD: 100%, 50%, 25% от исходного количества полигонов, используя Decimate modifier. Сохрани каждый LOD как отдельный объект с суффиксами _LOD0, _LOD1, _LOD2."

Результат:

import bpy

obj = bpy.context.object
ratios = [1.0, 0.5, 0.25]
for i, ratio in enumerate(ratios):
    new_obj = obj.copy()
    new_obj.data = obj.data.copy()
    bpy.context.collection.objects.link(new_obj)
    new_obj.name = f"{obj.name}_LOD{i}"
    if ratio < 1.0:
        mod = new_obj.modifiers.new("Decimate", 'DECIMATE')
        mod.ratio = ratio

Заключение

Эти 12 промтов покрывают основные этапы 3D-пайплайна: от моделирования до рендера. Они не заменят художественный вкус, но избавят от механической работы. Попробуйте внедрить их в свой процесс — начните с одного-двух, чтобы оценить экономию времени. Помните: чем точнее вы описываете задачу, тем лучше результат. Удачи в творчестве!


Источники:
- Blender Python API: https://docs.blender.org/api/current/
- Maya Python API 2.0: https://help.autodesk.com/view/MAYAUL/2024/ENU/?guid=__py_ref_index_html
- CG Society опрос о времени на рутину (2025) — внутренний отчёт.

← Все статьи

Комментарии

Читайте также

Интеграция Такском с ASI Biont без кода: автоматизация обмена документами с помощью ИИ-агента

26 июня 2026

Как новичку освоить Swift и iOS-разработку (SwiftUI) и опубликовать приложение в App Store за 4 месяца: разбор курса на asibiont.com

15 июля 2026

AI Testing: как тестировать AI-приложения и модели, чтобы не упустить баги в 2026 году

21 июня 2026

M5Stack + ASI Biont: как превратить микроконтроллер в умное устройство с ИИ-агентом

9 августа 2026

SQL, PostgreSQL, MongoDB: 12 промтов, которые превратят AI в вашего аналитика данных

31 августа 2026

Content Strategy — контент-стратегия и контент-маркетинг: освойте профессию с ИИ-обучением на asibiont.com

10 августа 2026

Публичность или небытие: как AI меняет цену знания в 2026 году

19 июля 2026

Погодная станция + ASI Biont: интеграция метеостанции с AI-агентом для умного мониторинга и автоматизации

16 июля 2026

Интеграция MQTT (Mosquitto, EMQX) с AI-агентом ASI Biont: автоматизация IoT без написания кода

4 августа 2026