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

Литералы

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

Числовые литералы

MAXScript поддерживает два типа числовых данных – с плавающей точкой, называемые еще вещественными, и целые 32-х битовые. Целые могут быть записаны в десятичной или в шестнадцатеричной форме. Например

0.128

2.56

-0.03

0.2e-8

вещественные числа, а

123

-5

0x12E

целые. Последнее число записано в шестнадцатеричной системе счисления. В этом случае ему предшествует два символа – ноль и малое икс.

Строковые литералы

Строковые литералы используются для записи символьных строк и окружаются двойными кавычками. Например:

“I can’t speak English”

строковый литерал

Для записи в строковом литерале некоторых управляющих символов или тех же двойных кавычек применяется знак обратного слеша - \

\” – двойные кавычки

\n – переход на новую строку

\r – возврат каретки

\t – знак табуляции

\? – вопросительный знак

\* - звездочка

\\ - обратный слеш

\% - знак процента

Чтобы ввести в строковый литерал символ, которого нет на клавиатуре, можно использовать последнее стандартное сочетание с обратным слешем.

\x<две шестнадцатеричные цифры>

Например

text = “Copyright \xA9 2002, Petrov & Co”

вставляет в текст символ ©, шестнадцатеричный код которого – A9. Поскольку в именах файлов часто используются знаки обратного слеша, в MAXScript принято записывать их примерно так

path = “c:\\3dsmax4\\meshes”

хотя допускается заменять два обратных слеша на один прямой и записать тот же литерал так

path = “c:/3dsmax4/meshes”

Литералы времени

Работая с анимацией, трудно обойтись без времени. В MAXScript время измеряется в минутах, секундах, фреймах и тиках (tick). В одной секунде 4800 тиков или тридцать фреймов. Возможны два формата записи времени. Первый может выглядеть примерно так

2.8s – две и восемь десятых секунды

3m5s2f4t – три минуты, пять секунд, два фрейма, четыре тика

73f – семьдесят три фрейма

Второй пишется так – сначала минуты, через двоеточие секунды, через точку фреймы. Тики в такой записи не указываются. Например

2:6.28 – то же самое, что 2m6s28f

0:0.73 – то же самое, что 73f

Литералы имен объектов

Поскольку MAXScript предназначен для работы с объектами, составляющими сцену, логично иметь возможность работы с именами этих объектов и, соответственно, иметь литералы, обозначающие имена объектов. Для этого записывается имя объекта, то самое, которое появляется в списке при выборе объекта в 3ds max, а к нему слева приписывается знак $. Например

$box01

Поскольку объекты часто объединяются в иерархии, для их обозначения применяются такие литералы

$man/torso/hand

то есть данным литералом поименован объект hand, который является дочерним по отношению к объекту torso, который в свою очередь происходит от объекта man.

С помощью литералов имен объектов можно выбрать и целую группу объектов с похожими именами. Для этого используются символы * и ?. Например литерал

$box*

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

$*box*

именует все объекты, в имени которых сочетание букв box находится в любом месте имени. Очень удобно использовать символ * при работе с иерархиями объектов. Например, литерал

$man/*

выберет всех прямых потомков объекта man.

Если Вам надо выбрать не только прямых, но всех прочих потомков какого-либо объекта на всех уровнях иерархии, то для этого используют такую запись

$man/…/*

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

$man…*

При этом если надо найти всех потомков, чьи имена начинаются, например, на букву h, то можно написать

$man…h*

Разница между символами * и ? следующая. Если символ * заменяет любую группу символов, то ? любой одиночный символ. Представим себе сцену, в которой содержатся три объекта: box1, box2 и box16. В этом случае скрипт

hide box*

скроет все объекты сцены, а

hide box?

только box1 и box2.

кроме того, существует и один специальный литерал - $. Он означает все выбранные объекты сцены. Например

hide $

скроет все выбранные в данный момент объекты. Однако эту возможность следует использовать с осторожностью, так как в случае, если в сцене нет выбранных объектов, такой скрипт выдаст ошибку. Для работы с выделенными объектами лучше использовать переменную selection. Например

hide selection

выполнит ту же самую работу аккуратнее.

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

$’Snow man’

При этом в число символов, защищаемых кавычками, не входят * и ?. Поэтому если Вы хотите именовать объекты, в имени которых содержатся эти символы, используйте обратный слеш. Например, имя объекта konjak*** запишется так

$’konjak\*\*\*’

Символ пробела, защищаемый кавычками, может быть заменен символом подчеркивания “_”. Например, приведенные ниже литералы обозначают имя одного и того же объекта

$’Snow Man’

$Snow_Man

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