Конструктор пользовательских интерфейсов для Autodesk® MotionBuilder®

1

Краткое описание

Утилита предназначена для визуальной разработки пользовательского интерфейса для OpenReality SDK и Python прикладных интерфейсов программы MotionBuilder.

Плагин теперь с открытым исходным кодом, сайт проекта здесь.

Возможности

  • создание и удобное обращение с регионами на канве
  • настройка свойств и взаимосвязей регионов
  • назначение визуальных компонент на регионы
  • изменение свойств визуальных компонент
  • написание кода обработки событий элементов пользовательского интерфейса
  • просмотр интерфейса с помощью интерпретатора Python
  • экспорт пользовательского интерфейса как для OpenReality SDK C++ так и для Python

На данный момент утилита позволяет создавать готовые утилиты на Питоне и генерировать вполне удобный код для OpenReality SDK. Ограничения связаны с тем, что поддерживается только одно поле (layout) для компонент, т.е. нет возможности создания переключающихся вкладок, страниц.

UIBuilder позволит сократить время на разработку пользовательского интерфейса или целой утилиты в целом.

Установка

Установщик (MotionBuilder 2013 64bit) — Setup-UIBuilder_07b

MotionBuilder 2012 64bit version —ui_builder64_2012

Плагин под Autodesk MotionBuilder 2011

32bit version — uibuilder32_2011
64bit version — motionbuilder 2011 64-bit

Плагин под Autodesk MotionBuilder 2010
32 bit — uibuilder2010_32

Плагин под Autodesk MotionBuilder 2009

32 bit — setup_UIBuilder

64 bit — setup_UIBuilder64

Плагин должен быть помещен в соответствующую директорию к MotionBuilder — ..\win32\plugins

..\x64\plugins

При запуске MotionBuilder в главном меню программы среди утилит (Open Reality -> Tools) должна появиться новая утилита редактора – UI Builder.

Примеры работы с редактором

  1. Создание продвинутой утилиты переименования — http://neill3d.com/utilita-prodvinutogo-pereimenovaniya
  2. Скрипт по созданию поз — http://neill3d.com/mobu-script-pose-shots
  3. Скрипт именования маркеров скелета — http://neill3d.com/markers-renamer-script-by-the-uibuilder

Описание редактора

11

  1. окно навигатора. Показывает весь перечень элементов в сцене. С помощью этого окна можно производить выделение элементов.
  2. главное меню редактора и панель инструментов
  3. основные вкладки настройщика свойств: вкладка параметров утилиты, параметров отдельного региона, отдельного визуального компонента, кода событий.
  4. таблица свойств. Позволяет менять значения путем ввода в соответствующую ячейку таблицы.
  5. канва утилиты. Здесь происходит разметка области на регионы. Позднее на эти регионы цепляются компоненты и интерфейс готов.
  6. поле быстрой помощи, подсказок для текущего действия.

Главное меню

1) File

  • New – создание новой сцены в редакторе
  • Load – Загрузить сохраненную разметку
  • Save – сохранить текущую разметку
  • Export CPP – экспортировать разметку в исходных код для OpenReality C++
  • Export Python – экспортировать разметку в исходных код для питона

2) Edit

  • Undo – отмена последнего действия
  • Redo – временно не работает
  • Select All – выделить все регионы
  • Select Invert – инвертировать текущее выделение
  • Select None – сбросить выделение
  • Snap – включает/выключает привязку объектов
  • Snap Step – задание шага для привязки
  • Delete – удалить текущие выбранные регионы

3) Help

  • About – информация об авторе и контактах

Режим выделения

В режиме выделения вы можете выделять, перемещать и изменять размер регионам. Выделение происходит путем клика левой кнопки мыши в область региона.

  • Зажать Shift – добавление регион под курсором к выделенным.
  • Зажать Alt – убрать из выделения регион под курсором.

Производить манипуляции над регионом можно с помощью маркеров редактирования в выделенном состоянии. Левые и верхние маркеры отвечают за перемещение, а нижние и правые отвечают за изменение размера.

Режим создания регионов

