Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAXScript Part 4.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
197 Кб
Скачать
☆

Литералы

Числовые константы записываются в тексте программы следующим образом. Целое число чаще всего записывается в обычном, десятичном представлении. Например

125

-80

Шестнадцатеричная форма записи целого числа должна начинаться с символов 0x (ноль и икс)

0x0FF

0x2ACD

Вещественное число записывается так же достаточно стандартно

54.321

-0.0077

Допускается и экспоненциальная форма записи

4.2e-6

Если целая часть числа равна нулю, ее можно не записывать

-.123

.56

Операторы

К числам применяются стандартные математические операции

Число + Число

Число - Число

Число / Число

Число * Число

Если оба числа целые, то результат так же будет целым. Если хотя бы один из операндов – вещественное число, то результатом будет вещественное число.

Возведение в степень записывается так

Число ^ Число

Если первый операнд – целое число, то результат будет целым, независимо от показателя степени.

Унарный минус обращает знак числа

- Число

Для чисел определены все возможные операции сравнения

Число = = Число

Число ! = Число

Число > Число

Число < Число

Число >= Число

Число <= Число

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

23 as float

125.89 as integer

64 as time

17.3e-5 as string

Методы

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

Копирование числа

copy Число

Создает копию указанного числа. Самостоятельно практически не применяется. Неявно используется при копировании массивов.

Абсолютное значение числа

abs Число

Остаток от деления

mod Число_1 Число_2

возвращает остаток от деления первого числа на второе. Результат – всегда вещественное число.

Округление по избытку

ceil Число

возвращает вещественное число с нулевой дробной частью, большее или равное указанному.

Округление по недостатку

floor Число

возвращает вещественное число с нулевой дробной частью, меньшее или равное указанному.

Стандартные тригонометрические функции

sin Число – синус

cos Число – косинус

tan Число – тангенс

asin Число – арксинус

acos Число – арккосинус

atan Число – арктангенс

atan2 Число_1 Число_2 – арктангенс первого числа, поделенного на второе

sinh Число – синус гиперболический

cosh Число – косинус гиперболический

tanh Число – тангенс гиперболический

Углы всегда задаются в градусах, возвращаемый результат – вещественное число.

Стандартные трансцендентные функции

exp Число – экспонента

log Число – натуральный логарифм

log10 Число – десятичный логарифм

pow Число_1 Число_2 – возводит первое число в степень, показатель которой – второе число. Отличается от стандартной операции возведения в степень тем, что даже если основание будет целым числом, результат окажется вещественным

sqrt Число – квадратный корень из числа

Все функции, разумеется, возвращают вещественный результат.

Генератор случайных чисел

random Число_1 Число_2

возвращает случайное число в диапазоне от первого до второго числа.

Реинициализация генератора случайных чисел

seed Число

Устанавливает генератор случайных чисел в некоторое состояние, определяемое указанным числом. Если Вам надо несколько раз повторить одну и ту же серию случайных чисел, то перед каждой генерацией вызывайте эту функцию с одним и тем же числом.

Перевод радиан в градусы

radToDeg Число

и обратно

degToRad Число

результат всегда вещественный.

Имеется богатый набор функций для работы с битами целых чисел.

bit.and Целое_число_1 Целое_число_1

выполняет побитовое логическое и над двумя целыми числами.

bit.or Целое_число_1 Целое_число_1

выполняет побитовое логическое или над двумя целыми числами.

bit.xor Целое_число_1 Целое_число_1

выполняет побитовое логическое исключающее или над двумя целыми числами.

bit.not Целое_число

обращает биты целого числа.

bit.shift Целое_число_1 Целое_число_2

Сдвигает биты первого число на количество разрядов, заданное вторым числом. Положительное второе число соответствует сдвигу влево, отрицательное – вправо. Знаковый бит при сдвиге не распространяется.

bit.set Целое_число_1 Целое_число_2 Логическое значение

Устанавливает значение бита первого числа, номер которого задан вторым числом в ноль, если логическое значение – false, и в единицу если true. Младший бит считается первым, а не нулевым.

bit.flip Целое_число_1 Целое_число_2

Обращает значение бита первого числа, номер которого задан вторым. Младший бит считается первым.

bit.get Целое_число_1 Целое_число_2

Возвращает true, если бит первого числа, номер которого задан вторым числом, имеет значение 1, и false в противном случае. Младший бит считается первым.

bit.intAsChar Целое_число

Возвращает символьную строку из одного символа, код которого задан указанным числом. Учитывается только младшие 8 бит числа (для локализованных версий 3ds max – 16 бит)

