Render.ru

FAQ форума MaxScript

Savin Denis

Модератор форума
Команда форума
Рейтинг
138
#1
FAQ форума MaxScript

В этой теме буду собирать ответы на часто задаваемые вопросы.


(Q) Как задать вопрос по Maxscript ?
(A) Для начала обязательно найдите и прочтите все по данному вопросу в хелпе !
Человека, читавшего хелп сразу видно, и если после этого вопрос не решился задайте его на форуме:
Если в ответ вам указали на главу в хелпе, не обижайтесь значит ответ там, и освещен достаточно для понимания, прочитайте раздел.
Если в ответ вам указали на большой раздел в хелпе, значит вопрос был слишком расплывчатым либо затрагивает большую тему.
Ищите в разделе то что вам больше подходит или уточните вопрос.
Задавайте конкретные вопросы, но задачу описывайте полностью, возможно она решается другим путем.
Приведите свой код, пусть и не рабочий.
Если это ваш код выделите только ту часть что относиться к вопросу.
Если код чужой, обратитесь прежде всего к автору, если это не возможно приводите ссылку на ресурс откуда его взяли.
Не спрашивайте как работать с чужим скриптом, обратитесь к автору или пользователям скрипта.
Если вы все сделали по инструкции но так и не добились результата, вам стоит подумать о заказе разработки данного скрипта.

(Q) У меня макс выдает Ошибку ! Помогите разобраться ...
(A) Инструкция как правильно задать вопрос по ошибке:
1. Указываешь версию софта: операционнка, 3dsmax, используемые модули.
2. КОПИРУЕШЬ в тему код или даешь ссылку на файл если большой.
3. Делаешь скриншот сразу после ошибки и приводишь ссылку на него, где видно:
....a) Заголовок окна 3dsmax c версией.
....b) Диалог с названием ошибки.
....c) Открытый редактор с подсвеченной строкой в которой остановился и ее номером.
4. Дальше закрываешь диалог и открываешь Max Listener (кнопка F11) и копируешь полный текст ошибки.

Ошибки выдаваемые 3dsmax на системных скриптах не рассматриваются, если 3dsmax установлен не c оригинального полного диска c английской (не локализованной) версией !


(Q) Мне нужен скрипт, .... ?
(A) Прежде чем просить помощи в написании скрипта сначала делайте поиск на Scriptspot, есть большая вероятность что кто-то уже решил эту проблему.
Укажите версию 3dsmax c которой работаете.
Четко опишите задачу: входные параметры, предполагаемый алгоритм работы, результат.
Помните, что никто не обязан писать за вас скрипт, но с другой стороны это лучший способ изучить язык для начинающих, не новичков можно заинтересовать интересной идеей.
В сложных случаях можно договориться о работе, но все финансы обсуждать через личку.
Уважайте чужое время и силы.


(Q) C чего начать изучение Maxscript ?
(A) Для начала:
1) Открываем Max Listener [F11].
2) И включаем MacroRecorder. Теперь создавая или изменяя объекты мы сможем видеть в верхнем окне Max Listener команды необходимые для повторения этих действий средствами Maxscript.
3) Далее учимся работать со справкой по Maxscript: Находясь в Max Listener нажимаем [F1].
4) И первым делом находим и изучаем раздел "Learning MAXScript"
5) Активно пользуемся поиском. Для тех кто еще не освоил, читаем раздел "Using the HTML Help Viewer"
6) Разбираем как работают примеры. В хелпе практически все примеры разобраны по шагам. Кому не хватаемт идем на Scriptspot
7) В качестве средств отладки используем вывод в Max Listener операторами print и format "value = %\n" value, а также читаем раздел "The MAXScript Debugger".
8) Если возникла ситуация с которой самостоятельно не удалось справиться пишем на форум но обязательно подробно описываем проблему и что в результате хотели получить. Обязательно приводим версию и разрядность 3dsmax, полный листинг ошибки из Max Listener и код вашего скрипта.


(Q) Если вы уже имели дело с низкоуровневыми языками такими как C++ ...
1) Специально для тех кто работал с C++: i++ в maxscript i += 1; блок кода{ _code_ } в maxscript ( _code_ ).
2) Если оператор в строке один то не обязательно ставить разделитель в конце - ";"
3) При инициализации переменных не нужно явно указывать их тип.
4) При инициализации распространеных имен переменных внутри функций, не лишним будет явно указать локальную видимость переменной: local name = "". Это позволит избежать редких но трудно уловимых ошибок связанных с видимостью переменных.
5) Функция может не иметь оператора Return, в этом случае она возвращает результат последнего оператора.
6) Настоятельно советую изучить разделы: For Loop, Skipping Loop Iterations, Loop Exit. Иначе ваши конструкции выглядят очень несуразно. Хотя работать и будут.
7) В обязательном порядке прочитать разделы: Manual Garbage Collection, Memory Allocation and Garbage Collection !
8) Не лишним будет заглянуть и в радел: "How To Make It Faster?"
9) Для любителей ООП, смотрим раздел Structure Definition и ссылки в низу.


(Q) А где можно достать хороший учебник на русском по max скрипту ?
(A) Пока, обучающей литературы по языку MaxScript на русском очень мало.
Лучший учебник всегда был и будет родной хелп по MaxScript, + примеры на любой вкус c сайта Scriptspot
Хелп содержит множество примеров, с подробными пояснениями, что какая команда делает.
Не стоит по началу забывать и про MacroRecorder.
Полного перевода хелпа нет и не будет. Не имеет смысла переводить - слишком часто меняется с выходом новой версии 3dsMax.


Единственное что пока видел на русском из книг:
Книга "Основы языка 3ds Max 8 MAXScript" (3ds Max 8 MAXScript Essentials)