В этом режиме можно добавлять новые регионы на канву. Для этого выполните клик левой кнопкой мыши в том месте где вы хотите расположить один угол региона и затем перемещением мыши определите расположение второго противоположного угла для региона. Завершение создание осуществляется путем второго клика левой кнопкой мыши или для отмены – правой кнопкой мыши.

Для выхода из режима региона можно использовать как панель главного меню, так и клик правой кнопки мыши по канве.

Режим предварительного просмотра

Данный режим предназначен для просмотра визуальных компонент, назначенных на регионы. В этом режиме нельзя производить манипуляции непосредственно на канве, однако все остальные действия можно производить:

Выделение через панель навигации

?зменение свойств через параметры в  таблицах свойств как регионов, так и визуальных компонент.

Создание готовых утилит в редакторе.

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

первый список доступных обработчиков для данного выделенного элемента визуальной компоненты;

второй для исходного кода обработчика. Код следует писать на Питоне, просматривать что из этого получилось можно с помощью команды Run либо через непосредственный экспорт в код на Питоне. Если при выполнении кода была обнаружена интерпретатором ошибка, то она отобразиться в окне редактора Питона в среде MoBu.

При написании кода скрипта на обработчик следует помнить, что функция для события имеет следующий вид

def Event (control, event):

Это означает, что в коде обработчика можно использовать переменные control, event, как передаваемые от самой среды MoBu.

Если выделение отсутствие то на панели редактирования событий будут доступны события касательно самой утилиты и ее формы:

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

OnShow – код вызывается, когда компоненты добавлены, их свойства настроены и заданы. Сюда можно вписывать код касательно дополнительного задания свойств для элементов, для выполнения разных вычислений, заполнения элементов значениями и прочее.

Обращение к компоненте проходит по её имени. Например, если создать обычный регион с именем по умолчанию region1 и назначить на него визуальную компоненту кнопки, то обращение к свойствам кнопки следует выполнять через переменную region1.

Обучение

1. Создание простой утилиты переименования

Демонстрационное видео по работе с плагином можно посмотреть на YouTube —

Результат демонстрации — скрипт переименования объектов по маске можно скачать здесь test

В этом примере мы создадим небольшую но полезную утилиту для переименования одного или нескольких выделенных объектов путем замены части имени файла (маска) на заданный текст.

Для этого нам потребуется:

  • поле ввода для маски имени файла
  • поле ввода текста на замену
  • кнопка, но нажатию которой производится переименование для выделенных объектов

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

Запускаем редактор и располагаем регионы для наших будущих компонент. Советую, сразу их удобно именовать, для того чтобы легче было обращаться в дальнейшем с элементами утилиты.

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

Теперь когда область утилиты размечена на регионы, следует назначить соответствующие визуальные компоненты. Для нашей утилиты будет использовать визуальные компоненты Label, Edit, Button. Просмотреть что из этого получилось можно в окне предварительного просмотра или же через кнопку Run в панели главного меню.

Давайте настроим свойства для визуальных компонент, перейдите в режим предварительного просмотра и откройте вкладку свойств визуальных компонент (третья вкладка). Через окно навигатора выделите компонент названия над полем ввода маски – labelMask. ? в таблице свойств в графе напротив Caption введите «Mask:». Проделайте тоже самое для другой строки и для кнопки.

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

List = FBModelList()

FBGetSelectedModels(List)

For obj in List:

obj.Name = obj.Name.replace(Mask.Text, Text.Text)

Все готово! Можете проверить, запустить утилиту с помощью команды Run, выделить ряд объектов и протестировать выполнение переименования.

Готовый код утилиты на Питоне можно получить через функцию экспорта в главном меню File -> Export Python.

По всем вопросам, пожеланиям и предложениям обращайтесь

Сайт – www.neill3d.com

e-mail to: s@neill3d.com

Author: Solohin Sergey (Neill)

Журнал последних изменений

11.03.2014

— добавлена версия под 2013 МоБи 64бит

22.02.2012

— исправлена ошибка запуска пустого окна в МоБи 2012

— исправлена ошибка генерации кода на питоне. В МоБи 2012 функция CreateUniqueTool переименована в FBCreateUniqueTool

2 thoughts on “UI Builder

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *