Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAXScript help rus.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.24 Mб
Скачать

Прямоугольник

Прямоугольник (Box2) представляет собой прямоугольник на плоскости, вершины которого определены в целых координатах. Данный тип данных предоставляет методы для доступа к координатам вершин, масштабирования и перемещения прямоугольников, а также определения нахождения в этом прямоугольнике точки с заданными координатами. Чаще всего прямоугольник применяется при работе с видовыми окнами 3ds max.

Литералы

Литералов для прямоугольника не предусмотрено.

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

Прямоугольник задается координатами левого верхнего углы, высотой и шириной

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

Первое число задает координату X левого верхнего угла, второе Y. Третье число – ширина прямоугольника, четвертое – высота. Кроме этого прямоугольник может быть определен двумя точками в двумерном пространстве.

Box2 Точка_в_2D_пространстве_1 Точка_в_2D_пространстве_2

Первая точка определяет левый верхний угол, вторая – нижний правый.

Свойства

Прямоугольник.x

Прямоугольник.left

возвращает координату X левого верхнего угла

Прямоугольник.y

Прямоугольник.top

координату Y того же угла.

Прямоугольник.right

Прямоугольник.bottom

предоставляет доступ к координатам X и Y правого нижнего угла. Свойства

Прямоугольник.w

Прямоугольник.h

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

Прямоугольник.center

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

Свойство right рассчитывается при создании прямоугольника автоматически как x + w - 1, а bottom как y + h - 1.

Операторы

Для прямоугольников определены только операции сравнения – равенств и неравенство.

Прямоугольник_1 = = Прямоугольник_2

Прямоугольник_1 ! = Прямоугольник_2

Прямоугольники считаются равными только если все их компоненты равны

Методы

Метод копирования для прямоугольника не определен. Функция

scale Прямоугольник Число

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

translate Прямоугольник Точка_в_2D_пространстве

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

contains Прямоугольник Точка_в_2D_пространстве

вернет true, если указанная точка находится внутри или точно на границе прямоугольника. Функция

rectify Прямоугольник

настраивает координаты прямоугольника, чтобы Х левого угла был меньше правого, а Y верхнего меньше нижнего. Прямоугольнику можно присвоить специальное значение – “пустой”. Для этого применяется функция

empty Прямоугольник

Можно проверить, пуст ли прямоугольник. Функция

isEmpty Прямоугольник вернет true, только если указанный прямоугольник пуст.

Время

Переменные, содержащие время, используются в 3ds max для организации анимации. Самая мелкая единица времени в MAXScript – тик, в секунде содержится 4800 тиков.

Литералы

Литералы для обозначения времени описаны в главе о литералах

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

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

Число as time

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

normTime Число

Свойства

Количество времени может быть получено в тиках

Время.ticks

или в кадрах (фреймах)

Время.frame

или как отношение к активному периоду анимации

Время.normalized

Операторы

Для переменных, содержащих время, определены операции сложения и вычитания

Время_1 + Время_2

Время_1 - Время_2

унарный минус

- Время

Время можно умножить или поделить на число

Время * Число

Время / Число

Допускается сравнение переменных, содержащих время.

Время_1 = = Время_2

Время_1 ! = Время_2

Время_1 < Время_2

Время_1 > Время_2

Время_1 <= Время_2

Время_1 >= Время_2

Время может быть преобразовано в число. Результат содержит время в тиках.

Методы

Функция генерации случайного времени

random Время_1 Время_2

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

abs Время

Интервал времени

Данный тип содержит два значения времени – начальное и конечное.

Литералы

Литералы для интервалов времени не предусмотрены

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

Интервал задается обеими содержащимися в нем моментами

interval Время_1 Время_2

первое задает стартовое значение, второе – конечное.

Свойства

Можно получить стартовое значение интервала

Интервал.start

и конечное

Интервал.end

Операции

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

Интервал_1 = = Интервал_2

Интервал_1 ! = Интервал_2

Методы

Для интервалов не предусмотрено методов.

Специальные значения

Undefined

Данное значение присваивается переменным, которые объявлены, но значение им не присвоено. Например, после такого скрипта

local Var

переменная Var будет иметь значение undefined. Это значение можно прямо присвоить переменной, например

Var = undefined

OK

Значение OK может применяться, например, для возврата признака успешного выполнения функции. Кроме того, это значение возвращают некоторые операторы MAXScript

Unsupplied

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

fn MyFun x: = ( print x )

параметр x получит значение unsupplied, если он не будет указан. Скрипт

MyFun ( )

вернет именно это значение. Кроме того, это значение может быть присвоено любой переменной обычным образом.

Var = unsupplied

DontCollect

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

A = for i = 1 to 10 collect if i < 5 then dontCollect else i

в массиве A окажутся числа от пяти до десяти.

Битовая карта

Класс битовая карта или, другими словами, картинка, предоставляет удобный доступ к используемым 3ds max двумерным изображениям, в том числе и многокадровым. Битовые карты могут быть временными, размещенными в памяти, или объектами, ассоциированными с файлами. Ассоциированные с файлами карты имеют непустое свойство .filename. Карты могут быть предназначены либо только для чтения, либо только для записи, но не то и другое одновременно. Вы можете получить карту для чтения с помощью функций openBitmap или selectBitmap. Битовые карты для записи получаются с помощью конструктора bitmap( ) или как результат функций render, copy и getChannelAsMask. Чтобы иметь возможность сохранить полученную карту, необходимо задать имя файла при создании карты, или перед сохранением.

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

