Если Вы пытались просчитать изображения достаточно сложной 3D-сцены большого размера в Blender, например, 4 000 пикселей на 3 000 пикселей или больше сразу одним файлом на своём домашнем компьютере, то, скорее всего, программа «падала», либо отказывалась от выполнения таких нескромных желаний. Без разницы, какой визуализатор задействовать, внутренний или внешний, для подобных вычислений нужна мощная машина с большим объёмом памяти. Есть вариант воспользоваться платными услугами онлайн рендер-ферм. Но можно обойтись и без них. В своё время нашлись энтузиасты, которые специально для «домашних» вычислений ещё под старые версии Blender 2.4x написали скрипт Render Regions. С его помощью решалась проблема просчёта изображений, пригодных для широкоформатной полиграфической печати. Скрипт и теперь доступен для последних версий Blender (на момент написания публикации текущая версия 2.66). Вы имеете возможность задать просчёт проекции камеры по частям и настроить их автоматическую сборку сразу после рендеринга (для этого нужно установить библиотеки ImageMagic). Но этот скрипт дружит только со стандартным Internal Blender Renderer. С модулем визуализации Yafaray он не работает, т. к. Yafaray «сбрасывает» его из панели Render при инициализации.
После некоторых экспериментов с просчётом изображений сверх большого формата в Yafaray, я нашёл простое решение задачи. Изобретенный мной способ оказался пригодным, но неперспективным по причине трудоёмкости. Так как я не знаком с языком Python, то поступил тривиально:
- в строгом соответствии с положением камеры разметил её видимое пространство (проекцию) маркерами с помощью пустышек Empty на равном удалении друг от друга — получились секторы;
- с помощью стандартного инструмента Region Render (Border Render — Shift+B, это не дополнительный addon в виде скрипта, а встроенная функция Blender) в окне проекции камеры просчитал каждую часть по отдельности;
- собрал все части вручную в GIMP и обработал финальное изображение в Photoshop Elements.
Результат был достигнут. Но поиски более технологичного решения задачи продолжились. В итоге я нашёл скрипт, позволяющий просчитывать изображения большого размера с помощью Yafaray. Называется он Monster Tile Renderer (MTR), его автор — Dealga McArdle (www.digitalaphasia.com).
Скачать файл в формате исполняемого сценария Python можно с сайта GitHub’а. (Версия и файл скрипта на момент написания публикации — monster_tile_v3_005.py).
Скрипт подключается обычным для Blender’а способом через панель User Preferences > Addons > Render. Если после активации модуля переключиться в режим визуализации с помощью Yafaray, то панель скрипта MTR остаётся во вкладке Render вместе с настройками Yafaray. Таким образом, появляется возможность настроить рендеринг в Yafaray по частям. И, главное, — это работает!

Панель скрипта Monster Tile Renderer во вкладке Render программы Blender 2.65
Теперь о самом процессе настройки. Он с некоторыми особенностями, но продуман и функционален. Например, можно задать рендеринг отдельных частей изображения, а не всех. Это сокращает время просчёта в случае, если некоторые сегменты изображения оказываются пустыми. Либо если необходимо пересчитать одну из частей заново. Подробнее об этом позже. Другая фишка модуля в том, что можно назначить размер будущего изображения в метрических пропорциях: в сантиметрах и дюймах, а также указать его DPI (dots per inch). Это удобство станет очевидно тем, кому понадобится картинка для полиграфической печати.
Модуль скрипта Monster Tile Renderer я условно разделил на три части. В самой верхней мы можем указать папку, в которую будут сохраняться части изображения, а также название шаблона/маски файла и его тип. В средней части модуля мы задаём метрическую систему, полный размер картинки и размер просчитываемых сегментов. Нижняя часть настроек содержит поле, задающее рендеринг выборочных секций изображения (они перечисляются строго определённым способом). Самой последней расположена кнопка просчёта «render job!» с указанием количества просчитываемых частей (числовое значение появляется после настройки предыдущих значений).
Разберём работу скрипта на примере. После подготовки Вашей сцены Blender к визуализации, открываем вкладку MTR в панели Render. Задаём папку в поле «path to file», имя сохраняемого файла в поле «file name» и его формат в меню «file type». Если мы оставим всё как есть «по умолчанию» без установки собственных настроек, то получим последовательность картинок, просчитанных в каталог с исходным проектом и с его именем в формате PNG.
Дальше нужно задать размер просчитываемого изображения. Метрическая система выбирается с помощью одной из трёх кнопок: None, Metric и Imperial. При инициализации скрипта автоматически выбирается размер, взятый из вкладки «Dimensions» в пикселях (активна кнопка «None» метрики). Предположим, что нам нужно просчитать картинку с упомянутыми выше размерами 4 000 пикселей на 3 000 пикселей. Если изображение предполагается использовать в качестве полиграфического макета, то его значения в сантиметрах будут такими: 33,87 см х 25,4 см при качестве печати 300 dpi. Нажав кнопку «Metric», мы сможем задать размер будущего изображения в этой системе координат. Заметьте, что рядом с полем для установки формата файла появляется дополнительный регулятор со значением DPI в 300 единиц по умолчанию.

