Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Общие свойства класса MaxWrapper

Читайте также:
  1. A. электроноакцепторными свойствами атома азота
  2. Celebrity Reflection – новейший лайнер класса Премиум
  3. I. ОБЩИЕ ПОЛОЖЕНИЯ
  4. I.Общие сведения
  5. II. ОБЩИЕ ПОЛОЖЕНИЯ
  6. III. Общие правила внесения сведений в Реестр
  7. IV ПОЛЕЗНЫЕ СВОЙСТВА ПРОДУКТОВ

Любой объект, класс которого ведет свое происхождение от MaxWrapper, наследует от него следующие свойства

MaxWrapper_объект. category

с помощью обращения к этому свойству можно получить имя категории объекта. Например, для сферы это свойство содержит имя #Standard_Primitives, а для лофт-объекта – #Compound_Objects. Для модификаторов имена категорий имеют вид #MAX_STANDARD, #MAX_EDIT, или #MAX_SURFACE, для текстур #2D, #3D или #COMP и т.д.

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

MaxWrapper_объект. classID

Например, у любой сферы это свойство содержит значение #(17, 0).

Наследники класса MaxWrapper получают от него не только свойства, но и методы. Наиболее часто применяется неоднократно упоминаемый раньше метод copy. Он был довольно подробно рассмотрен, поэтому перейдем к методу

exprForMaxObject MaxWrapper_объект

этот метод возвращает полное имя объекта в виде текстовой строки. Для примера рассмотрим следующий скрипт

b1 = box ()

exprForMaxObject b1

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

bm = Bend ()

скрипт

exprForMaxObject bm

вернет значение "unknown". Дело в том, что сам по себе модификатор не является элементом сцены, а следовательно, не имеет имени. Положение в корне изменится, когда мы применим модификатор к ранее созданному объекту

addmodifier b1 bm

exprForMaxObject bm

Теперь модификатор имеет имя " $Box01.modifiers[#Bend] "

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

createInstance Класс

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

s = createInstance Sphere

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

b = createInstance Box length:10 height:40 width:20

создается параллелепипед с заданными значениями длинны, высоты и ширины.

Рассмотрим так же еще одну полезную функцию, работающую с потомками класса MaxWrapper

refs.dependents MaxWrapper_объект

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

s = sphere ()

m = standard ()

s.material = m

после этого скрипт

refs.dependents m

выдаст следующий результат: #($Sphere:Sphere01 @ [0.000000,0.000000,0.000000]). Тем самым демонстрируется, что на материал m ссылается сфера Sphere01. Если бы тот же материал был назначен и другим объектам, то имена этих объектов так же оказались бы в выходном массиве.

Еще одним полезным свойством объектов, потомков MaxWrapper, является возможность ассоциировать с любым объектом произвольную информацию. Эта информация сохраняется в файле сцены и восстанавливается при его загрузке. Создать ее можно с помощью функции

setAppData MaxWrapper_объект Целое_число Символьная_строка

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

getAppData MaxWrapper_объект Целое_число

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

deleteAppData MaxWrapper_объект Целое_число

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

clearAllAppData MaxWrapper_объект

 

Класс Node

Этот класс, будучи опять-таки абстрактным, является потомком класса MAXWrapper. От него происходят классы, объекты которых могут быть узлами иерархий объектов. Например, НЕ являются его потомками материалы, контроллеры, текстуры и т.д. А вот геометрические примитивы, источники света, камеры – суть потомки класса Node.

 


Дата добавления: 2015-10-31; просмотров: 61 | Нарушение авторских прав


Читайте в этой же книге: Макро скрипты | Правила оформления средств работы с мышью | Скрипт плугины | Правила построения скрипт-плугина | Определение параметра | Функции, применяемые при разработке скрипт плугинов | Внесение изменений в плугин | Скрипт плугины класса SimpleObject | Скрипт плугины класса SimpleMod | Скрипт плугины класса RenderEffect |
<== предыдущая страница | следующая страница ==>
Объекты 3ds max| Общие свойства и методы потомков класса Node

mybiblioteka.su - 2015-2024 год. (0.006 сек.)