АША API

Несмотря на вышеприведенное эмоциональное заявление, замечу также, что в этой книге вы не найдете никакой информации про использование MAYAAPI и написание плагинов для MAYA на языке C++, Почему?

Во-первых, я не люблю язык C++. Так получилось…

Во-вторых, если рассказывать об этом, предполагая, что пользователь книги не программист, придется рассказывать об основах языка C++, об иерархиях классов, о полиморфизме и прочих вещах, на которые у меня и без того аллергия (см. также первую причину). Это будет нерациональное и неполезное для здоровья расходование книжного пространства. Если же предположить, что пользователи книги все как один программисты, их можно смело отослать к прекрасной документации и примерам из базовой поставки MAYA, этого им должно хватить с головой. Кроме того, разговора с безумными программистами на их же языке на страницах книги не всякий вытерпит. Перегреется…

Повторю: вы должны иметь очень сильную производственную или коммерческую мотивацию, чтобы начать писать плагины для MAYA. Дело это непростое, занудное и хлопотное. Размер кода на C++ чудовищен (как обычно), а сам код нечитабелен для нормального человека. Если вам все же не терпится, начните с написания своего деформера, путем изменения примеров из MAYASDK. Вышеупомянутая книжка Дэвида Гоулда может также помочь, однако всем, у кого нет хотя бы минимального опыта программирования на C++, будет очень тяжко.

MEL для программистов - но на С

Если вы не программист, переходите к следующему разделу («Не для программистов. Как примерно все происходит»). Для остальных замечу: MEL более всего похож на С или на Perl.

Язык MEL интерпретируемый, поэтому код на MEL будет выполняться, как правило, одинаково на всех платформах, на которых запускается MAYA, за исключением команд работы с операционной системой.

В отличие от С, все переменные здесь начинаются со знака доллара: например, $х=5.

Тип float соответствует типу double на языке С. Тип char отсутствует, но тип string оперирует со строками как с простыми переменными, а не с массивами. Обратиться к элементу строки по индексу нельзя, а можно только с помощью нужной функции.

Массивы и матрицы присутствуют и не требуют выделения памяти, в силу отсутствия необходимости компиляции.

Массивы массивов объявлять нельзя. Структуры отсутствуют.

Есть спецтип vector, как вариант массива из трех float, над которым определены векторные операции. Типы описывать не обязательно. Как обычно, объявление по первому присваиванию служит источником неприятностей.

Контрольные конструкции - типа {}, if-else, for, while, break, switch, continue и другие - такие же, как в С.

Оператора goto нет в принципе. А иногда хочется.

Есть также операции работы с файлами типа fopen, fread, fwrite, fprint, хорошо работающие с текстовыми данными.

Вместо printf в MEL надо писать print!

Есть возможность объявлять и вызывать процедуры с аргументами и без.

Наиболее непривычен вариант вызова функций не в виде имени и списка аргументов в скобках, разделенных запятыми, а в виде имени функции и аргументов, разделенными пробелами.


⇐ вернуться назад | | далее ⇒