Студопедия

КАТЕГОРИИ:


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

Система публикации функций и интерфейсы





Подключаемые модули 3dsMax позволяют создавать новые типы объектов. Одни подключаемые модули входят в стандартный комплект 3dsMax, а другие разрабатываются независимыми производителями с помощью набора инструментальных средств разработки программ (SDK — Software Developer Kit). Аналогично остальным типам объектов такие объекты обладают рядом свойств и методов. Система публикации функций (FPS — Function Publishing System) предоставляет средства для запроса подобных объектов в MAXScript с целью определить их свойства, методы и связанные с интерфейсоми действия.


Приложение

Система публикации функций была разработана и внедрена в версии 3dsMax 4, С тех пор все свойства и методы для новых и уже имеющихся объектов MAXScript публикуются с помощью данной системы, а не встраиваются непосредственно в объекты,

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

getInterfaces <объект>

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

showInterface <объект>.<интерфейс>

Эта команда сродни функции showProperties. Если функция showProperties выводит свойства, встроенные в объект, то команда showInterface выводит свойства, методы и действия, введенные в объекты, существующие с версии 3dsMax 4, или же в новые объекты, созданные с помощью подключаемых модулей.

Для вывода всех интерфейсов, доступных для объектов, стоящих ниже класса Node, служит следующая команда: showInterfaces node

С помощью любой из этих команд можно вывести интерфейсы наиболее удобным для написания сценариев способом. Так, функция getInterfaces и команда showInterface отображают интерфейсы для отдельного объекта независимо от их доступности для всех остальных узлов. А команда showInterfaces (с буквой V в конце) отображает интерфейсы для всех узлов.

Рассмотрим некоторые свойства и методы, доступные посредством системы публикации функций.

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

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

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

b = box()

getInterfaces b

В итоге будут выведены все интерфейсы для параллелепипедного объекта:

#(<MixinInterface:IAssembly>,



<MixinInterface:INodeGIProperties>,

<MixinInterface:INode>,

<MixinInterface:INodeLayerProperties>, <MixinInterface:INodeBakeProperties>,

<MixinInterface:SkinPose>)

Эти интерфейсы могут быть использованы для обнаружения дополнительных свойств, методов и действий, доступных для параллелепипеда. Далее вам предстоит ознакомиться с интерфейсом Inode.

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


Приложение

По этой команде выводится ряд свойств и методов применительно к параллелепипеду. Так, свойство .handle предоставляет уникальный идентификационный номер, связанный с объектом.

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

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

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

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

При выполнении этой строки кода возвращается идентификационный номер 1. В данном случае свойство .handle использовано без указания перед ним интерфейса .INode. Если свойство интерфейса не вступает в конфликт с имеющимся в MAXScript свойством, сам интерфейс можно не указывать между именем объекта и свойством интерфейса.

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

При выполнении этой строки выводится каждый интерфейс, а также его свойства, методы и действия. Третьим выводится интерфейс INode. В этой части листинга приведены те же свойства, методы и действия, что и при выполнении команды showinterface b.INode.

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

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

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

clearListener()

lookAtObj = cone pos: [50,0,0]

lookAtTarg = dummy()

c = lookat_constraint()

lookAtObj.rotation.controller = c

В двух последних строках кода в переменной c создается экземпляр ограничения по линии взгляда и затем он присваивается конусу.

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

По этой команде выводятся встроенные свойства ограничения по линии взгляда.


Приложение

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

В этой строке кода встроенное свойство используется для выбора оси Y ориентации цели.

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

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

По этой команде выводятся интерфейсы для ограничения по линии взгляда. В данном случае это единственный интерфейс constraints.

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

showInterface c.constraints

По этой команде выводятся свойства, методы и связанные с ними действия, доступные для данного интерфейса. Это, в частности, метод appendTarget для присоединения целей.

7. Введите в приемнике команд следующую строку кода: c.constraints.appendTarget lookAtTarg 50

С помощью метода из интерфейса в этой строке кода цель по линии взгляда вводится в список целей с весом 50.

8. Переместите конус, обратив внимание на то, что он нацелен на фиктивный объект.

Интерфейс constraints — это специальный вид интерфейса, называемого MixinInterface. Это означает, что интерфейс является средством доступа к множеству элементов. Иными словами, в одном интерфейсе совмещается множество элементов.

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





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


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



ПОИСК ПО САЙТУ:


Рекомендуемые страницы:

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