Настройка сетевого рендера (Distributed Rendering) при помощи V-Ray
Настройка сетевого рендера (Distributed Rendering) при помощи V-Ray.
Итак, настал тот день, когда вам не хватает вычислительной мощности одного компьютера для воплощения ваших безумных 3D проектов. Становится очевидна необходимость использовать сетевой рендер. Сейчас вы ознакомитесь с тем, как подобное делается в популярном модуле визуализации V-Ray для 3D Studio Max.
Вся статья состоит из трёх частей:
Для начала определимся с версиями программного обеспечения.
- Windows XP Pro SP2
- Autodesk 3DS Max 9
- Chaosgroup V-Ray Advanced 1.50 R5 for 3dsMax 9
Другие версии 3D Studio Max и V-Ray настраиваются аналогично, выбор программного обеспечения не критичен.
Что же нам потребуется для начала? В первую очередь это, конечно же, дополнительные компьютеры. Предположим, что их два. Будем делать сеть! Если компьютеры уже в ней, можно пропустить эту часть статьи.
Настройка сети не такое уж хитрое дело. Большинство людей, которые интересуются распределенной визуализацией, обычно уже имеют рабочую сеть. Но всё же напомнить общие принципы будет не лишним. К тому же кому-то, надеюсь, это будет полезно.
Для соединения компьютеров в сеть необходимо:
- Наличие на всех машинах Ethernet-адаптер;
- Патч-корд (сетевой шнур);
- Сетевой коммутатор (если компьютеров больше двух).
Поясню третий пункт. Для соединения двух компьютеров достаточно одного сетевого шнура. Если же машин больше, нужен коммутатор, который имеет необходимое количество портов, например 8,16 и так далее. Учтите, сетевые шнуры бывают разные, прямые, обратные, впрочем, современные коммутаторы могут работать с любыми из них. Проблемы могут возникнуть, только если вы используете хабы или как их ещё называют сетевые концентраторы. Так же стоит учитывать, что сеть можно настроить и другим способом, на FireWire(1394), WiFi и так далее. Более подробную информацию о настройке сетей ищите в Интернете.
Для установки коммутатора не требуется драйверов. Просто соедините к нему все машины, подключив каждую в свой порт. Всю процедуру можно провести при включенных компьютерах.
Теперь настроим сеть программно. Для этого нужно:
- зайти в настройки сетевого подключения Панель управления >> Сетевые подключения >> Подключение по локальной сети. Вызвать контекстное меню данного подключения и выбрать Свойства
- во вкладке Общие выбрать Протокол Интернета (TCP/IP) и нажать кнопку Свойства
- поставить переключатель в положение Использовать следующий IP-адрес:
- Заполнить поля следующим образом:
IP-адрес: 192.168.0.1
Маска подсети: 255.255.255.0
- Выйти из настроек, подтвердив все изменения.
- Повторить то же самое на всех машинах, но в строке IP-адрес изменять последнее значение на единицу больше. Например:
Первый комп: 192.168.0.1
Второй комп: 192.168.0.2
Третий комп: 192.168.0.3
……
Так же необходимо каждому компьютеру указать уникальное сетевое имя и для всех одинаковую рабочую группу. Это делается по адресу: Свойства значка Мой компьютер >> Имя компьютера >> Изменить.
В этом окне укажите Имя компьютера, отличное от других машин в сети, и одинаковую для всех рабочую группу (хотя и не обязательно). Возможно, потом придётся перезагрузить компьютер.
Существует другой вариант настройки, когда ваши компьютеры подключены к ADSL, где IP-адреса назначаются динамически (DHCP), то есть вам не удастся указать конкретный локальный IP. Обычно настройка такой сети происходит автоматически программой, поставляемой с модемом или провайдером. В таком случае адреса должны быть аналогичными, возможно просто с другими цифрами. Например, у меня как раз такая ситуация. Внутренние адреса автоматически назначены такими: 192.168.1.33 и 192.168.1.34. Это никак не помешает нашей работе. Просто надо узнать эти адреса в свойствах соединения. Ниже приведена схема подключения такой сети с учетом наличия интернета.
Итак, после всех манипуляций Windows должен сообщить, что соединение успешно установлено на скорости 10/100/1000 Мб/сек. Скорость может изменяться в зависимости от оборудования. Поздравляю, вы создали домашнюю сеть. И если не возникло желание испытать какие-нибудь мультиплеерные игрушки, продолжим настройку сетевого рендера.
Гораздо удобнее настраивать сетевой рендер, когда компьютеры находятся в зоне досягаемости одного рабочего места. Если достичь этого не удаётся, то процесс настройки станет чуть менее удобным. Можно воспользоваться специальными утилитами, обеспечивающими удаленный доступ. Я рекомендую использовать программу RAdmin®, которая позволит работать с удаленными машинами, даже если те не имеют мониторов. Правда, у меня были проблемы с его использованием. Возможно, более новые версии избавятся от этих проблем.
Для начала необходимо установить на все машины идентичное программное обеспечение. Нельзя забывать про подключаемые модули (плагины), скрипты для 3D Studio Max, которые могут использоваться при рендере.
Проект сетевой визуализации.
Создаем в 3D Studio Max на главном компьютере новый проект. Как обычно, File / reset. Далее расскажу о правилах его организации. Для удобства и скорости работы нужно располагать файлы в определённом месте, то есть в одной папке. Я использую на диске такой каталог:
C:\DistribRend\Project_1
Прошу обратить внимание на отсутствие символов кириллицы, что в Windows не приведёт к ошибкам, но всё же… В этой папке создаём папку Maps. Сюда будем помещать текстурные карты, файлы IES и прочие сопутствующие проекту файлы, которые понадобятся другим компьютерам при сетевом рендере. Также для удобства при работе с большими проектами можно сделать сколь угодно подпапок для различных целей. Лишь бы всё было на месте и удобно. Важно одно – все текстуры и другие файлы, используемые в проекте для рендера, должны находится в одной папке, без вложенных подпапок. В свою очередь в папке Maps можно сделать другую подпапку, в которой складывать не используемые или временные текстуры.
Например, я сделал такую структуру проекта:
Сами файлы проекта *.max находятся в папке Project_1, так что сразу же сохраните пустой проект в эту папку под именем DR_01.max.
Теперь нужно открыть доступ сетевым компьютерам к папке, где хранятся файлы проекта. Здесь может быть два варианта:
- Подключение сетевого диска:
Так как в папке DistribRend может быть несколько проектов, то эту папку можно делать сетевым диском. В данном проекте я просто открою доступ к текстурам что находятся в maps. Открываем контекстное меню этой папки и выбираем Общий доступ и безопасность. Увидите некоторые предупреждения о последствиях включения папки в сеть. Жмем на единственную синюю строку, чтобы открыть настройку доступа. Открывается настройка доступа папки maps.
- В группе Сетевой общий доступ и безопасность выбираем Открыть общий доступ к этой папке.
- Указываем сетевое имя папки в строке Имя общего ресурса.
- Ставим галку Разрешить изменение файлов по сети.
После этого папка maps будет иметь вид:
Параметр Разрешить изменение файлов по сети требуется для нескольких целей, в том числе если хотите работать с проектом с другой машины. Например, если удаленная машина быстрей или имеет больше памяти, то лучше сделать её основной при финальном рендере. А для этого достаточно загрузить проект с сетевого диска.
Теперь переходим на другую машину.
- Нажимаем правой кнопкой мыши на значке Мой компьютер
- Выбираем Подключить сетевой диск…
- В окне подключения диска выберите Обзор >> Microsoft Windows Network >> [Рабочая группа] >> [Имя основного комьютера] >> maps, то есть папка на сетевом компьютере. Так же в окне подключения диска можно указать букву нового диска. Теперь папка с проектом доступна сетевому компьютеру. Проделайте то же самое на всех сетевых машинах.
- Создание сетевого пути:
Это наиболее перспективный вариант и подходит для ситуации, когда на удаленных компьютерах ничего не нужно делать. Нажимая кнопку рендера на главном компьютере, вы автоматически заставляете остальные машины проводить сетевой расчёт, и в данном случае доступ открывается немного иначе. Необходимо задать конкретное имя в строке Имя общего ресурса, которое подошло бы для любого проекта. Например, папке Maps сделать сетевое имя maps. Если требуется открыть доступ к другой папке другого проекта, например Textures, то достаточно доступ к папке Maps отключить, а папке Textures открыть под тем же именем maps. Это нужно для того, что бы на удаленных машинах ничего не менять, в частности пути доступа к файлам, необходимыми для рендера (текстурные карты, IES и так далее). Тогда удаленные машины будут использовать новый адрес без вмешательства в их настройки. Ниже представлены схемы такой настройки.
Возвращаемся в 3D Studio Max. Cделаем следующее: установите V-Ray в качестве визуализатора.
Предположим, что Вы начинаете какой-то проект. Как и любой другой проект, он будет содержать текстуры. Тут мы встречаемся с одним очень важным моментом в сетевой визуализации. Перед тем как добавить текстурный файл в проект, необходимо его скопироваться в папку с текстурами данного проекта, как говорилось ранее. Это в основном для порядка, но не соблюдения этого простого правила постоянно приводит к проблемам. Например, если вы добавите текстуру, скажем, из папки D:\Textures\Wood, то в настройках карты материала BitMap будет стоять именно этот путь, который конечно же не является сетевым. А значит, будут проблемы с отображением текстуры. Об этом читайте в разделе разрешения проблем.
Итак, я копирую все нужные мне текстуры в папку «C:\DistribRend\Project_1\Maps», и после этого добавляю в проект. Теперь настраиваем освещение. Это я оставляю на Ваше усмотрение, но скажу, что если вы сделали простую сцену для пробы, желательно включить глобальное освещение хотя бы на низких настройках. Это нужно для того, чтобы сетевой компьютер успел включиться в работу. Дело в том, что основной компьютер, на котором запущена сцена, не станет дожидаться пока все подключатся к просчету на очередном этапе. Он начинает рендерить, а остальные подключаются позже, по мере передачи им данных о предварительных просчётах. И если компьютеры у вас быстрые, то сетевые помощники просто не успевают подключиться. Для того чтобы сетевой рендер был всё же проверен, необходимо чтобы просчет шёл некоторое время. Но если в сети всё же есть слабые машины, то успев подключиться к просчету они скорее всего будут тормозить его, заставляя все остальные компьютеры ждать. Ведь пока все сегменты картинки данного этапа не просчитаны, следующий этап не начинается. Так что в сети лучше иметь примерно одинаковые компьютеры.
В данном уроке я импортирую в сцену модель и нанесу не неё текстуры. Посмотрим результат рендера без сети, то есть на одном компьютере:
Всё выглядит достаточно правильно. На этом этапе сцена настроена для локального компьютера. Теперь настраиваем распределенную визуализацию. Для этого:
- открываем окно настройки рендера: Rendering >> Render… >> Renderer или F10 >> Renderer.
- переходим в свиток V-Ray: System
- в группе Distributed Render (распределенная визуализация) ставим галку Distributed rendering и жмем кнопку Settings…
- в окне настройки сетевого рендера жмем Add Server и вводим имя сетевой машины строчными буквами без точки (но никто не мешает вам написать там IP-адрес вместо имени). Если не знаете такового, то можно посмотреть здесь: Свойства значка Мой компьютер >> Имя компьютера >> Полное имя: . После этого жмем ОК. В списке серверов вы увидите сетевой компьютер, но это лишь его имя. Чтобы V-ray нашёл его IP-адрес по имени, жмём кнопку Resolve server, если компьютер найден, то появится его IP-адрес.
Если появляются знаки вопроса, то решение смотрите ниже в следующем разделе. Тут же с помощью галки над именем компьютера можно включать и выключать серверы для просчета.
- Если не стоит галка Show window в группе V-Ray log, то обязательно поставьте.
Сетевой рендер можно использовать с первых минут работы для ускорения предварительных рендеров, так как всё происходит автоматически, будто вы работаете на локальном компьютере. Все эти настройки можно производить и в самом начале работы еще с пустой сценой.
Можно сказать, что на основном компьютере всё готово. Теперь на всех сетевых машинах запустите менеджер сетевого рендера V-Ray. Он находится в корне папки с 3DS Max и называется vrayspawner60.exe. Или в меню Пуск >> Программы >> Chaos Group >> V-Ray Adv for 3dsmax R9 for x86 >> Distributed rendering >> Launch V-Ray DR spawner. Запустите этот файл на всех сетевых компьютерах. На базовом компьютере должен быть запущен только сам 3DS Max с проектом, vrayspawner запускать не требуется. После запуска vrayspawner в трее появится его значок, а в панели задач должна отобразиться иконка 3DS Max с запущеной сценой vraydummy60.max. Это значит, что компьютер готов к работе.
Перед тем как запустить рендер, убедитесь, что в настройках Irradiance Map и Light Cache (если используете эти алгоритмы просчёта) стоит параметр Show Calc. Phase. Это нужно для наглядности процесса рендера, хотя и немного отнимает ресурсы. Обидно будет после долгого ожидания обнаружить, что сетевой компьютер не видит текстур. К тому же Irradiance Map при сетевом рендере считается сразу за один проход. При этом окно статистики неверно показывает время просчета. Поэтому лучше видеть процесс воочию. Для этого мы ещё включили и окно лога. Но о нем позже.
Итак, запускаем просчет, ждем и… о ужас!!! Скорее всего, вы увидите картину, подобную этой:
Да, сетевой компьютер не видит текстур, даже при подключённом сетевом диске. Это не неисправность, это самая распространённая ошибка начинающих, и потому описание данной проблемы не вынесено в раздел разрешения возможных проблем.
Именно такая картина получилась потому, что я все собственные цвета материала оставлял серыми, а цвет задавал небольшими картинками, содержащими только нужный мне цвет:
Это я сделал для наглядности примера. Если бы я задавал каждый цвет через цвет материала, то не отобразилась бы только маска на авто и некоторые текстуры окружения:
Эта ошибка может быть обнаружена еще во время предварительных просчетов Irradiance Map, а вот LightCache не выявит её, потому что каждая машина считает его отдельно. На картинке ниже показан просчет карты освещения Irradiance Map. Вы такое сможете наблюдать, если только в настройках этой карты включена опция Show calc. Phase. Как видите, отсутствие текстуры уже заметно:
Сетевой компьютер, который считал мою сцену без текстур, в два раза быстрее того, на котором загружена сцена. Потому большинство бакетов у меня просчиталось неправильно.
Итак, чтобы сетевая машина увидел текстуры необходимо указать User Paths на папку с материалами. Для этого на каждом сетевом компьютере:
- выключаем vrayspawner через контекстное меню значка в трее.
- запускаем 3D Studio Max и открываем следующие настройки: Customize >> Configure User Paths.
- в окне настройки путей пользовательских файлов нажимаем кнопку Add и выбираем папку Maps вашего текущего проекта из сетевого окружения, либо в строке адреса прописываем нечто вроде \\comp1\maps\, где comp1 это имя компьютера, а maps это тот самый сетевой ресурс. Для удаленных машин желательно, чтобы этот путь был самым первым в списке, хотя и не обязательно. Обратите внимание, реальное название папки с картами и прочими файлами необходимыми для рендера может быть любым. Когда вы визуализируете другой проект, вам остаётся лишь переназначить сетевую папку на главной машине \\comp\maps\ на иную.
- Use Paths, ОК.
Вот потому я и говорил хранить все текстуры в одной папке, чтобы не добавлять кучу путей в этом окне. К тому же количество строк ограничено числом 1024.
После этого загрузите vrayspawner на всех сетевых машинах. Всё должно заработать правильно.
Советы и особенности сетевого рендера в V-Ray.
Теперь расскажу ещё о некоторых удобствах, предусмотренных в V-Ray.
При рендере несколькими компьютерами каждый кубик (бакет), обозначающий зону просчета, подписан именем того компьютера, который данную область считает. Это удобно и даже интересно для сравнения скоростей.
Очень важным моментом в сетевой визуализации является окно V-Ray log. В этом окне обозначается вся информация, касающаяся процесса рендера. Наверное, вы видели рядом с галкой Show window счетчик с цифрой 3. Это значит третий уровень лога, то есть количество информации. На первом уровне вы практически ничего не узнаете о рендере. На втором тоже ничего полезного не увидите (при сетевом рендере). Третий уровень предоставляет важную информацию, описывающую основные действия. Четвёртый уровень предоставляет полную информацию, даже слишком для нас полную. Нам, конечно же, нужен третий уровень, как самый рациональный. Запустите рендер и уведите информацию. Важны две строки:
Connect to render host 192.168.1.34
Using 1 hosts for distributed rendering.
Эту строку я увидел, потому что у меня два компьютера. У вас может быть иначе, но главное, что эти строки означают успешное подключение к сетевым машинам. А вот что Вы увидите при обратной ситуации:
Warning: Could not connected to host 192.168.1.34
Using 0 hosts for distributed rendering.
Это значит, что подключение не удалось. О решении данной проблемы говорится в соответствующем разделе.
В окне V-ray Log зеленым подсвечиваются строки с ошибками, красным критические ошибки, а оранжевым простые сообщения обычно связанные с передачей информации на сетевые компьютеры.
Хочу заметить, что после настройки сетевого рендера это окно можно и отключить. Оно в основном требуется для разрешения проблем. Но иногда по непонятным причинам сетевые помощники могут вылетать из просчета, что скажется недосчитанными бакетами и невозможностью завершить просчет. Сообщение об этом будет в логе.
Вторая полезная вещь – это V-Ray Frame buffer. Включается в настройках рендера. Rendering >> Render… >> Renderer >> VRay::Frame Buffer >> Enable built-in Frame Buffer.
Эта опция заменяет стандартное окно рендера на улучшенное. В нём доступно редактирование штампа (подписи) во время рендера и без глюков с русскими шрифтами. А так же наглядная вставка макросов таких как « %rendertime », который в строке заменится на время рендера.
Непосредственно во время просчета имеется возможность изменять цветовые характеристики картинки. Для этого нужно включить опцию Use colors curve correction и другой кнопкой Show corrections control открыть окно настройки.
И самое главное – рендер за курсором! Включив эту кнопку . Вы сможете указать, какую часть картинки просчитывать, просто поставив туда курсор. Такая опция полезна на этапе подгонки материалов и настройки света. И это далеко не все возможности данного окна. Остальные оставляю на самостоятельное изучение. Но скажу одно, и сам V-Ray об этом предупреждает – для финального рендера лучше Frame buffer отключать, особенно, если считается несколько картинок подряд с сохранением результатов на диск. Хотя у меня проблем не было.
Во время работы Вам не придётся ничего подстраивать на сетевых компьютерах. Вы просто соблюдаете правила размещения текстур и работаете как на локальном компьютере. Если проект очень большой, то иногда нужно подождать несколько секунд после отмены рендера и перед запуском другого просчета. И соответственно подождать пока все сцены загрузятся на сетевые компьютеры. Чтобы сократить время ожидания при финальном просчёте можно скопировать всю папку законченного проекта на сетевые машины и прописать путь к этим папкам в Configure User Paths. Если какой-то компьютер не успел или не смог вписаться в рендер, то об этом сообщит окно лога.
Если на сетевых компьютерах поставить процессу 3dsmax.exe низкий приоритет, то пользователи могут и не заметить участие своего компьютера в сетевом просчете. При условии, что на неё хватает оперативной памяти и не идёт загрузка жесткого диска. Пользователь может даже запускать ресурсоёмкие программы, только пользы от такого сетевого помощника будет меньше.
За загруженностью каждого компьютера в сети есть возможность наблюдать, запустив диспетчер задач или другой монитор процессора, который покажет, занят процессор делом или нет. А RAdmin поможет оставаться при этом на своем рабочем месте.
Основным компьютером лучше ставить самый мощный, а слабые вообще не включать в сетевой рендер, если только вся сеть не состоит из таковых :) В целом, сеть должна состоять из примерно равных по скорости машин, иначе все быстрые машины могут ждать одну медленную.
Чтобы проверить видимость текстур и быть уверенным, что они будут видны во время рендера, можно загрузить проект по сети на другом компьютере и просмотреть все материалы на наличие текстур. Можно даже с него рендерить как с сервера, если данный компьютер является самым быстрым. Так же при этом будет видна совместимость сцены и установленного программного обеспечения на конкретном компьютере.
Если в сети Ноутбук, он, возможно, будет генерировать один бакет, что означает один поток. Аналогично этой проблеме четырёхядерные процессоры могут рендерить только двумя ядрами. Эта проблема решается по средствам скрипта:
renderers.current.system_numThreads=2 - скрипт для двух ядер
renderers.current.system_numThreads=4 - скрипт для четырёх ядер
При этом нужно чтобы при вводе этой команды V-Ray был активным рендером, иначе получите ошибку. Что бы запускать скрипт при запуске 3DS Max, необходимо V-Ray сделать рендером по умолчанию.
И ещё важно, если на главной машине запустить этот скрипт, то количество потоков передаётся на все машины. Хочу заметить, что если на двухядерном процессоре поставить поток как для четырёх ядер, то скорость практически не изменится. Так что если в сети есть четырёхядерные машины, нужно ставить 4 ядра.
При наличии в сети более 5 двухядерных машин возникает проблема, когда рендерят только пять, а остальные отдыхают. Эта проблема связана с ограничением количества сетевых потоков, которое стоит в самом Windows, то есть по одному потоку на бакет. Это ограничение снимается по средствам программки xp-AntiSpy, которая ещё много чего делает. Но нам нужна именно эта опция. Делается это так:
- запустить xp-AntiSpy
- Сервис / лимит соединений…
- ОК
Лучше сделать резервную копию системы перед такими манипуляциями, иначе рискуете потерять время на восстановление.
Это ограничение нужно снимать только на головной машине. Остальные в таковом не нуждаются.
И было бы всё хорошо, да вот только сам V-Ray имеет тоже ограничение в 10 систем для рендера, что якобы предусмотрено типом лицензии. К сожалению, не было возможности проверить это, потому что у меня только 2 компьютера. А собирал сеть лишь из четырех.
Сама настройка сетевого рендера кажется довольно трудоёмкой и проблемной. Однако стоит отметить, что при правильной изначальной настройке макса и сети, вам останется лишь открывать новые проекты и непосредственно перед рендером менять сетевой путь к папке ресурсов (\\comp\maps\). Сетевые машины в дальнейшем могут вообще не требовать вашего вмешательства. Особенно если запускать vrayspawner через сеть со своего компьютера. При правильной настройке, можно даже забыть, что просчет идет несколькими компьютерами.
Переходим к разделу разрешения проблем, ибо таковые обязательно найдутся. Собственно ради них был написан этот урок.
Разрешение проблем сетевого рендера.
Q.: Не могу подключить сетевой диск, в рабочей группе виден только мой компьютер.
A.: Проверь правильность настройки сети. В частности IP-адреса. Они должны различаться последней цифрой. Так же важно чтобы различались имена компьютеров, а совпадение рабочих групп не всегда обязательно.
Q.: V-Ray не видит сетевых компьютеров. При добавлении сервера и нажатии Resolve server, IP-адрес не появляется.
A.: Опять же, проверь настройку сети, IP-адреса в настройках протокола.
A.: Если у вас имеется общий доступ в интернет, наверняка есть FireWall. Проверь его настройки, пускает ли он процесс 3dsmax.exe на конкретный адрес? Особенно это актуально, если сеть так же имеет доступ в интернет.
A.: Возможно разные версии программ.
Q.: V-Ray определил сетевые компьютеры, но при рендере выдаёт ошибку:
Warning: Could not connected to host 192.168.0.2
Using 0 hosts for distributed rendering.
A.: Либо вы забыли запустить/перезапустить vrayspawner, либо FireWall не пускает его. Настрой защиту сети.
A.: Может vrayspawner не успел загрузить стартовую сцену vraydummy. Не спеши и повтори попытку позже.
A.: Возможно установлены разные версии программного обеспечения.
Q.: При запуске vrayspawner сцена vraydummy60.max не загружается. Вместо этого 3DMаx циклически загружается и закрывается.
A.: Чтобы этого не было можно сделать так:
1. Попробовать просто закрыть и еще раз открыть vrayspawner (совет из оригинального мануала).
2. Перезапустить компьютер.
3. Перед запуском vrayspawner запустить менеджер Backburner. Пуск >> Программы >> Autodesk >> Backburner >> manager. После этого сцена должна загрузиться и Менеджер Backburner можно закрыть.
Q.: Некоторые материалы без текстур.
A.: Сетевой компьютер не может получить доступ к текстурам. Добавь на нем путь к сетевой папке (См. описание выше) заблаговременно открыв к ней доступ.
A.: Файл текстуры был добавлен не из папки проекта. В этом случае путь к файлу будет прописан по адресу, откуда был добавлен файл. Нужно заново назначить файл в карту BitMap скопировав перед этим сам файл в папку проекта, которая имеет сетевой доступ. Либо открыть доступ к папке, откуда добавлен файл.
A.: Если есть навык и возможность, можно пользоваться утилитой Resource Collector, Что находится в панели Utilities в списке что под кнопкой More. При экспорте сам Max файл можно не включать.
A.: Если графический файл в карту BitMap добавлен откуда-то из архивов текстур, который не является сетевым и не прописан в максе как рабочий путь, то текстура не будет найдена. Не всегда, но в основном помогает копирование нужного файла в расшареную папку.
Q.: Некоторые материалы вообще черные.
A.: Возможно на сетевых компьютерах не стоят соответствующие плагины, например simian-материалы.
Q.: Все текстуры на месте, но компьютеры рендерят картинку с разной степенью освещённости.
A.: Есть много теорий о том почему это происходит. Вот некоторые из них.
- Быть может это связано с разной конфигурацией компьютеров.
- Так же были разговоры о методах просчета.
- Если рендерится анимация, возможно компьютеры имеют различные типы или версии видео кодеков.
- Возможно это глюки из-за настройки Color Mapping, в частности параметр Sub-pixel mapping. О таких ситуациях обычно предупреждают в логе.
- Некоторые ресурсы говорят о том, что такие артефакты чаще появляются при просчете карты освещение алгоритмами Irradiance Map и Photon Map. Из первоисточника можно узнать, что это просто является недоработкой. (по крайней мере, на RC2 и RC3 такое иногда наблюдалось. Что касается RC5, пока не встречал).
- Даже на локальной машине можно получить такие артефакты, если убрать галку Multipass в настройках Irradiance Map, при условии что у вас многоядерный ил многопроцессорный компьютер. Но возможно это будет проявляться не разными бакетами а различной светлотой одной картинки если её дважды просчитать, не меняя ничего.
- В некоторых случаях может помочь режим Bucket mode вместо Single Mode, поставленные в настройках Irradiance Map в группе Mode.
Это конечно всё может иметь место, но самая распространенная причина – недоступность для сетевых машин информации об освещении и других ресурсах. Что подразумевается под информацией об освещении? Это внешние файлы, которыми определяется освещение в сцене. А именно: IES-файлы, HDRI, сохраненные карты предварительного просчета освещения.
Если в сцене использовались фотонометрические светильники с методом затухания Web, в настройках которого IES-файл, то видимо этот файл находится в недоступном для сетевой машины месте, от чего и разная интенсивность светильников. В этом случае сетевые компьютеры обычно рендерят более светлые бакеты. Правильное решение закинуть его к текстурам или, что более трудоёмко, прописать к нему путь в сети. Вот результат отсутствия IES-файлов:
Нормальный рендер.
Рендер с ошибками.
Если сохраняете на диск просчитанные карты освещения (Irradiance Map) или HDRI, то к ним тоже нужно провести сетевую дорожку. При их отсутствии обычно сетевые машины делают более темные бакеты. Так же не забывайте про VRayExportMesh, который так же является внешним ресурсом. Дале представлен вариант, когда удаленный компьютер не обнаружил HDRI карту.
Как видите, не имея информации об освещении, компьютер освещает сцену лишь теми источниками, которые ему доступны.
Для нахождения причины появления артефактов попробуйте поочередно отключать всё то, что может давать их. Например IES, HDRI или иные источники. При этом учтите, что отсутствие даже просто текстуры может повлиять на освещение. Особенно это сложно определить, если текстура не видна на рендере, но влияет на интенсивность отражений.
Приведу пример моей недавней работы. Задача была очень простой, текстуры практически не применялись. Были только простые материалы с цветом. Но появились эти самые «разносветлые» бакеты. Поначалу я очень удивился. Ведь текстур я совсем не использовал. Я уже начал думать о крахе моей твердой теории, о том, что виноваты закрытые сетевые ресурсы. Но оказалось, что в самом начале работы я забросил на фон одну картинку, по которой сверялся при построении геометрии. Позже я просто убрал галку с параметра Use Map в окне Environment and Effects (что вызывается по кнопке 8). Оказалось что этого не достаточно. Необходимо было полностью очистить канал эффекта, нажав на кнопке с картой правой кнопкой мыши и выбрав пункт Clear, то есть карта, находящаяся в канале, даже в выключенном состоянии, воздействует на освещение! Хочу заметить, даже после этих манипуляций картинка из вьюпорта не пропадает, но и на освещение уже не влияет.
Q.: LightCache считается также по времени как и раньше.
A.: Это потому, что LightCache каждая машина считает для себя отдельно. Поэтому не желательно в сети иметь слабые компьютеры. Потому что пока не досчитается LightCache, никто не начнет считать следующий этап.
Q.: Я перенёс проект с другого компьютера, как настроить текстуры для рендера по сети?
A.: Три варианта:
1. Самый просто способ – открыть доступ к конкретной папке со всеми текстурами данного проекта. При этом поместить все текстуры в одну папку. Если не помогло, то…
2. Переписать пути к текстурам в настройках всех материалов.
3. Создать на компьютере такой же путь, как на прошлом компьютере.
4. Скопировать проект на все компьютеры и указать путь к ним в настройках User Paths.
Q.: Я только что настроил пути как было сказано. Почему не работает?
A.: Перегрузи vrayspawner. Vrayspawner подготовлен к сетевому рендеру. Это тот же 3DS Max, но запущенный из командной строки. Если что-то изменилось в настройках параллельно открытого 3DS Max, то на vrayspawner это не влияет, пока не будет произведена перезагрузка его с новыми параметрами. Кстати, для рендера из командной строки не требуется активация 3DS Max, чего не скажешь о самом V-Ray.
Q.: Почему при сетевом рендере Irradiance Map считается в один проход (prepass)?
A.: Потому что при сетевом рендере игнорируется параметр MultiPass. Чтобы быть в курсе происходящего, ставь опцию Show Calc. Phase в настройках Irradiance Map. Потому как процесс в окне статистики показывается не верно. Это сжатие в один проход иногда является причиной различной освещённости бакетов или полностью сцены во время следующего просчета.
Q.: Картинок считать много, но всё это разные проекты. Как автоматизировать процесс?
А.: Vrayspawner при каждом рендере грузит сцену заново, а это значит, что, даже открыв другой проект на головной машине перезапускать vrayspawner на остальных не. Потому остается лишь автоматизировать запуск разных сцен на главной машине. Это делается через командную строку. Либо всё прописать в файле *.bat (о принципе которого читайте в мануале), либо прописать тот же *.bat с запуском макса, в параметре которого запускается скрипт. А в скрипте уже все необходимые действия. Кому как удобно.
Послесловие…
Мне пришлось изучить сетевой рендер во время сдачи дипломного проекта. В то время дома у моего знакомого стояли 2 персональных компьютера и 2 ноутбука. Скажу честно – мы погрязли в проводах! Ведь помимо патч-кордов различного калибра (от 1 до 15 метров) были ещё сетевые шнуры, USB-удлинители, кабели для сетевых и локальных принтеров, кабели сканеров… постоянные передвижки компьютеров во время ночных баталий по сети, путаница мышей и их проводов... Так что с самого начала постарайтесь организовать свою сеть правильно и удобно для Вас.
Хочу выразить особую благодарность Atomic’у за роль стилистического редактора в написании текста статьи. А так же за пару сетевых хитростей, которые помогли сделать визуализацию по сети более удобной.
Надеюсь, статья была полезной. Буду ждать вопросы и пожелания на адрес Paul_Winex@Mail.ru