КАТЕГОРИИ: Архитектура-(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. Введите в окне приемника команд следующую строку кода: В этой строке создается ссылка на параллелепипед в стороне от исходного параллелепипеда, находящегося в точке начала отсчета. 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. Введите в окне приемника команд следующий фрагмент кода: 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; Просмотров: 594; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |