
- •Множества
- •Шаблонные группы
- •Свойства
- •Операторы
- •Функции для работы с группами
- •Наборы объектов
- •Конструкторы
- •Свойства
- •Операторы
- •Функции, работающие с наборами
- •Дополнительные сведения
- •Конструкторы
- •Свойства
- •Операторы
- •Прочие функции
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Литералы
- •Свойства
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Конструкторы
- •Свойства
- •Операторы
- •Прочие функции
Функции, работающие с наборами
Функция
clearSelection ( )
снимает со всех выделенных объектов признак выделения. Набор selection после вызова данной функции становится пуст. Чтобы получить все выделенные объекты в виде массива, используется функция
getCurrentSelection ( )
Фактически обращение к ней эквивалентно следующему скрипту
selection as array
но, при большом количестве объектов в сцене, функция работает значительно быстрее.
Дополнительные сведения
Наборы объектов динамичны. При создании пользователем нового примитива, набор geometry расширяется, при работе с выделением объектов изменяется набор selections. Чтобы зафиксировать текущее состояние набора, лучше всего запомнить его в переменной, преобразовав в массив. Например
MyHelpers = helpers as array
Наборы объектов можно использовать при записи шаблонов имен. Например, шаблон
$cameras/c*
выберет все камеры, имена которых начинаются с c.
При работе с наборами камер и источников света следует учитывать тот факт, что нацеленные камеры и источники света включают в себя целевой объект-пустышку. При организации цикла по объектам наборов lights и cameras следует, в случае необходимости, проверять тип объекта с помощью функции isKindOf. Например, скрипт
for obj in lights do if isKindOf obj lights do obj.multiplier * = 1.3
корректно увеличит яркость всех световых источников сцены на 30%.
Массив именованных наборов
Класс Массив именованных наборов (SelectionSetArray) представлен только одним экземпляром – глобальным массивом selectionSets. Он содержит те же наборы элементов, что находятся в выпадающем списке Named Selection Sets инструментальной панели 3ds max
Конструкторы
Получить ссылку на массив именованных наборов можно, поставив в правой части оператора присвоения глобальный массив selectionSets. Например
c = selectionSets
Следует помнить, однако, что изменения, сделанные в массиве с помощью такой ссылки, в полной мере отразятся и на массиве selectionSet, и на списке в инструментальной панели.
Свойства
С помощью свойства
Массив_именованных_наборов.count
можно получить количество имеющихся именованных наборов
Операторы
Для массива именованных наборов определена только операция индексирования.
Массив_именованных_наборов [ Индекс ]
Индексом может быть целое число, начиная с 1, либо имя набора, либо текстовая строка, задающая имя набора. Например
selectionSets[2]
selectionSets[#Set1]
selectionSets[“My named set 2”]
С помощью индексирования можно не только получить именованный набор объектов, но и занести объекты в существующий или создать новый. Например
selectionSets[#Set1] = # ( $Sphere01 , $Sphere02 , $Sphere03 )
Если набор с именем #Set1 уже существует, то он заменяется указанным набором из трех сфер, в противном случае создается новый именованный набор с таким именем.
Методы
Чтобы удалить набор из массива применяется функция
deleteItem Массив_именованных_наборов Имя
Набор с именем, указанным вторым параметром, удаляется из массива. Имя может быть указано обычным образом или в виде строки.
Прочие функции
Функция
getNumNamedSelSets ( )
возвращает текущее количество именованных наборов. Получить имя набора можно с помощью функции
getNamedSelSetName Число
Параметром указывается порядковый номер набора в списке, начиная с единицы. Количество объектов в наборе возвращает функция
getNamedSelSetItemCount Число
Параметр играет ту же роль, что и в предыдущей функции.
Чтобы получить объект, содержащийся в наборе, применяется функция
getNamedSelSetItem Число_1 Число_2
Первый параметр указывает номер набора в списке именованных наборов, второй – номер объекта в наборе.
Именованный набор объектов
Именованный набор объектов (SelectionSet) представляет собой упорядоченное множество объектов сцены. Список имеющихся в сцене наборов доступен через выпадающий список на инструментальной панели, а средствами MAXScript через глобальную переменную selectionSets, описанную в предыдущей главе.
Конструкторы
Именованный набор может быть получен из массива именованных наборов с помощью операции индексирования. Например
selectionSets[3]
selectionSets[#MySet1]
В качестве индекса может применяться число – порядковый номер набора или его имя.
Операторы
Для набора определена только операция индексирования
Именованый_набор [ Число ]
с ее помощью можно получить объект сцены. Число в скобках означает номер объекта в наборе, начиная с единицы.
Свойства
Свойства именованных наборов применяются только для чтения. Свойства
Именованный_набор.center
Именованный_набор.max
Именованный_набор.min
возвращают точку в трехмерном пространстве и представляют собой соответственно координаты центра и крайних точек габаритного контейнера.
Количество объектов в наборе можно получить с помощью свойства
Именованный_набор.count
которое возвращает целое число.
Примеры
Именованные наборы в отличие от обычных наборов (ObjectSet) не могут применяться для построения шаблонов, но действия с наборами, как с одним объектом допускается. Например
move selectionSets[1] [ 1 , 0 , 0 ]
смещает все объекты первого набора на единицу по оси X, а
selectionSets[#MySet].wireColor = red
устанавливает для всех объектов набора с именем MySet красный цвет.
Массивы потомков
Массив потомков (NodeChildrenArray) представляет собой виртуальный массив прямых потомков объекта сцены 3ds max. Массивы потомков картированы.
Конструкторы
Массив потомков для заданного объекта сцены хранится в виртуальном массиве
Объект_сцены.children
Следует отметить, что это не функция, обращение к которой возвращает массив, а именно сам массив, поэтому чтобы получить массив потомков объекта не следует писать после слова children пустых скобок. Например, массив
$Sphere01.children
содержит всех потомков объекта Sphere01
Свойства
Свойства массива потомков предназначены только для чтения.
Массив_потомков.center
возвращает точку в трехмерном пространстве, которая представляет собой координаты центра габаритного контейнера объектов, входящих в массив.
Массив_потомков.min
и
Массив_потомков.max
соответственно крайние точки габаритного контейнера. Количество входящих в массив объектов возвращает свойство
Массив_потомков.count