
- •Теория maxScript Оглавление
- •Часть 1 2
- •Часть 1
- •Окно maxScript Listener
- •Окно maxScript Editor
- •Синтаксис
- •Управляющие конструкции
- •Пропуск проходов и принудительный выход из циклов
- •Часть 2 Функции
- •Объекты и классы в объектно-ориентированном программировании
- •Определения
- •Операции со строками
- •Операции с массивами
- •Команды 3ds max в maxScript
- •Часть 3 Создание свитков
- •События
- •Элементы интерфейса
- •Радиокнопки
- •Спиннер
- •Часть 4 Сплайны
- •Класс SplineShape
- •Методы, работающие с целым объектом Shape
- •Методы, работающие со сплайнами объекта Shape
- •Методы, работающие с сегментами сплайнов объекта Shape
- •Методы, работающие с вершинами сплайнов объекта Shape
- •Часть 5 Простейшие диалоговые окна
- •If queryBox “Хотите продолжить?” beep:false then ... Некоторые из методов работы с объектами
- •Характерные точки объектов
- •Системы координат
- •Координатные сетки
- •Определение угла между двумя векторами
- •Представление ориентации при помощи кватернионов (quaternions)
- •Создание вспомогательных объектов-пустышек Dummy
- •Изменение общих параметров анимации
- •Анимация вершин сплайнов
- •Примеры контроллеров анимации path constraint и link constraint
- •Методы print и format
Синтаксис
Если строка длинная, ее можно разбить. Исходная строка: a + b * c / d – e + f * g / h
Можно разбить только после любого оператора. MAXScript будет искать продолжение на следующей строке.
Так работает: a + b * c / d – e + А так не работает: a + b * c / d – e
f * g / h + f * g / h
Можно разбить, добавив символ “\”: a + b * c / d – e \
+ f * g / h
Несколько выражений можно записать в одной строке, разделив их символом “;”:
print “End of input data reached” to: f; close f; f = undefined
Комментарий первого типа в MAXScript начинается с символов “--” и распространяется до конца строки: a = 5 -- В переменную а записано число 5
/* Комментарий второго типа
может располагаться
на нескольких строках*/
Целые (integer) и вещественные (float) числа
При выполнении простейших математических операций результат, как правило, имеет тот же тип, что и аргументы: 3 + 4 возвращает 7, 3.0 + 4.0 возвращает 7.0. Однако, если совместно используется оба типа чисел, целое понимается как вещественное: 3 + 4.0 возвращает 7.0
Переменные
variable_name = variable_value -- присвоение переменной значения
variable_name = “Текст” -- строковая переменная
local y = 2, x -- объявление локальных переменных (действуют в текущем блоке)
global bzzz -- объявление глобальных переменных (действуют всю сессию 3ds max)
Имя переменной должно начинаться с буквы или символа “_”. Ее значение – любое число, строка или выражение.
Массивы
В массиве может содержаться любое количество элементов, каждый любого типа.
a = #( ) -- пустой массив
a = #(5, “four”, pi, 11.17) -- массив с элементами
a[int] -- элемент массива, int - номер элемента (целое число, нумерация с 1)
Например: a[2] возвращает “four”
Простейшие математические операторы и выражения
С числами
4/3 * pi * 2.5^3 -- формула объема сферы радиусом 2.5. Возвращает 49.0874
3 as string -- возвращает “3”
Со строками
a = “MAXScript”; b = “ FOREVER”
a + b -- возвращает “ MAXScript FOREVER”
“3” as float -- возвращает 3.0
“3.56” as integer -- возвращает 3
Создание случайных чисел
Тип числа зависит от типа первого аргумента в операторе random
random 1 100 -- возвращает случайное целое число между 1 и 100
random 1.0 100 -- возвращает случайное вещественное число между 1 и 100
Числа будут одинаковыми всякий раз при перезагрузке 3ds max. Чтобы избежать этого, можно использовать операторseed <number>, где <number> это любое целое или вещественное число. Пример: seed 5
Приращения
<переменная> += <выражение> добавляет <выражение> к переменной
<переменная> -= <выражение> вычитает <выражение> из переменной
<переменная> *= <выражение> умножает переменную на <выражение>
<переменная> /= <выражение> делит переменную на <выражение>
Поэтому запись x = x + 1 равносильна записи x += 1
Операторы сравнения
<compare_operand> == <compare_operand> оба операнда равны
<compare_operand> != <compare_operand> оба операнда не равны
<compare_operand> < <compare_operand> левый операнд меньше правого
<compare_operand> <= <compare_operand> левый меньше или равен правому
<compare_operand> > <compare_operand> левый операнд больше правого
<compare_operand> >= <compare_operand> левый больше или равен правому
Логические операторы
<logical_operand> and <logical_operand> истина, если истинны оба
<logical_operand> or <logical_operand> истина, если истинен хотя бы один
not <logical_operand> истина, если операнд ложен