image

Новости
Уроки и статьи
Загрузка
Обо мне
Ссылки

Внимание, в данной статье не обсуждаются вопросы вареза и тп, так что просьба не беспокоить автора по этому поводу!

В статье описано использование Mental Ray Stand Alone 3.4.5.8 (Alias) и Maya, но практически все ниже описанное можно применить к 3DSMax и другим версиям Mental Ray.

Почему именно Stand Alone?

По сути Mental Ray Stand Alone это рендер в чистом виде без примесей, тоесть рендер не зависящий от 3D пакета и работающий полностью автономно. Он имеет ряд приимуществ перед интегрированным решением:

1. Stand Alone версия гораздо более устойчивая. Как показывает практика, в большинстве случаев, то что не может отрендерить Mental Ray for Maya прекрасно рендерит Stand Alone.

2. Stand Alone версия при худшем раскладе не "валит" Маю.

3. Stand Alone предоставляет гораздо большую гибкость использования и больше возможностей. Например нововведения в новой версии Mental Ray часто бывают не доступны в 3D пакете, не говоря уже о тех возможностях которые просто не реализованы в 3D пакете, но доступны в самом рендере.

Из чего он состоит?

По сути рендер состоит всего из нескольких фаилов:
1. ray.exe - собственно это и есть сам рендер. Этот фаил может иметь различные названия, например ray3.exe или ray345.exe смысл от этого неменяется, ray.exe это его оригинальное название.
2. rayserver.exe - сервис отвечающий за распределенный рендер по сети (distributed rendering). Этот фаил так же может иметь различные названия, например ray3server.exe или ray345server.exe. Его оригинальное навзание rayserver.exe.
3. include/ - папка где содержатся *.mi фаилы в которых объявлены шейдера.
4. lib/ - собственно сами шейдера в *.dll
5. rayrc - фаил который отвечает за то, какие шейдера будут загружены, пути к ним и тп.
6. .rayhosts - фаил в котором указаны хосты для сетевого рендера.
7. imf_copy.exe, fg_copy.exe, imf_diff.exe, imf_disp.exe и imf_info.exe - всяческие утилиты для просмотра, конвертации картинок и тп. Подробное описание этих утилит можно найти в документации.
8. mentalrayrender.cmd - командный фаил, который выставляет некоторые необходимые перменные и запускает ray.exe.

По сути обязательными являются только 1, 3(?) и 4 пункты.

Локальная установка и настройка

Для начала воспользуемся стандартной процедурой установки или просто копированием. Мы опустим вопросы лицензирования в данной статье, подразумивается что лицензия уже установлена (если нет, то следует обратиться в официальную документацию). И мы имеет практически готовый рендер, запускаемый из командной строки, например так:

mentalrayrender scene.mi.

Но лучше запускать рендер "на прямую" из ray.exe.
Если у вас фаил называется как то по другому, то рекомендую скопировать его и переименовать в 'ray.exe', то есть, в итоге у вас должно быть 2 одинаковых фаила с разными именами, например 'ray.exe' и 'ray345.exe', что обеспечит запуск рендера с любой из этих команд (либо 'ray' либо 'ray345').
Далее нам потребуется прописать environment переменную MI_ROOT, например так:

MI_ROOT=C:\Program Files\Alias\mentalray3.45

В этой директории в последствии будут искаться фаилы rayrc и .rayhosts.

Теперь нужно создать переменные окружения:

MI_RAY_INCPATH=C:/Program Files/Alias/mentalray3.45/include
MI_LIBRARY_PATH=C:/Program Files/Alias/mentalray3.45/lib

Соответственно в этих директориях будут искаться *.mi фаилы и *.dll в которых хранятся шейдера.

Так же следует проверить прописан ли в переменной Path путь до ray.exe, например C:\Program Files\Alias\mentalray3.45\bin, если нет, то его стоит добавить туда.

Далее заглянем в фаил rayrc (если его нету, то его нужно создать), там должно быть что то на подобии:

registry "{MAYABASE}" value "C:/Program Files/Alias/mentalray3.45" end registry

registry "{SYSTEM}" value "windows" end registry
registry "{DSO}" value "dll" end registry

$lookup "{MAYABASE}"

registry "{_MI_REG_INCLUDE}" value "{MAYABASE}\include" end registry
registry "{_MI_REG_LIBRARY}" value "{MAYABASE}\lib" end registry