bit.charAsInt Символьная_строка

Возвращает код первого символа строки.

bit.intAsHex Целое_число

Возвращает символьную строку, представляющую указанное число в шестнадцатеричном виде.

Минимально возможное целое число – -2147483648, максимально возможное – 2147483648. При выходе за эти значения будет сгенерирована ошибка. Вещественные числа в MAXScript находятся в диапазоне от 1.18E-38 до 3.4E38. При получении меньшего результата получится ноль, при получении большего – специальное значение 1.#INF (бесконечность). Сложение, вычитание или умножение любого числа на бесконечность даст бесконечность. Деление числа на бесконечность даст ноль. Деление нуля на ноль, бесконечности на бесконечность или умножение бесконечности на ноль или на бесконечность возвращает специальное значение -1.#IND (неопределенность). Любые действия числа с неопределенностью дают неопределенность.

Символьные строки

Символьная строка в MAXScript представляют собой последовательность символов произвольной длины

Литералы

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

Конструкторы

Строка может быть получена из любого значения MAXScript с помощью операции преобразования типа.

Value as string

Операторы

Наиболее употребительным при работе со строками является оператор сложения

Символьная_строка_1 + Символьная_строка_2

результатом будет символьная строка, образованная слиянием двух строк. Для строк так же определены операции сравнения

Символьная_строка_1 = = Символьная_строка_2

Символьная_строка_1 ! = Символьная_строка_2

Символьная_строка_1 > Символьная_строка_2

Символьная_строка_1 < Символьная_строка_2

Символьная_строка_1 >= Символьная_строка_2

Символьная_строка_1 <= Символьная_строка_2

Сравнение осуществляется в алфавитном порядке, то есть строка “A” считается меньше строки “B”. Большие и малые буквы РАЗЛИЧАЮТСЯ, то есть строка “A” не равна “a”.

Прочитать или записать символ, стоящий в указанной позиции строки можно с помощью операции индексирования

Символьная_строка [ Целое_число ]

например

S = “ABCDEF”

S [ 5 ]

Вторая строка приведенного скрипта вернет пятую букву строки, то есть “E”. Нумерация символов строки начинается с единицы.

Символьная строка с помощью операции преобразования типов может быть в имя, целое или вещественное число или строковый поток.

Символьная_строка as name

Символьная_строка as float

Символьная_строка as integer

Символьная_строка as stringstream

Методы

Функция копирования

copy Символьная_строка

создает новый экземпляр строки.

Для символьной строки в MAXScript существует оригинальная функция

execute Символьная_строка

Она выполняет указанную строку так, как будто это строка программы, написанной на MAXScript. Этот метод позволяет формировать текст программы во время ее выполнения. При этом следует иметь в виду, что выполнение текстовой строки с помощью метода execute происходит в глобальной области видимости. Например

y=5

( local y=7

execute "print y"

print y

)

Выполнение функции execute приведет к выводу значения глобальной переменной y, то есть 5, а следующий за ней оператор print выведет локальную y, то есть 7.

При организации интерфейса бывает нужно определить размеры строки на экране. Функция

GetTextExtent Символьная_строка

возвращает точку в двумерном пространстве. Координата X возвращаемой точки содержит ширину строки в пикселях, а Y – высоту.

Функция

filterString Символьная_строка_1 Символьная_строка_2

часто применяется для импорта файлов в 3ds max. Она разбирает первую символьную строку на элементы, разделенные символами, содержащимися во второй строке. Результат возвращается в массиве строк. Например, результатом скрипта

filterstring "x=5,y=7.0,z=128.3,u=0.5,v=2.3" ",="

Будет следующий массив символьных строк #("x", "5", "y", "7.0", "z", "128.3", "u", "0.5", "v", "2.3")

Если надо заменить часть некой строки другой строкой, то для этого применяется функция

replace Символьная_строка_1 Число_1 Число_2 Символьная_строка_2

Она заменяет символы первой строки, начиная со стоящего в позиции, заданной первым числом, на вторую строку. Количество заменяемых символов определяется вторым числом. Например, результатом выражения

replace “123456789” 2 4 “abcdefjh”

будет символьная строка “1abcdefjh6789”

Выделение подстроки осуществляется с помощью функции

substring Символьная_строка Число_1 Число_2

Первое число означает позицию, с которой начинается подстрока, а второе – количество символов подстроки. Если количество символов отрицательно, или больше числа символов в исходной строке, то подстрока выделяется до конца строки. Например, выражение

substring “abcdefjh” 3 4

вернет строку “cdef”, а

