image

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

Данная статья посвещена правильному подключений нестандартных менталовских шейдеров к Maya 6.

Как наверное многие заметили Maya 6, при подключении к ней менталовских шейдеров не входящих в стандартную поставку, начинает ругаться, выдавая предупреждение:

// Warning: (Mayatomr.Nodes) : Node "lambert_p" has no ID, assigning a temporary ID. Scene should be saved as .ma (ASCII). //

Перевод гласит: "Нода "lambert_p" не имеет уникального ID, назначен временный ID. Сцена должна быть сохранена как .ma (ASCII)."

Так что же это за ID и как избавиться от этой ошибки?

Дело в том что в Maya каждая нода имеет свой собственный ID(номер). Для программистов, которые создают в Maya новые типы объектов, предусмотрен диапозон ID номеров из которого можно выбрать любой.
При подключении шейдера к Maya автоматически создается нода, которой должен быть присвоен свой собственный ID. Шейдера из стандартной поставки уже имеют свои ID, поэтому это относится только к шейдерам которые устанавливаются дополнительно.

Если не обращать внимание на это предупреждение и работать дальше, то возможны проблемы при попытке импортировать в сцену с кастомными шейдерами, шейдера из другой сцены. Так как в разных сцена временный номер назначенный шейдеру будет разным.

Решается проблема так:
Надо всего лишь присвоить ID каждому шейдеру, для этого надо добавить строку #: nodeid 440960 в *.mi фаил шейдера до 'end declare' для каждого шейдера в фаиле.
Например так:

declare shader
color "myShader" (
scalar "param1"
)
version 1
#: nodeid 440960
end declare

Эта строка нужна только для Maya, для Ментал Рея это всего лишь коментарии.

Вы можете связаться с компанией Alias для получения своего собственного диапозона ID, но если я не ошибаюсь это не бесплатная услуга. Диапозон значений ID предоставленный компанией Alias для тестирования от 0 до 524287. Использование номеров из этого диапозона гарантирует, что ваши ноды никогда не будут конфликтовать с любыми Майскими нодами, но теоретически, в случае совпадения номера, могут конфликтовать с плагинами официально не зарегистрированными.

Чтобы каждый не придумывал свой собственный номер я предлагаю договарится и назначать ID в соотвествии с данной таблицей. Это вовсе не обязательно, просто рекомендация во избежания дальнейших разногласий.
Некоторые из этих номеров назначены самими разработчиками шейдеров.

Имя шейдера Рекомендованный ID Автор Ссылка
Dirtmap - #: nodeid 3000 Daniel "thebigMuh" Rind link
md_subScatter - #: nodeid 1067081 Mark Davies link
buffer_writer - #: nodeid 333003 Ledin Pavel aka Puppet link
z - #: nodeid 333004 Ledin Pavel aka Puppet link
md_rayDiffuse - #: nodeid 333005 Mark Davies link
Diffraction - #: nodeid 3001 Daniel "thebigMuh" Rind link
passthrough_deriv - #: nodeid 2002 Horvatth, Szabolcs link
ReflectionUtility - #: nodeid 2001
Horvatth, Szabolcs link
maya_rayDisplace - #: nodeid 333009 Olivier Renouard link
tranvol201 - #: nodeid 3003 Andy Hayes link
fisheye - #: nodeid 333011 Ledin Pavel aka Puppet link
Deriver - #: nodeid 333012 Daniel "thebigMuh" Rind link
lm_2DMV - #: nodeid 3002 Guy Rabiller link
RayType - #: nodeid 2003 Horvatth Szabolcs link
tiwdte_color - #: nodeid 333013 Image Works link
tiwdte_elevation - #: nodeid 333014 Image Works link
tiwdte_percent - #: nodeid 333015 Image Works link
tiwdte_color_uv - #: nodeid 333016 Image Works link
tiwdte_elev_uv - #: nodeid 333017 Image Works link
tiwdte_perc_uv - #: nodeid 333018 Image Works link
ML_Oren_Nayar - #: nodeid 2208010302 M. Oguz Tas link
Diffusion - #: nodeid 343712 Daniel "thebigMuh" Rind link

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

Если вы используете какие то другие шейдера, пожалуйста сообщите мне имя и ID, он будет добавлен в таблицу. Так же, если приведенный ID конфликтуют с какими то плагинами, то прошу так же сообщить об этом мне.

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