Вращение мембраны с графический интерфейсом пользователя MATLAB®

vrmemb пример показывает, как использовать сгенерированный 3-D графический объект MATLAB® с Simulink® 3D Animation™. Известная мембрана была сгенерирована функцией логотипа и сохранена в формате VRML с помощью стандартной функции MATLAB vrml. Можно сохранить все объекты Handle Graphics® этот путь и использовать их с Simulink 3D Animation как компоненты связанных виртуальных миров.

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

В сцене VRML интересно заметить текстовый объект. Это - дочерний элемент VRML узел Billboard. Можно сконфигурировать этот узел так, чтобы его локальная ось Z перешла к вопросу к средству просмотра в любом случае. Это может быть полезно для моделирования виртуальных панелей управления и главных отображений (HUD).

Создайте мировой объект

Мы начинаем путем создания объекта класса VRWORLD, который представляет виртуальный мир. Файл VRML, который составляет мир, был ранее сделан с помощью 3D World Editor, содержавшегося в продукте Simulink 3D Animation. Имя файла является Мембраной x3d.

wh = vrworld('membrane.x3d');

Мембранный объект был сгенерирован с помощью функционального 'логотипа' и сохранен в формате VRML с помощью функции 'vrml'. После некоторых незначительных модификаций в редакторе VRML это непосредственно применимо Simulink 3D Animation.

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

Откройте виртуальный мир

Мир должен быть открыт, прежде чем он сможет использоваться. Это выполняется с ОТКРЫТЬ командой.

open(wh);

Доступ к узлам VRML

Чтобы получить доступ к узлу VRML, соответствующий объект VRNODE должен быть создан. Узел идентифицирован его именем и миром, которому он принадлежит.

H.membrane = vrnode(wh, 'Membrane');
H.view1 = vrnode(wh, 'View1');

Создайте диалоговое окно

Диалоговое окно используется, чтобы в интерактивном режиме изменить значения полей узла VRML, упомянутого объектом VRNODE, только созданным.

figh = dialog('Position',[358 402 530 107], 'Name', 'Simulink 3D Animation Example', ...
              'WindowStyle', 'normal', ...
              'CloseRequestFcn', ...
              'w = vrworld(''membrane.x3d''); close(w); try; delete(w); end; closereq');

Создайте управление вращением

uicontrol('Parent',figh, 'Position',[84 68 80 14], 'HorizontalAlignment','left', ...
          'String','Rotation', 'Style','text');

H.rotation = uicontrol('Parent',figh, 'Style','slider', 'Position',[164 65 352 20], ...
                       'Min', 0, 'Max', 2*pi, ...
                       'Callback', ['cur_rot = get(H.rotation,''Value'');', ...
                                    'cur_x = get(H.xaxis,''Value'');', ...
                                    'cur_y = get(H.yaxis,''Value'');', ...
                                    'cur_z = get(H.zaxis,''Value'');', ...
                                    'if (cur_x || cur_y || cur_z)', ...
                                    '  H.membrane.rotation = [cur_x cur_y cur_z cur_rot];', ...
                                    'end' ]);

Создайте управление изменением масштаба

H.zoom = uicontrol('Parent',figh, 'Style','slider', ...
                   'Position',[164 24 352 20], 'Value', 1, ...
                   'Callback', 'H.view1.fieldOfView = 0.25 + 0.55 * (1-get(H.zoom,''Value''));');

uicontrol('Parent',figh, 'Position',[84 27 80 14], 'String','Zoom', ...
          'Style','text', 'HorizontalAlignment','left');

Добавьте флажки

H.xaxis = uicontrol('Parent',figh, 'Position',[24 70 60 20], 'String','X', ...
                    'Style','checkbox');
H.yaxis = uicontrol('Parent',figh, 'Position',[24 42 60 20], 'String','Y', ...
                    'Style','checkbox');
H.zaxis = uicontrol('Parent',figh, 'Position',[24 14 60 20], 'String','Z', ...
                    'Style','checkbox', 'Value', 1);
setappdata(figh, 'Handles', H);

Просмотрите виртуальный мир

Виртуальный мир может быть просмотрен в инструменте просмотра VRML. Simulink 3D Animation предлагает два способа просмотреть виртуальные миры - внутреннее средство просмотра (метод по умолчанию) и внешнее средство просмотра (интегрированный с вашим веб-браузером, доступным на некоторых платформах). Мы просмотрим виртуальный мир с помощью функции ПРЕДСТАВЛЕНИЯ.

view(wh);

Пример закончен путем закрытия панели управления.