# Рендеринг Blender

Рендерьте 3D-сцены и анимации в Blender на GPU CLORE.AI.

{% hint style="success" %}
Все примеры можно запускать на GPU-серверах, арендуемых через [CLORE.AI Marketplace](https://clore.ai/marketplace).
{% endhint %}

## Аренда на CLORE.AI

1. Посетите [CLORE.AI Marketplace](https://clore.ai/marketplace)
2. Отфильтруйте по типу GPU, объему VRAM и цене
3. Выберите **On-Demand** (фиксированная ставка) или **Spot** (цена по ставке)
4. Настройте ваш заказ:
   * Выберите Docker-образ
   * Установите порты (TCP для SSH, HTTP для веб-интерфейсов)
   * Добавьте переменные окружения при необходимости
   * Введите команду запуска
5. Выберите способ оплаты: **CLORE**, **BTC**, или **USDT/USDC**
6. Создайте заказ и дождитесь развертывания

### Доступ к вашему серверу

* Найдите данные для подключения в **Моих заказах**
* Веб-интерфейсы: используйте URL HTTP-порта
* SSH: `ssh -p <port> root@<proxy-address>`

## Зачем арендовать GPU для Blender?

* Визуализируйте сложные сцены в 10–50 раз быстрее, чем на CPU
* Несколько GPU для ещё более быстрого рендеринга
* Не нужно инвестировать в дорогое оборудование
* Платите только за время рендеринга

## Требования

| Сложность сцены | Рекомендуемый GPU | VRAM     |
| --------------- | ----------------- | -------- |
| Простая         | RTX 3070          | 8GB      |
| Средне          | RTX 3090          | 24 ГБ    |
| Сложный         | RTX 4090          | 24 ГБ    |
| Продакшен       | A100              | 40–80 ГБ |

## Быстрое развертывание

**Docker-образ:**

```
linuxserver/blender
```

Или рендер без интерфейса (headless):

```
nytimes/blender:3.6-gpu-ubuntu22.04
```

**Порты:**

```
22/tcp
3000/http
```

## Настройка headless-рендера

**Образ:**

```
nvidia/cuda:12.1.0-devel-ubuntu22.04
```

**Команда:**

```bash
apt-get update && \
apt-get install -y wget libxi6 libxxf86vm1 libxfixes3 libxrender1 libgl1 && \
wget https://download.blender.org/release/Blender4.0/blender-4.0.2-linux-x64.tar.xz && \
tar -xf blender-4.0.2-linux-x64.tar.xz && \
mv blender-4.0.2-linux-x64 /opt/blender
```

## Доступ к вашему сервису

После развертывания найдите ваш `http_pub` URL в **Моих заказах**:

1. Перейдите на **Моих заказах** страницу
2. Нажмите на ваш заказ
3. Найдите `http_pub` URL (например, `abc123.clorecloud.net`)

Используйте `https://YOUR_HTTP_PUB_URL` вместо `localhost` в примерах ниже.

## Загрузите свой проект

### Через SCP

```bash

# Загрузить .blend файл
scp -P <port> myproject.blend root@<proxy>:/workspace/

# Загрузить папку проекта
scp -P <port> -r ./project/ root@<proxy>:/workspace/
```

### Через rsync (большие проекты)

```bash
rsync -avz --progress -e "ssh -p <port>" ./project/ root@<proxy>:/workspace/project/
```

## Команды рендеринга

### Один кадр

```bash
/opt/blender/blender -b /workspace/myproject.blend -o /workspace/output/frame_### -f 1 -- --cycles-device CUDA
```

### Анимация (диапазон кадров)

```bash
/opt/blender/blender -b /workspace/myproject.blend -o /workspace/output/frame_### -s 1 -e 250 -a -- --cycles-device CUDA
```

### Конкретные кадры

```bash
/opt/blender/blender -b /workspace/myproject.blend -o /workspace/output/frame_### -f 1,50,100,150,200 -- --cycles-device CUDA
```

## Опции рендеринга

### Разрешение

```bash

# Переопределить разрешение
blender -b file.blend -o //output/frame_### -x 1920 -y 1080 -a -- --cycles-device CUDA
```

### Использовать Python-скрипт

```bash
blender -b file.blend --python render_setup.py -a
```

**render\_setup.py:**

```python
import bpy

# Установить движок рендеринга
bpy.context.scene.render.engine = 'CYCLES'

# Установить устройство
bpy.context.preferences.addons['cycles'].preferences.compute_device_type = 'CUDA'

# Включить все GPU
for device in bpy.context.preferences.addons['cycles'].preferences.devices:
    device.use = True

# Установить количество сэмплов
bpy.context.scene.cycles.samples = 128

# Установить разрешение
bpy.context.scene.render.resolution_x = 1920
bpy.context.scene.render.resolution_y = 1080

# Настройки вывода
bpy.context.scene.render.image_settings.file_format = 'PNG'
```

## Рендеринг на нескольких GPU

Для серверов с несколькими GPU:

```python
import bpy

# Включить CUDA
prefs = bpy.context.preferences.addons['cycles'].preferences
prefs.compute_device_type = 'CUDA'

# Обновить список устройств
prefs.get_devices()

# Включить все GPU
for device in prefs.devices:
    if device.type == 'CUDA':
        device.use = True
        print(f"Enabled: {device.name}")
```

## Ферма рендеринга (несколько серверов)

Арендуйте несколько серверов и разделите кадры:

**Сервер 1:**

```bash
blender -b project.blend -o //output/frame_### -s 1 -e 100 -a
```

**Сервер 2:**

```bash
blender -b project.blend -o //output/frame_### -s 101 -e 200 -a
```

**Сервер 3:**

```bash
blender -b project.blend -o //output/frame_### -s 201 -e 300 -a
```

Затем объедините рендеры локально.

## Рендеринг в Eevee (быстрее)

Для качества в реальном времени:

```bash
blender -b file.blend -E BLENDER_EEVEE -o //output/frame_### -a
```

## Поддержка OptiX (GPU RTX)

Для трассировки лучей на RTX:

```python
import bpy
prefs = bpy.context.preferences.addons['cycles'].preferences
prefs.compute_device_type = 'OPTIX'  # Вместо CUDA
```

## Автоматизированный скрипт рендеринга

**render.sh:**

```bash
#!/bin/bash
BLEND_FILE=$1
START_FRAME=$2
END_FRAME=$3
OUTPUT_DIR=/workspace/output

mkdir -p $OUTPUT_DIR

/opt/blender/blender -b $BLEND_FILE \
    -o ${OUTPUT_DIR}/frame_### \
    -s $START_FRAME \
    -e $END_FRAME \
    -a \
    -- --cycles-device CUDA

echo "Рендеринг завершён!"
ls -la $OUTPUT_DIR
```

Использование:

```bash
chmod +x render.sh
./render.sh /workspace/myproject.blend 1 250
```

## Мониторинг прогресса рендеринга

### Наблюдение за папкой вывода

```bash
watch -n 5 'ls -la /workspace/output/ | tail -20'
```

### Вывод Blender

Blender выводит прогресс кадра в stdout:

```
Fra:1 Mem:1234.56M (Peak 1500.00M) | Time:00:01.23 | Remaining:04:32.10 | Mem:567.89M, Peak:890.12M | Scene, View Layer | Sample 64/128
```

## Скачать отрендеренные кадры

```bash

# Скачать все кадры
scp -P <port> -r root@<proxy>:/workspace/output/ ./renders/

# Скачать конкретные кадры
scp -P <port> root@<proxy>:/workspace/output/frame_001.png ./

# Синхронизация с rsync
rsync -avz --progress -e "ssh -p <port>" root@<proxy>:/workspace/output/ ./renders/
```

## Кодирование видео

После рендеринга кадров закодируйте в видео:

```bash

# Установить ffmpeg
apt-get install -y ffmpeg

# Кодировать в MP4
ffmpeg -framerate 24 -i /workspace/output/frame_%03d.png -c:v libx264 -pix_fmt yuv420p output.mp4

# Кодировать в ProRes (высокое качество)
ffmpeg -framerate 24 -i /workspace/output/frame_%03d.png -c:v prores_ks -profile:v 3 output.mov
```

## Советы по производительности

### Оптимизация для скорости

```python

# Уменьшить сэмплы для предпросмотра
bpy.context.scene.cycles.samples = 64

# Использовать адаптивную выборку
bpy.context.scene.cycles.use_adaptive_sampling = True
bpy.context.scene.cycles.adaptive_threshold = 0.01

# Ограничить число отражений (bounces)
bpy.context.scene.cycles.max_bounces = 8
```

### Оптимизация памяти

```python

# Использовать плиточный рендеринг для высоких разрешений
bpy.context.scene.render.use_persistent_data = True

# Установить размер тайла
bpy.context.scene.cycles.tile_size = 256  # Для GPU
```

## Оценки времени рендеринга

| Сцена     | GPU      | Разрешение | Сэмплы | Время/кадр |
| --------- | -------- | ---------- | ------ | ---------- |
| Простая   | RTX 3090 | 1080p      | 128    | \~30с      |
| Средне    | RTX 3090 | 1080p      | 256    | \~2 мин    |
| Сложный   | RTX 4090 | 4K         | 512    | \~10 мин   |
| Продакшен | A100     | 4K         | 1024   | \~20 мин   |

## Расчёт стоимости

**Пример: анимация из 250 кадров**

```
GPU: RTX 4090
Время на кадр: 2 минуты
Общее время рендеринга: 500 минут = 8,3 часа
Почасовая ставка: $0.04
Общая стоимость: ~ $0.33
```

## Устранение неполадок

### "CUDA устройство не найдено"

```python

# Проверить доступные устройства
import bpy
prefs = bpy.context.preferences.addons['cycles'].preferences
prefs.compute_device_type = 'CUDA'
prefs.get_devices()
for d in prefs.devices:
    print(d.name, d.type)
```

{% hint style="danger" %}
**Недостаточно памяти**
{% endhint %}

* Уменьшите разрешение текстур
* Используйте меньший размер тайлов
* Включите «persistent data»
* Используйте более простые шейдеры

### Медленный рендеринг

* Проверьте, используется ли GPU (nvidia-smi)
* Оптимизируйте геометрию сцены
* Используйте денойзинг с меньшим количеством сэмплов

## Дальнейшие шаги

* Запустите Jupyter для постобработки
* [Генерация видео с помощью ИИ](/guides/guides_v2-ru/generaciya-video/ai-video-generation.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/drugie-nagruzki/blender-rendering.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