Также стоит заглянуть в раздел уроков, вот некоторые ссылки:
Изучаем скрипты в Max 3
Не так страшен черт - данном уроке на примере анимации зубчатой передачи рассматривается применение скрипт контроллеров.
MAXScript - упрости себе жизнь, или откровения "чайника"
Как написать Plug-in для 3D Studio Max
Урок из книги "Основы 3ds Max 8 MAXScript": Преобразования и анимация
MAX SCRIPT. Пишем экспортер
Пишем макросы
Пишем макросы. Часть II
....

Тема где будут выкладываться новые линки на найденные ресурсы по MaxScirpt`у:

ПОЛЕЗНЫЕ СКРИПТЫ <-- Смотри здесь полный список.

"Единственный способ изучать новый язык программирования - писать на нем программы."
- Брайэн Керниган



(Q)Как запустить пример из MaxScript Reference ?
(A) 1) Открываем Max Listener [F11].
2) Открываем новое окно из Max Listener [Cntl - N]
3) Теперь копируем из хелпа текст примера в новое окно [Cntl -C]/[Cntl -V] (или перетаскиваем в него)
4) И запускаем его из этого окна на исполнение следующей комбинацией клавиш [Cntl -E]
(так же можно создать в любом редакторе текстовой файл с расширением ".ms' и скопировав туда текст примера, и запустить через Main Menu\MAXScript\Run Script)


(Q)Где мне найти скрипт после исполнения ?
(A)Существует ряд скриптов которые сразу после исполнения не производят никаких действий, а встраиваются в интерфейс 3dsmax расширяя его возможности.
Как же найти куда встроился такой скрипт ?
Прежде всего нужно внимательно прочитать все справочные материалы которые могли идти в комплекте со скриптом, поискать справку на сайте автора, заглянуть в сам файл скрипта, часто справка по установке скрипта пишется в начале файла, в комментарии.
Если никаких инструкций найти не удалось, попробуем разобраться сами.
Итак существуют следующие типы интерфейсных скриптов:

1) MacroScript (Макро-Скрипт)
Пожалуй самый распространенный тип интерфейсного скрипта с котором вам придется встречаться.
Обычно код макро-скрипта находиться в файле с расширением "*.mcr". но не обязательно по этому ищем в коде такой блок:
Код:
macroScript AutoMat category:"HowTo"
(
 ...
)
Нас интересует два параметра по которым мы найдем и настроим исполнение скрипта в пользовательском интерфейсе (UI):
(a) Это уникальное имя скрипта в данном примере это "AutoMat",
если есть параметр toolTip: то он будет использоваться в диалоге Custimize вместо уникального имени скрипта.
Пример - (macroScript AutoMat category:"HowTo" toolTip:"Automatick Materials")
(b) А также имя категории после параметра - category:"..."

Зная название категории и уникальное имя макро-скрипта мы сможем найти его через меню Customize... и настроить для него кнопку в Toolbars или "Шорт-кат".
1. Откройте Main Menu\Customize\Customize User Interface ...
2. Выбери закладку Toolbars
3. Выбери в выпадающем списке Сategory: найденную в коде категорию. (первый список должен быть - Group: Main UI !)
4. Создай новую панель инструментов нажав на кнопку New и введя для нее имя
5. Найдем в списке Action Имя нашего макро и перетащим его (методом Drag and Drop) на новую панель (ToolBar)
6. Нажав на кнопку мы запустим скрипт

2) Utility
Ищем в коде блок
Код:
utility spread "Spread objects" 
(
 ...
)
Если такой блок есть, то ищем наш скрипт в Command Pannel\Utilities\MaxScript\Utilities (смотрим в выпадающем меню)

3) Plugins - Плугин написанный на скрипте, как и скомпилированный на C++, может встраиваться в разные части интерфейса в зависимости от типа:
Пример блока плугина:
Код:
plugin helper getsetHandlerTest 
name:"DummyEx" 
classID:#(1453456,5432110) 
category:"Scripted Primitives" 
extends:dummy
( 
...
)
Где параметры по которым мы сможем его найти:
plugin <superclass> <varname> - Superclass определяет тип плугина и место поиска
name:<string> - Имя которое будет отраженно на кнопке в панели Create, если например этот плугин создает объект.
category:<string> - Имя категории которое нужно выбрать в выпадающем списке в панели Create

Возможные типы Superclass, а также и где можно найти новый функционал:

Geometry - Объект в панели Command Pannel\Create\Geometry\(категория указанная в параметре category: )
SimpleObject - Объект в панели Command Pannel\Create\Geometry\(Сategory:)
Shape - Шейп в панели Command Pannel\Create\Shapes\(Сategory:)
Light - Источник света в панели Command Pannel\Create\Lights\(Сategory:)
Camera - Камера в панели Command Pannel\Create\Cameras\(Сategory:)
Helper - Новый вспомогательный объект в панели Command Pannel\Create\Helpers\(Сategory:)
Modifier - Модификатор в панели Command Pannel\Modify\ (в выпадающем списке - name: )
SimpleMod - Модификатор в панели Command Pannel\Modify\ (в выпадающем списке - name: )
TrackViewUtility - Утилита в окне треков Main Menu\Graph Editors\New Track View\Utilities\Track View Utilities ...
Material - В навигаторе материалов Main Menu\Rendering\Material/Map Browser\ Browser From: New
TextureMap - В навигаторе материалов Main Menu\Rendering\Material/Map Browser\ Browser From: New
RenderEffect - В пост эффектах рендера Main Menu\Rendering\Effects...\Add
Atmospheric - В атмосферных эффектах Main Menu\Rendering\Environment...\Atmosphe\Add

 
Сверху