Мы будем использовать немного другой способ подключения шейдеров - более явный. Мы полностью заменим содержимое этого фаила и впишем туда следующее:

registry "{MAYABASE}" value "C:/Program Files/Alias/mentalray3.45" end registry

registry "{SYSTEM}" value "windows" end registry
registry "{DSO}" value "dll" end registry

$lookup "{MAYABASE}"
$lookup "{SYSTEM}"
$lookup "{DSO}"
registry "{MRMAYA_START}"
    link "{MAYABASE}/lib/base.{DSO}"
    link "{MAYABASE}/lib/physics.{DSO}"
    link "{MAYABASE}/lib/mayabase.{DSO}"
    link "{MAYABASE}/lib/contour.{DSO}"
    link "{MAYABASE}/lib/subsurface.{DSO}"
    link "{MAYABASE}/lib/paint.{DSO}"
    link "{MAYABASE}/lib/mi_openexr.{DSO}"
    link "{MAYABASE}/lib/mayahair.{DSO}"
    echo "mental ray for Maya - startup done"
end registry

$lookup "{MRMAYA_START}"

Теперь все шейдера должны нормально находиться.
Чтобы проверить работоспособность, набираем в командной строке 'ray -v'

Примечание: Если вы запускаете команду 'ray -v' из какого-нибудь фаилового менеджера типа Far или Total Commander, то после изменения или добавления новых системных переменных окружения следует перестартовать их, иначе изменения не подействуют на все процессы запускаемые из них.

После запуска указанной команды ментал рей должен загрузить все шейдера и остановиться, не должно быть никаких ошибок и предупреждений.

MAIN .0 info : mental ray, version 3.4.5.8
MAIN .0 info : use -copyright option to view copyright and terms of use.
MAIN .0 progr: using 1 sharable license
MAIN 0.0 info : version 3.4.5.8, 31 Oct 2005
MI 0.0 progr: reading startup file "C:/Program Files/Alias/mentalray3.45/rayrc"
MI 0.0 progr: parsing file C:/Program Files/Alias/mentalray3.45/rayrc
LINK 0.0 progr: module #1 (C:/Program Files/Alias/mentalray3.45/lib/base.dll) loaded
LINK 0.0 progr: module #2 (C:/Program Files/Alias/mentalray3.45/lib/physics.dll) loaded
LINK 0.0 progr: module #3 (C:/Program Files/Alias/mentalray3.45/lib/mayabase.dll) loaded
LINK 0.0 progr: module #4 (C:/Program Files/Alias/mentalray3.45/lib/contour.dll) loaded
LINK 0.0 progr: module #5 (C:/Program Files/Alias/mentalray3.45/lib/subsurface.dll) loaded
LINK 0.0 progr: module #6 (C:/Program Files/Alias/mentalray3.45/lib/paint.dll) loaded
LINK 0.0 progr: module #7 (C:/Program Files/Alias/mentalray3.45/lib/mi_openexr.dll) loaded
LINK 0.0 info : C:/Program Files/Alias/mentalray3.45/lib/mayahair.dll: miSetModuleHandle() not found, shaders do not use mental ray API
LINK 0.0 progr: module #8 (C:/Program Files/Alias/mentalray3.45/lib/mayahair.dll) loaded
MSG 0.0 info : no ray hosts file .ray3hosts or .rayhosts
MI 0.0 progr: parsing file [stdin]

Для того чтобы воспользоваться распределенным рендером по сети можно создать в директории указанном в перменной MI_ROOT (той куда куда была произведена установка) фаил .rayhosts, в котором прописать имена хостов для рендера, например так:

render01
render02:7004
render03:7004

Вначале указывается имя машины для рендера и (опционально) через ':' номер порта, по которому будет произведено соединение.

Готово!

Для рендера можно воспользоваться командой:

ray scene.mi

или

ray -v on -x on -imgpipe 1 scene.mi | imf_disp -



Многих отпугивает сложность и неудобство использования, когда приходится запускать рендер из командной строки, собственно эту проблему я и попытался частично решить, написав небольшой mel скрипт для рендера Mental Ray Stand Alone прямо из Maya.

Свои вопросы, предложения и пожелания прошу на puppet@rambler.ru
Удачи!
Ваш Puppet.