Svalue = ' fgetline SfileNumber' ; setAttr “dropShape.conserve” Svalue ; fclose SfileNumber;
}
// вызов процедуры dropAttrWindow в конце Script Node dropAttrWindow; После этого следует немедленно нажать кнопку Create и получить новый объект типа Script Node с именем scriptl.
Вызов команды dropAttrWindow в конце текста необходим. Иначе этот скрипт будет просто объявлять четыре процедуры и ничего больше не делать. Также важно вызывать команду именно в конце, после того, как все необходимые процедуры будут объявлены.
Протестировать созданный объект-скрипт можно нажав кнопку Test Script. Если вы скопировали все правильно, должно выскочить окошко с атрибутами.
Осталось решить, когда созданный объект Script Node будет выполняться. Пока он просто сохранился в недрах сцены и выполняется только по нашему требованию при нажатии на кнопку Test Script. В отличие от expressions, он не будет выполняться при смене кадра, если только мы его об этом не попросим.
Чтобы задать, когда созданный объект-скрипт будет выполняться, выберите в списке Execute On: пункт GUI Open/Close.
Это означает, что скрипт будет выполняться каждый раз при открытии (или закрытии) сцены в MAYA.
Опция Script: = Before означает выполнение при открытии сцены.
Остальные пункты в списке Execute On: позволяют выполнять Script Node при открытии сцены не только в интерфейсе MAYA, но и при постановке на рендеринг. Опция Time Changed превращает такой скрипт в банальный expression, выполняющийся каждый раз при смене кадра. Сейчас нужно обязательно сохранить сцену, ведь мы создали новый объект!
Сохраните сцену как dropPresetScriptNode.ma.
Создайте новую сцену, а затем откройте только сохраненный файл с частицами.
При открытии сцены будет выскакивать окошко для работы с атрибутами.
Таким образом, вместе со сценой мы сохранили скрипт, выполняющийся каждый раз при открытии сцены. Такие скрипты можно сохранять вместе со сценой в любом количестве. Не хочу провоцировать хакерски настроенные умы, но любители вирусов и антивирусов могут распознать в таких скриптах своеобразных троянцев, исполняющих свой коварный код при открытии невинной сцены.
Естественно, что скрипты, сохраняемые со сценой, должны, как правило, иметь дело с содержанием сцены: рисовать интерфейс для работы с объектами, проверять глобальные установки, удалять или создавать кэш-файлы, вставать в первый кадр и прочее.
Интерфейс для рисования процедурных кривых
Если вы уже устали от рисования окошек, пропускайте этот раздел и двигайтесь в сторону изменения стандартных майских скриптов. А я бы хотел остановиться на вопросе создания окошек, содержащих не слайдеры, связанные с атрибутами объектов, а просто числовые поля, значения которых можно использовать для последующих построений или вычислений.
Напомню, что вначале главы нами был написан скрипт, рисующий спираль или другую процедурную кривую по заданной формуле.
int $NumPoints=500;
float $Amp=3.0, $Freq=2.0, $Density=10.0, $xSpeed=5.0;
if(objExists(“myCurve”)==1) { delete “myCurve”; } curve -p 0 0 0 -n “myCurve”; int $i;