Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вложенные свойства




Получение и установка свойств

Итак, имея массив свойств параллелепипеда, можно воспользоваться методами getProperty и setProperty для получения и установки его свойств. Синтаксис каждого из этих методов следующий:

getProperty <maxwrapper object> <property_name>

setProperty <maxwrapper object> <property_name> <value>


Объекты и классы

В качестве параметра <property_name> указывается имя свойства, например
#height, или же строка, например "height" (т.е. высота). А в качестве параметра <value> указывается значение, присваиваемое данному свойству.

Для получения и установки свойств объекта выполните следующее упражнение.

1. Введите в приемнике команд следующую строку кода:
getProperty b #height

В приемнике команд появится результат 25,0.

2. Выделите параллелепипед в видовом окне и перейдите к панели Modify.
Убедитесь в том, что высота параллелепипеда действительно составляет
25,0 единиц (это значение устанавливается по умолчанию).

3. Введите следующую строку кода:
setProperty b #height 40

4. Как видите, высота параллелепипеда в видовом окне изменилась и теперь
составляет 40,0 единиц. Эту последнюю строку кода можно было бы написать следующим образом:

b.height = 40.

Последний вариант короче и проще читается. Так в чем же преимущество ме
тодов getProperty и setProperty? Если в коде сценария требуется доступ
только к одному свойству, для этого достаточно такой строки, как b.height
= 40. Но если требуется доступ ко всем свойствам объекта, для этой цели
лучше всего воспользоваться методами getPropNames и setProperty.

Примечание. При установке свойства следует убедиться в том, что
значение последнего аргумента соответствует типу устанавливаемого
свойства. Например, следующая строка кода приводит к ошибке:

setProperty b #height "foo" -- этот код приводит к ошибке

5. Продолжите текущий пример и выведите свойства параллелепипеда и их
значения на печать в приемнике команд, введя следующий фрагмент кода:
boxProps = getPropNames b

for prop in boxProps do format "% = %\n" prop (getProperty b prop)

В окне приемника команд выводятся следующие свойства параллелепипеда
и их значения:

#height = 25.0
#length = 25.0
#lengthsegs = 1
#width = 25.0
#widthsegs = 1
#mapcoords = false
#heightsegs = 1
#realWorldMapSize = false

Дополнительные сведения по данному вопросу приведены вследующем разделе справочного руководства по MAXScript: MAXScript Language Reference ⇨ 3dsMax Objects ⇨ ldentifying and Accessing MAXScript Classes and Properties.


Глава 4

Некоторые свойства имеют собственные свойства. Например, как было показано выше, у свойства.pos имеются дополнительные свойства.x,.y и.z, обозначающие положение объекта по осям X, Y и Z. Эти дополнительные свойства называются вложенными.

Следующая команда возвращает положение объекта по оси X, представленное числом:

<node>.pos.x

Для того чтобы воспользоваться данным свойством, замените <node> экземпляром объекта, как, например, в следующей строке кода: b.pos.x

При этом возвращается положение объекта по оси X.

Следующая команда возвращает применяемый к объекту контроллер управления вращением:

<node>.rotation.controller

Дополнительные сведения по данному вопросу приведены в следующих разделах справочного руководства по MAXScript.

• MAXScript Language Reference ⇨ 3dsMax Objects ⇨ MAXWrapper: Valued Nested Object Properties (Справочник по языку MAXScript ⇨ Объекты 3dsMax Класс MAXWrapper: Значение Вложенные свойства объектов)

• MAXScript Language Referenceo 3dsMax Objects ⇨ Node: MAXWrapper ⇨ Node Common Properties, Operators, and Methods ⇨ Node Transform Properties

(Справочник по языку MAXScript ⇨ Объекты 3dsMax ⇨ Класс Node: MAXWrapper ⇨ Общие свойства, операторы и методы класса Node ⇨ Свойства преобразования узла)

Класс MAXWrapper

Класс MAXWrapper включает в себя все объекты сцены 3dsMax, а также модификаторы, материалы и эффекты. Ниже приведена часть иерархии класса MAXWrapper.

Value

MAXWrapper

Node

Modifier

Atmospheric

Рассмотрим более подробно класс Modifier.

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

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


Объекты и классы

1. Перейдите к разделу MAXScript Language Reference ⇨ 3dsMax Objects ⇨ Modifier: MAXWrapper and Spacewarp Modifier: MAXWrapper ⇨ Modifier and Spacewarp Modifier Types ⇨ Modifiers (Справочник по языку MAXScript Объекты 3dsMax Класс Modifier: Классы MAXWrapper Spacewarp­ Modifier: MAXWrapper ⇨ Типы Modifier и Spacewarp Modifier ⇨ Модификаторы) справочного руководства по MAXScript.

В этом разделе приведены все классы объектов, стоящие ниже класса Modifier.

2. Введите в приемнике команд следующую строку кода:

cyl = cylinder heightsegs:5

 

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

3. Переместите цилиндр в любом видовом окне в сторону от параллелепипеда, чтобы лучше его видеть.

4. Введите следующую строку кода: myMod = bend()

Итак, получен экземпляр модификатора Bend.

5. Введите в приемнике команд следующую строку кода:

addmodifier cyl myMod

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

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

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

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

1. Откройте раздел "Bend: Modifier" (Модификатор Bend) справочного руководства по MAXScript.

Свойства модификатора Bend совпадают с его параметрами, появляющимися в момент применения данного модификатора в сцене 3dsMax.

Экземпляр модификатора Bend, присвоенный переменной myMod, сохраняет свою связь с конкретным модификатором в сцене 3dsMax. Следовательно,


Глава 4

когда изменяются свойства переменной myMod, изменяются также параметры модификатора Bend, применяемого на сцене к цилиндру.

2. Введите в приемнике команд следующую строку кода: myMod.angle = 90

Параметр Angle (Угол сгибания) модификатора Bend, находящегося на сцене, изменяется до 90° и цилиндр сгибается.

Когда модификатор применяется к объекту, а сам модификатор трактуется, как свойство данного объекта. Например, в следующей строке кода устанавливается угол сгибания модификатора Bend:

c.bend.angle = 60




Поделиться с друзьями:


Дата добавления: 2014-10-15; Просмотров: 549; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.