Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Клонирование узлов с помощью функции maxOps.CloneNodes




Ссылка

Синтаксис команды получения ссылки следующий: reference <узел>

Продолжите в следующем упражнении работу над предыдущим примером, создав на этот раз ссылку на объект.

1. Введите в окне приемника команд следующую строку кода:
r = reference b pos: [0,-25,0]

В этой строке создается ссылка на параллелепипед в стороне от исходного параллелепипеда, находящегося в точке начала отсчета.

2. Введите следующую строку кода: addmodifier r (bend())

Как видите, параллелепипед r теперь содержит модификатор Bend, который отсутствует у параллелепипеда b. Ссылочный параллелепипед r можно рассматривать в качестве порожденного объекта по отношению к исходному


Глава 3

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

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

Изменения в модификаторе Bend не оказывают никакого влияния на параллелепипед b, поскольку у этого объекта модификатор Bend отсутствует.

4. Введите следующую строку кода: b.height = 40.0

Как видите, изменения распространяются на оба параллелепипеда. Это классический пример поведения ссылочного объекта.

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

maxOps.CloneNodes <массив узлов> clonetype: <enum> newNodes: <&массив узлов> actualNodeList: <&массив узлов> offset: <point3>...

Данная функция возвращает логическое значение true при успешном выполнении и логическое значение false при неудачном выполнении.

Примечание. У функции maxOps.CloneNodes имеется больше параметров, чем перечислено выше. Для простоты здесь рассматривается лишь часть ее параметров.

Ниже приведены некоторые параметры функции maxOps.CloneNodes.

• <массив узлов> — это массив клонируемых узлов. Но если функции передается единственный объект, она обнаружит этот факт и автоматически свернет объект в массив.

• clonetype: <enum> — этот параметр может принимать одно из трех следующих значений: #copy (копия), #instance (экземпляр) или #reference (ссылка), а по умолчанию — #copy.

• newNodes: <&массив узлов> — этот массив узлов будет заполнен вновь клонированными узлами.

• actualNodeList: <&массив узлов> — в качестве этого необязательно­го параметра передается пустой массив, который будет заполнен конкретными


Интерфейс 3dsMax

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

• offset: <point3> — этот параметр перемещает новый узел по указанному вектору типа Point3. Он может быть использован для установления различий между вновь клонированными и старыми узлами.

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

1. Установите 3dsMax в исходное состояние и откройте окно приемника команд MAXScript Listener.

2. Создайте один нацеленный прожектор в сцене 3dsMax.

3. Выделите этот источник света. Только не выделяйте его цель.

4. Введите в окне приемника команд следующий фрагмент кода:
a = $

c = copy a

move c [0,25,0]

В итоге будет получена копия источника света, которая имеет общую с оригиналом цель. А для клонирования цели следует использовать функцию maxOps.CloneNodes.

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

maxops.CloneNodes a actualNodeList: &ANL clonetype: #copy \

offset: [-25,-25, 0] newNodes: &NN

В итоге будет создан новый источник света с собственной целью.

6. Введите следующую строку кода: printANL

В этой строке на печать выводятся два объекта: источник света и его цель. В данном случае функции maxops.CloneNodes передан в качестве аргумента один источник света, а также адрес неинициализированного массива &ANL в качестве параметра actualNodeList. Функция заполнила массив старым источником света и старой целью источника света. Массив ANL, в общем, полезен лишь для проверки.

7. Введите следующую строку кода: selectNN

В сцене выделяются новый источник света и его цель. Кроме того, функции maxOps.CloneNodes в качестве параметра newNodes передан адрес не­инициализированного массива &NN. А функция заполнила этот массив новым источником света и новой целью источника света. После вызова данной функции появляется возможность манипулировать новым узлом в массиве, как обычно.


Глава 3

Дополнительные сведения о применении функции maxOps.CloneNodes приведены в следующем разделе справочного руководства по MAXScript: MAXScript Language Reference ⇨ 3dsMax Objects ⇨ Interfaces ⇨ CoreInterfaces ⇨ Core Interfaces Pages ⇨ Interface: MaxOps (Справочник по языку MAXScript ⇨ Объекты 3dsMax ⇨ Интерфейсы ⇨ Базовые интерфейсы Страницы базовых интерфейсов ⇨ Интерфейс: maxOps).




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


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


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



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




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