====== Работа с Blender ======
===== Что делать до использования? =====
Перед использованием необходимо загрузить модуль:
module load blender/2.77a
===== Где расположен в системе? =====
Blender установлен в:
/shared/opt/blender/2.77a/
===== Запуск на CPU =====
----
Запуск рендера на CPU производится следующей командой:
blender -noaudio -b <путь к исходному файлу *.blend> -E CYCLES -o <путь выходного файла> -f <кол-во кадров>
В команде использованы след. ключи:
* noaudio - нет звукового потока
* b - использование background
* E - использование выбранного движка для рендера
* o - путь вывода
* f - рендер кадров (frames), не анимации.
Для просмотра всех ключей и справки необходимо выполнить команду:
blender --help
**Примечание.** Запускать рендер, используя CPU можно и на управляющем узле, так и на вычислительном.
===== Запуск на GPU =====
----
Для того, чтобы запустить рендер на GPU необходимо написать скрипт на языке python (*.py).
Скрипт должен содержать следующие строки:
import bpy
bpy.context.user_preferences.system.compute_device_type = 'CUDA'
bpy.context.user_preferences.system.compute_device = 'CUDA_MULTI_0'
bpy.data.scenes["Scene"].cycles.device = 'GPU'
----
**Примечание.** Значение 'CUDA_MULTI_0' показывает, что рендер будет производиться на всех свободных картах GPU.
Также возможно использование значения 'CUDA_0', которое показывает, что рендер будет производиться на одной карте GPU.
После того, как скрипт создан, путь к нему необходимо указать в команде запуска с помощью ключа P:
blender -noaudio -b <путь к исходному файлу *.blend> -E CYCLES -o <путь выходного файла> -P <путь к скрипту> -f 1
**Примечание.** Рендер, с использованием GPU, возможен только с вычислительного узла.
===== Как запустить рендер с дополнительными настройками, которые нельзя указать ключами =====
----
Все интересующие настройки необходимо написать в скрипт на языке python.
Ниже приведен пример скрипта:
import bpy
#User Preferences.System.Compute device
bpy.context.user_preferences.system.compute_device_type = 'CUDA'
bpy.context.user_preferences.system.compute_device = 'CUDA_MULTI_0'
#Scene.Render.Device.
bpy.data.scenes["Scene"].cycles.device = 'GPU'
#Scene.Render.Animation
bpy.ops.render.render(animation=True)
#Scene.Dimensions.Resolution.X
bpy.data.scenes["Scene"].render.resolution_x = 1280
#Scene.Dimensions.Resolution.Y
bpy.data.scenes["Scene"].render.resolution_y = 800
#Scene.Dimensions.Resolution.Percentage
bpy.data.scenes["Scene"].render.resolution_percentage = 100
#Scene.Dimensions.Frame Range.Start frame
bpy.data.scenes["Scene"].frame_start = 0
#Scene.Dimensions.Frame Range.End Frame
bpy.data.scenes["Scene"].frame_end = 3000
#Scene.Dimensions.Frame Range.Frame step
bpy.data.scenes["Scene"].frame_step = 1
#Scene.Dimensions.Frame Rate
bpy.types.Menu.framerate_presents = 24
#Scene.Output.File format
bpy.data.scenes["Scene"].render.image_settings.file_format = 'PNG'
#Scene.Output.Color mode
bpy.data.scenes["Scene"].render.image_settings.color_mode = 'RGB'
#Scene.Output.Color depth
bpy.data.scenes["Scene"].render.image_settings.color_depth = '16'
#Scene.Sampling
bpy.types.Menu.Sampling_presets = 'Final'
#Scene.Sampling.Samples.Render
bpy.data.scenes["Scene"].cycles.samples = 24
#Scene.Sampling.Samples.Preview
bpy.data.scenes["Scene"].cycles.preview_samples = 12
#User Preferences.System.Anisotropic filter
bpy.context.user_preferences.system.anisotropic_filter = 'FILTER_16'
После написания скрипта необходимо указать его при запуске с ключом -P.
**Примечание.** Если необходимых настроек нет в данном примере, необходимо зайти в графическом режиме в Blender и навести мышь на интересующую настройку. После чего появится всплывающая иконка, как записать эту настройку на языке python.
===== Оптимизация =====
----
До этого раздела запуск рендера предполагал использование одного вычислительного узла.
==== Как запустить рендер, используя все вычислительные узлы МВК ПГНИУ-Кеплер? ====
Вопрос оптимизации был решен следующим образом. Имеется возможность, используя скрипты рендерить на каждом вычислительном узле определенное кол-во кадров.
Например, на первом вычислительном узле будут рендериться с 0 по 613 кадр:
bpy.data.scenes["Scene"].frame_start = 0
bpy.data.scenes["Scene"].frame_end = 613
bpy.data.scenes["Scene"].frame_step = 1
А на втором, с 614 по 1227 кадр:
bpy.data.scenes["Scene"].frame_start = 614
bpy.data.scenes["Scene"].frame_end = 1227
bpy.data.scenes["Scene"].frame_step = 1
И так далее.
==== Как запустить выполнение на разных вычислительных узлах? ====
Запуск производится с управляющего узла с помощью планировщика задач bsub.
Пример команды (в примере используется логирование, используя утилиту tee):
bsub -m "compute000" "blender -noaudio -b Scene.blend -E CYCLES -o ~/blender_results_node000/ -P exercise_gpu000.py -a |tee ~/blender_results_node000/exercise_log_000"