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

Функция

setPixels Битовая_карта Точка_в_2D_пространстве Массив_цветов

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

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

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

и

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

Массив_чисел

Они действуют полностью аналогично, но используют не массив цветов, а массив индексов цветов. Цвета при этом хранятся в свойстве .palette, которое описано выше.

Методы для работы с g-буфером

Функция

getChannel Битовая_карта Точка_в_2D_пространстве Имя_канала

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

Типы данных в возвращаемом массиве определяются выбранным каналом и перечислены в таблице.

Имя канала

Тип данных

#ZDepth

вещественное число

#matID

целое число

#objectID

целое число

#UVCoords

точка в 2D пространстве

#normal

точка в 3D пространстве

#unClamped

цвет

#coverage

вещественное число

#node

объект 3ds max

#shaderColor

цвет

#shaderTransparency

цвет

#velocity

точка в 2D пространстве

#weight

цвет

Подробное описание работы с каналами g-буфера будет приведено далее.

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

Вспомогательные методы Функция

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

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

silentMode ( )

Эта функция не имеет параметров и возвращает текущее значение режима умолчания.

Функция

selectSaveBitmap caption:Символьная_строка

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

Функция

freeSceneBitmap ( )

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

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

getBitmapOpenFileName caption:Символьная_строка_1

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

getBitmapSaveFileName caption:Символьная_строка_1

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

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

Примеры

Первый пример показывает, как с помощью MAXScript записать анимационный файл

T = teapot ( ) -- Создадим чайник, чтобы было что анимировать.

animate on at time 10 \ -- Установим контекст анимации и времени

rotate T 180 z_axis -- и повернем чайник.

b = bitmap 160 120 filename:"c:\\t.avi" -- Создадим битовую карту

for i =1 to 10 do -- Организуем цикл по кадрам

( at time i -- Устанавливаем временной

-- контекст,

render 160 120 to:b -- выводим результат в

-- битовую карту,

save b -- и сохраняем ее.

) -- Если сохранить ПОСЛЕ цикла,

-- запишется только последний кадр.

close b -- Закроем выходной файл. Это так же

-- освободит ссылку на битовую карту

-- и занимаемую ей память.

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

(

b = selectbitmap ( ) -- Откроем исходный файл

bname="bitmap_"+(getfilenamefile b.filename) -- Определим имя функции

w=b.width -- Определим высоту и ширину картинки

h=b.height

format "----------\nfn load_% = (\n" bname -- Определение функции

format "local % = bitmap % %\n" bname w h -- Создание карты в

--функции

-- запись функции, распаковывающей данные о пикселях

format "fn unpack val = for p in val collect (r = p/256^2; g = p/256-r*256; b = mod p 256; color r g b)\n"

for r = 0 to h-1 do -- Для каждой строки карты

-- получим функцию для записи колонок карты

( format "setpixels % [0,%] (unpack #(" bname r

pixels=getpixels b [0,r] w -- чтение колонки карты

for c=1 to w do -- цикл по пикселям

( p=pixels[c] -- получим пиксель

-- Упакуем цветовые данные в целое число

format "%" (((p.r as integer)*256+(p.g as integer))*256+(p.b as integer))

if c != w then -- Если пиксель не последний

format ", " -- поставим запятую

else

format "))\n" -- иначе перейдем на новую строку

)

)

format "return %\n" bname -- возврат битовой карты

format ")\n----------\n" -- завершение функции

)

Потоки

Файловый поток

Класс файловый поток предоставляет средства для ввода и вывода в текстовый файл.

Литералы

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

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

Функция

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

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

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

Первая строка – имя открываемого файла, вторая – необязательный именованный параметр, означающий режим открытия. Второй параметр может принимать одно из двух значений. “a” означает открытие для добавления записей в файл, “r” – открытие только для чтения.

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