Здесь показаны различия между двумя версиями данной страницы.
— |
man:blender [23.11.2016 12:15:26] (текущий) faubert создано |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Работа с Blender ====== | ||
+ | ===== Что делать до использования? ===== | ||
+ | Перед использованием необходимо загрузить модуль: | ||
+ | <code>module load blender/2.77a </code> | ||
+ | ===== Где расположен в системе? ===== | ||
+ | Blender установлен в: | ||
+ | <code> /shared/opt/blender/2.77a/ </code> | ||
+ | ===== Запуск на CPU ===== | ||
+ | ---- | ||
+ | Запуск рендера на CPU производится следующей командой: | ||
+ | <code> blender -noaudio -b <путь к исходному файлу *.blend> -E CYCLES -o <путь выходного файла> -f <кол-во кадров></code> | ||
+ | |||
+ | В команде использованы след. ключи: | ||
+ | * noaudio - нет звукового потока | ||
+ | * b - использование background | ||
+ | * E - использование выбранного движка для рендера | ||
+ | * o - путь вывода | ||
+ | * f - рендер кадров (frames), не анимации. | ||
+ | |||
+ | Для просмотра всех ключей и справки необходимо выполнить команду: | ||
+ | <code> blender --help </code> | ||
+ | **Примечание.** Запускать рендер, используя CPU можно и на управляющем узле, так и на вычислительном. | ||
+ | |||
+ | ===== Запуск на GPU ===== | ||
+ | ---- | ||
+ | Для того, чтобы запустить рендер на GPU необходимо написать скрипт на языке python (*.py). | ||
+ | Скрипт должен содержать следующие строки: | ||
+ | <code> | ||
+ | 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' | ||
+ | </code> | ||
+ | ---- | ||
+ | |||
+ | **Примечание.** Значение 'CUDA_MULTI_0' показывает, что рендер будет производиться на всех свободных картах GPU. | ||
+ | Также возможно использование значения 'CUDA_0', которое показывает, что рендер будет производиться на одной карте GPU. | ||
+ | |||
+ | После того, как скрипт создан, путь к нему необходимо указать в команде запуска с помощью ключа P: | ||
+ | |||
+ | <code> blender -noaudio -b <путь к исходному файлу *.blend> -E CYCLES -o <путь выходного файла> -P <путь к скрипту> -f 1 </code> | ||
+ | |||
+ | **Примечание.** Рендер, с использованием GPU, возможен только с вычислительного узла. | ||
+ | |||
+ | ===== Как запустить рендер с дополнительными настройками, которые нельзя указать ключами ===== | ||
+ | ---- | ||
+ | Все интересующие настройки необходимо написать в скрипт на языке python. | ||
+ | Ниже приведен пример скрипта: | ||
+ | <code> | ||
+ | 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' | ||
+ | </code> | ||
+ | |||
+ | После написания скрипта необходимо указать его при запуске с ключом -P. | ||
+ | |||
+ | **Примечание.** Если необходимых настроек нет в данном примере, необходимо зайти в графическом режиме в Blender и навести мышь на интересующую настройку. После чего появится всплывающая иконка, как записать эту настройку на языке python. | ||
+ | |||
+ | ===== Оптимизация ===== | ||
+ | ---- | ||
+ | До этого раздела запуск рендера предполагал использование одного вычислительного узла. | ||
+ | |||
+ | ==== Как запустить рендер, используя все вычислительные узлы МВК ПГНИУ-Кеплер? ==== | ||
+ | |||
+ | Вопрос оптимизации был решен следующим образом. Имеется возможность, используя скрипты рендерить на каждом вычислительном узле определенное кол-во кадров. | ||
+ | Например, на первом вычислительном узле будут рендериться с 0 по 613 кадр: | ||
+ | <code> | ||
+ | bpy.data.scenes["Scene"].frame_start = 0 | ||
+ | bpy.data.scenes["Scene"].frame_end = 613 | ||
+ | bpy.data.scenes["Scene"].frame_step = 1 | ||
+ | </code> | ||
+ | А на втором, с 614 по 1227 кадр: | ||
+ | <code> | ||
+ | bpy.data.scenes["Scene"].frame_start = 614 | ||
+ | bpy.data.scenes["Scene"].frame_end = 1227 | ||
+ | bpy.data.scenes["Scene"].frame_step = 1 | ||
+ | </code> | ||
+ | И так далее. | ||
+ | |||
+ | ==== Как запустить выполнение на разных вычислительных узлах? ==== | ||
+ | |||
+ | Запуск производится с управляющего узла с помощью планировщика задач bsub. | ||
+ | Пример команды (в примере используется логирование, используя утилиту tee): | ||
+ | <code> | ||
+ | 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" | ||
+ | </code> |