Битовую карту можно создать с помощью конструктора

bitmap Целое_число_1 Целое_число_2 fileName:Символьная_строка

numFrames: Целое_число color:Цвет gamma:Вещественное_число

pixelAspect: Вещественное_число

Результатом такого конструктора будет битовая карта только для записи. Первые два параметра обязательны и представляют собой ширину и высоту карты в пикселях. Остальные параметры могут указываться в произвольном порядке или не указываться вообще.

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

Параметр numFrames задает количество кадров при создании многокадровой битовой карты.

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

Параметр gamma устанавливает значение яркости для создаваемой битовой карты.

Параметр pixelAspect задает соотношение горизонтального и вертикального размера пикселя битовой карты. Имейте в виду, что после создания карты Вы не сможете установить новые значения для параметров gamma и pixelAspect. Можно обойти это правило, создав новую карту с нужными Вам значениями этих параметров, и скопировать в нее исходную.

Создать карту, ассоциированную с файлом можно с помощью функции

openBitmap Текстовая_строка

Текстовая строка должна задавать корректное имя файла, содержащего битовую карту. Если названного файла не существует, то генерируется ошибка. Полученная в результате карта предназначена только для чтения. Функция

selectBitmap caption:Текстовая_строка

делает то же самое другим способом. После ее вызова открывается диалог, заголовок которого задан необязательным параметром caption. Если пользователь закрыл диалог, не выбрав файла, то функция возвратит значение undefined. В противном случае результатом будет битовая карта только для чтения, созданная из выбранного файла.

Можно создать копию существующей карты с помощью функции

copy Битовая_карта

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

Свойства

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

Битовая_карта.filename

которое представлено символьной строкой.

Свойство

Битовая_карта.palette

представляет собой палитру – массив из 256 цветов (на текущий момент 3ds max не позволяет работать с палитрами другой размерности). При работе с картами, имеющими палитру, надо соблюдать некоторую осторожность. Дело в том, что описанная ниже функция getIndexedPixels возвращает индексы, начиная с нуля, а массивы в MAXScript индексируются с единицы. В текущей версии 3ds max Вы не можете создать битовую карту, использующую палитру, но можете читать и записывать карты такого типа, хранящиеся в файле.

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

Битовая_карта.frame

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

Количество кадров хранится в свойстве

Битовая_карта.numframes

Высота и ширина битовой карты

Битовая_карта.height

Битовая_карта.width

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

Битовая_карта.gamma

и соотношение высоты и ширины пикселя

Битовая_карта.aspect

Методы

Функция

display Битовая_карта

открывает окно, в которое выводится виртуальный кадровый буфер (Virtual Frame Buffer или VFB). Изменение битовой карты не приводят к автоматическому обновлению информации в VFB. Для этого нужно еще раз вызвать функцию display. Автоматическое обновление информации в VFB происходит при изменении свойства .frame. Поскольку каждая битовая карта имеет свой VFB, обращение к функции display для нескольких карт приводит к открытию такого же количества окон. Закрыть открытое окно можно с помощью функции

undisplay Битовая_карта

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

save Битовая_карта frame:Число

Второй параметр задает номер кадра. Перед сохранением полезно бывает убедиться, что свойство .filename задано корректно. Параметр frame действует по разному в зависимости от типа сохраняемого файла. При записи многокадрового файла (.avi или .mov) он попросту игнорируется. В этом случае в выходной файл записывается следующий кадр при каждом вызове функции save. Вы не сможете записывать данные в произвольно указанный кадр или перезаписывать уже записанный кадр. При сохранении последовательности кадров в файлы (такие как .bmp, .jpg, .tga) номер кадра добавляется к имени файла

Функция save может быть вызвана только для файлов, которые созданы для записи. Попытка сохранить карту только для чтения приведет к ошибке.

Функция

close Битовая_карта

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

Копирование одной битовой карты в другую осуществляется с помощью функции

copy Битовая_карта_1 Битовая_карта_2

Первая карта копируется во вторую. Если размеры исходной карты не равны размерам результирующей, то проводится масштабирование.

Номер текущего кадра устанавливается вызовом функции

gotoFrame Битовая_карта Целое_число

Указанное число задает номер текущего кадра. Данный метод может вызываться для карт, предназначенных только для чтения. Если VFB для указанной карты открыт, то он обновляется.

Для получения цвета пикселей карты используется функция

getPixels Битовая_карта Точка_в_2D_пространстве Число

Результатом вызова этой функции будет массив цветовых значений из строки битовой карты. Второй параметр задает точку карты, начиная с которой выдаются пиксели. При этом координата X точки задает номер колонки, а Y – строки. Начало координат расположено в левом верхнем углу карты и имеет координаты [ 0 , 0 ]. Третий параметр задает количество пикселей. Следует отметить, что пиксели читаются только из одной строки, поэтому следует следить за тем, чтобы координаты начальной точки и количество пикселей были согласованы между собой.

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