Monster Tile Renderer с настройками метрики
После установки размеров изображения нужно задать размер его частей в полях «tile size limits»: «MyMaxTileWidth» и «MyMaxTileHeight». На это стоит обратить особое внимание. Чтобы просчитанные сегменты бесшовно соединились в целую картинку, советую придерживаться одного простого правила: соотношение сторон полного изображения и его частей должны быть кратными величинами и делиться друг на друга без остатка. Поясню на примере. Для изображения в 4 000 пикселей на 3 000 пикселей части могут быть размерами 400 пикселей на 300 пикселей (в пропорции 1:10), 800 пикселей на 600 пикселей (в пропорции 1:5) или больше, но в кратных пропорциях (1:4 и 1:2). Это оптимальные значения, которых нужно придерживаться. Установив величины целого и частей, жмём кнопку «Perform Calculations». Скрипт выдаст количество и размер сегментов просчитываемого изображения. Задав размер сегментов, не кратный основному размеру изображения, Вы получите округлённый результат в пропорциях. В итоге при сборке готового изображения будут заметны швы на стыках частей и неточный основной размер. Такие артефакты возникнут из-за пропущенных строк пикселей в подсчитанных с приблизительными размерами частях.
Когда значения подобраны, кнопкой «Apply Settings» устанавливаем их величины в размерных полях блока «Dimensions» панели «Render». Кнопка «render job!» должна дополниться информацией о количестве просчитываемых частей. Мы можем установить произвольное количество сегментов изображения, которые скрипт отправит модулю визуализации Yafaray. Как я уже озвучил выше, такая необходимость может возникнуть, если в изображении есть пустые области, например, при визуализации объекта на прозрачном фоне. Доверив просчитывать скрипту все части, Вы зря потратите своё время и компьютерные ресурсы. Yafaray будет готовить и рендерить пустую часть сцены так же тщательно, как и любую другую, тратя бесцельно процессорные «силы».
Части изображения просчитаются слева направо сверху вниз, т. е. так, как мы читаем текст. Скрипт присваивает частям числовой индекс по следующему алгоритму: сначала задаётся порядковый номер сегмента по горизонтали (по оси Х) и через нижнее подчёркивание «_» назначается порядковый номер сегмента по вертикали (по оси Y), т. е. Х_Y. Все части первой «строки» будут иметь вид Х_01, второй — Х_02 и т. д. Соответственно, Х будет принимать значения от 01 до порядкового номера последней части ряда. Схематично вся эта головоломка представлена на изображении ниже (задан размер 5 х 5 частей).

Схема алгоритма просчёта изображения по частям скриптом Monster Tile Renderer
Достаточно взять изображение в уменьшенном масштабе, разделить его на соответствующее количество сегментов в любом графическом редакторе и проверить, какие из них могут быть пустыми. Для наглядности пронумеровав части и исключив ненужные, мы будем иметь последовательность в виде числовых индексов: 01_01, 02_01, 03_01 и т. д. Вот эту последовательность значений (через запятую с пробелом!) и нужно вставить в поле «Subset». Предварительно необходимо поставить «галочку» в опции «Render subset of tiles». Кнопка «Render job!» обновится информацией о количестве просчитываемых сегментов. Всё! Жмём «Render job!» и наблюдаем появление просчитываемых частей в заданной папке.

Стандартная панель «Dimensions» и панель скрипта «Monster Tile Renderer» во вкладке «Render» программы Blender 2.65
Замечания по поводу работы Monster Tile Renderer. Скрипт оправдывает своё название, но без недостатков и глюков в коде не обошлось. Даже задав правильный размер частей, кратный полному изображению, скрипт при просчёте всё-таки теряет строки пикселей по краям сегментов. Ширина строк не велика, всего один пиксель, но в результате сборка целого изображения затрудняется неидеальной стыковкой его отдельных «пазлов». Эта проблема, конечно же, решается, но требует дополнительного времени, что неприятно. Другой момент — визуально отслеживать процесс рендеринга возможно только по количеству просчитанных сегментов либо по статусным строкам Yafaray в консоли, что гораздо лучше, но недостаточно удобно. После нажатия кнопки «Render job!» окно Blender’а становится недоступным до окончания всего просчёта.
В общем, для визуализации изображений большого размера в Blender с помощью Internal Blender Renderer, равно как с использованием внешнего модуля Yafaray, скрипт Monster Tile Renderer — очень полезное и даже необходимое дополнение. Мелкие недостатки, хочу надеяться, в будущих версиях будут устранены.
P. S. В версии Blender 2.67 скрипт генерирует ошибку в консоли при попытке его активации через панель «Addons» и остаётся в неактивном состоянии («чекбокс» продолжает быть пустым, без «галочки»). Я пробовал подключить модуль в Windows и Linux (openSUSE), но безрезультатно. Вывод: Monster Tile Renderer работает с Blender до версии 2.67. Для последних релизов Blender скрипт MTR требует обновления.