旋转膜的MATLAB GUI
vrmemb示例展示了如何使用MATLAB®生成的三维图形对象与Simulink®3D动画™。金宝app著名的薄膜由logo函数生成,并使用MATLAB标准函数VRML保存为VRML格式。您可以以这种方式保存所有Handle Graphics®对象,并将它们与Simulink 3D Animation一起用作相关虚拟世界的组件。金宝app
启动示例后,您将看到一个带有两个滑块和三个复选框的控制面板。使用滑块旋转和缩放膜,同时使用复选框确定要围绕哪个轴旋转。
在VRML场景中,注意文本对象是很有趣的。它是VRML公告牌节点的子节点。您可以配置此节点,使其本地z轴始终指向查看器。这对于虚拟控制面板和头显(HUD)建模非常有用。
创建一个World对象
我们首先创建一个VRWORLD类的对象,它表示虚拟世界。构成世界的VRML文件以前是使用Simulink 3D动画产品中包含的3D世界编辑器制作的。金宝app文件名为膜。x3d。
Wh = vrworld(“membrane.x3d”);
膜对象是使用'logo'函数生成的,并使用' VRML '函数保存为VRML格式。在VRML编辑器中经过一些小的修改后,它可以直接被Simulink 3D动画使用。金宝app
启动示例后,您将看到一个带有两个滑块和三个复选框的控制面板。滑动条用于旋转和缩放膜,而复选框决定围绕哪个轴旋转。
打开虚拟世界
世界必须先被打开,才能被利用。这是通过OPEN命令完成的。
打开(wh);
访问VRML节点
要访问VRML节点,必须创建适当的VRNODE对象。节点由它的名称和它所属的世界标识。
h .膜= vrnode(wh,“膜”);H.view1 = vrnode(wh,“View1”);
创建对话框
对话框用于交互式地更改由刚刚创建的VRNODE对象引用的VRML节点的字段值。
对话(“位置”,[358 402 530 107],“名字”,S金宝appimulink 3D动画示例,...“WindowStyle”,“正常”,...“CloseRequestFcn”,...'w = vrworld("膜。x3d ");关闭(w);试着;删除(w);结束;closereq”);
创建旋转控件
uicontrol (“父”figh,“位置”,[84 68 80 14],“HorizontalAlignment”,“左”,...“字符串”,“旋转”,“风格”,“文本”);H.rotation = uicontrol(“父”figh,“风格”,“滑块”,“位置”,[164 65 352 20],...“最小值”0,“马克斯”, 2 *π,...“回调”, ('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];',...“结束”]);
创建缩放控制
H.zoom = uicontrol(“父”figh,“风格”,“滑块”,...“位置”,[164 24 352 20],“价值”, 1...“回调”,“H.view1。fieldOfView = 0.25 + 0.55 *(买(H.zoom " Value "));“);uicontrol (“父”figh,“位置”,[84 27 80 14],“字符串”,“放大”,...“风格”,“文本”,“HorizontalAlignment”,“左”);
添加复选框
H.xaxis = uicontrol(“父”figh,“位置”,[24 70 60 20],“字符串”,“X”,...“风格”,“复选框”);H.yaxis = uicontrol(“父”figh,“位置”,[24 42 60 20],“字符串”,“Y”,...“风格”,“复选框”);H.zaxis = uicontrol(“父”figh,“位置”,[24 14 60 20],“字符串”,“Z”,...“风格”,“复选框”,“价值”1);setappdata (figh“处理”、H);
浏览虚拟世界
虚拟世界可以在VRML查看器中查看。金宝appSimulink 3D Animation提供了两种查看虚拟世界的方式——内部查看器(默认方法)和外部查看器(与Web浏览器集成,在某些平台上可用)。我们将使用view函数查看虚拟世界。
视图(wh);
该示例通过关闭控制面板完成。