substring “abcdefjh” 3 -1

или

substring “abcdefjh” 3 100

строку “cdefjh”

Последний метод, определенный для строк

matchPattern Символьная_строка_1 pattern:Символьная_строка_2

ignoreCase:Логическое_выражение

применяется для проверки нахождения подстроки в строке. Третий параметр не обязателен, и по умолчанию равен true. Эта функция возвращает true, если подстрока, определенная вторым параметром (pattern) имеется в строке, заданной первым параметром. Во втором параметре можно использовать служебные символы * и ? которые используются так же, как в именах объектов. Например

s = "x=12.67,y=2.5,z=3.7"

matchPattern s pattern:"x=*,y=*,z=*"

Вторая строка приведенного скрипта вернет значение true. При обращении к этой функции большие и малые буквы не различаются. Чтобы они различались, необходимо указать третий параметр равным false. Например

s = “Му string”

matchPattern s pattern:“my*”

matchPattern s pattern:“my*” ignoreCase:false

вторая строка приведенного скрипта вернет true, а третья – false.

Имена

Чаще всего этот тип данных используется для передачи функции параметра, который может находиться в одном из некоторых фиксированных значений. Например, если надо предать функции одно из четырех возможных направлений – вправо, влево, вверх или вниз.

Литералы

Имя в скрипте записывается так

#Имя

Например

#Left

#Right

#Up

#Down

Конструкторы

Имя может быть получено из символьной строки с помощью оператора преобразования типа

Символьная_строка as name

Например

“MyName” as name

вернет значение #MyName.

Операторы

Для имен определены все возможные операции сравнения

Имя_1 = = Имя_2

Имя_1 ! = Имя_2

Имя_1 > Имя_2

Имя_1 < Имя_2

Имя_1 > = Имя_2

Имя_1 < = Имя_2

Равенство и неравенство проверяются естественным образом, остальное сравнение производится в алфавитном порядке, то есть #A меньше #B. При этом большие и малые буквы считаются одинаковыми.

Свойства

Имена свойств не имеют

Методы

Имена методов не имеют

Логические (Булевы) значения

Логические значения используются, главным образом, для ветвления программы. В MAXSript, как и в других языках, логическое выражение может иметь два значения – true и false.

Литералы

Логические константы записываются просто

true

false

либо, что то же самое

on

off

Конструкторы

Конструкторов для логических значений не предусмотрено

Операторы

Для логических значений могут применяться операторы сравнения – равенство

Логическое_выражение_1 = = Логическое_выражение_2

и неравенство

Логическое_выражение_1 ! = Логическое_выражение_2

однако практического применения они не имеют. Гораздо чаще применяются логические операторы

not Логическое_выражение

Если логическое выражение равно true, то возвращается false, и наоборот.

Логическое_выражение_1 or Логическое_выражение_2

Возвращает true, если хоть одно или оба выражения имеет значение true, в противном случае – false.

Логическое выражение_2 and Логическое_выражение_2

Возвращает true, только если оба выражения имеют значение true, в противном случае – false.

Свойства

Свойств логические значения не имеют

Методы

Методов логические значения не имеют

Цвета

Цвета широко применяются в MAXScript для работы с материалами или с цветом геометрических объектов.

Литералы

Для обозначения наиболее употребительных цветов в MAXScript введены специальные константы

red -- красный

green -- зеленый

blue -- синий

white -- белый

black -- черный

orange -- оранжевый

yellow -- желтый

brown -- коричневый

gray -- серый

Конструкторы

Цвет может быть создан указанием красной, зеленой и синей компоненты, и компоненты прозрачности. Последняя может не указываться, в этом случае она устанавливается равной 255.

color Число_1 Число_2 Число_3 Число_4

Первое число указывает красную составляющую, второе зеленую, третье синюю, четвертое, необязательное, прозрачность. Кроме того, с помощью оператора преобразования типа можно создать цвет из точки в трехмерном пространстве.

Точка_в_3D_пространстве as color

При этом координата X точки трактуется как красная составляющая, координата Y как зеленая, Z как синяя, прозрачность устанавливается в 255.

Следует отметить, что нормально значение компонент может находиться в диапазоне от нуля до двухсот пятидесяти пяти. Выход из этого диапазона к ошибке не приводит, но при отображении такого цвета в сцене, 3ds max сам приводит его к нужному диапазону. Алгоритм приведения в руководстве не указан, однако результаты экспериментов позволяют предположить, что значение компоненты преобразуется к целому числу со знаком, после чего в качестве значения компоненты используется его младший байт.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]