matlab物理仿真可视化,[原创]使用Matlab/Simulink实现运动可视化技术

还在为不知道如何使自己的仿真结果更容易让人接受而烦恼吗?

还在为用一条条曲线所表示的运动太过抽象而苦不堪言吗?

建个3D模型,使用MATLAB平台,投资小,利润高!小本经营,无限回报,赶快继续阅读吧,依托强大的Matlab平台支持,帮你解决仿真过程中遇到的这些烦恼~~

试想一下,无论是学术活动还是各种汇报,一个会动的仿真结果和一组组曲线相比哪个更直观,再配以必要的文字、数字说明,相信下面介绍的方法所得到的结果,无论从哪个角度来讲可能都会更具说服力。是个不错的选择~~   ^_^

===================================分割线===============================

广告打完了,言归正传。运动可视化使用到的是虚拟现实技术。虚拟现实(Virtual Reality,VR)顾名思义就是使用电脑模拟一个三维空间,让观察者有身临其境感觉的一项可视化技术。如果其中物体的运动是受外界控制的,那么就实现了运动的可视化,使运动不再抽象,控制效果也不再是一条条仿真曲线,可以从3D模型的运动中直观地反映出来。

运动可视化技术可以应用于很多领域,如控制中可以用它来反映被控对象的运动情况,机械中借助于外界输入设备(鼠标、操纵杆等)可以观察复杂机械设备的联动情况。做出来的虚拟现实系统也可以应用于虚拟训练、虚拟地图等场合。

虚拟现实所使用到的语言为VRML(Virtual Reality Modeling Language)即虚拟现实建模语言。由于早期的网络使用的语言HTML (HyperText Mark-up Language)无法满足巨大信息量的要求,为了解决这个问题,就应运而生了VRML语言,此处的运动可视化技术是借用VRML的强大建模的功能,在Matlab平台上实现虚拟现实。

那么下面就介绍一下虚拟现实的实现流程吧

324619ae995a043bc12bde7d078becb8.gif

总体操作流程.jpg (27.43 KB, 下载次数: 104)

2010-12-17 20:52 上传

从流程图上看,操作过程并不复杂,实际上也是这样的,下面介绍的这样方法,即使没有VRML语言基础也能建立很好的虚拟现实场景。

首先是VRML建模工具的选择。

建模工具有很多种,比如V-Realm Builder 2.0(Matlab自带的VR建模工具),3D Max(功能强大,操作相对简单的工具,强烈推荐),如果对VRML语言十分精通,甚至可以使用记事本进行建模,虽然看起来最拽,但前期需要投入相当多的精力研究VRML语言。我使用的工具是3D Max和V-Realm Builder 2.0兼用,前者是在初期建模时使用的工具,后者是在对模型修改时所使用到的工具。

其次是虚拟现实浏览器的选择。

虚拟现实浏览器可以理解为VRML语言编译的编译器,通过虚拟现实浏览器可以将VRML语言编译成为3D模型。至于VRML浏览器的选择也有很多种,但如果是基于Matlab平台的系统,推荐使用Matlab/Simulink/Simulink 3D Animation工具箱中自带的VR Sink浏览器,使用这种浏览器不用考虑与Matlab的接口问题。

工具选择好之后,那么就举个例子看一下到底怎么用吧

1.建立3D模型

使用3D Max建立3D模型

324619ae995a043bc12bde7d078becb8.gif

概念车3D模型.jpg (270.42 KB, 下载次数: 110)

2010-12-17 21:01 上传

3D Max建模过程相对简单,效果可以做到相当逼真的程度,完全可以满足虚拟现实中对模型精度的要求。如果不想自己建模也可以借助网络资源,使用搜索引擎搜索“3D模型”,可以找到大量现成的模型。

2.生成VRML 97格式文件

为了能在虚拟现实浏览器中反映出使用3D Max建立出的3D模型,需要将模型转换生成VRML97格式的文件。导出的方法很简单,选择文件→导出→VRML97格式的文件就行了。

3.使用虚拟现实浏览器

将Matlab/Simulink/Simulink 3D Animation/VR Sink模块拖拽到新建文件中,双击,出现如下界面

324619ae995a043bc12bde7d078becb8.gif

VR Sink参数.jpg (78.23 KB, 下载次数: 64)

2010-12-17 21:28 上传

单击Browse按钮,选择上步所生成的VRML97格式文件,之后界面变成如下形式

324619ae995a043bc12bde7d078becb8.gif

VR Sink参数1.jpg (95.82 KB, 下载次数: 68)

2010-12-17 21:29 上传

这时窗口的右侧VRML Tree中就显示了很多节点,这些节点和VRML语言中的节点是一一对应的,这里面对于控制而言经常用到两个节点为rotation(旋转),translation(位置)。

需要注意的是,在建模过程中需要将一起运动的部件分到一个“组”中,控制时控制这个组的“旋转”和“位置”就行了。

4.虚拟现实浏览器的数据接口

常用的数据接口主要是针对rotation节点和translation节点的。

对于rotation节点需要四维数据,前三维定义绕哪个轴旋转,定义方法如下[1,0,0]表示绕x轴旋转,[0,1,0] 表示绕y轴旋转,[0,0,1] 表示绕z轴旋转;最后一维定义转动角度,以弧度为单位。坐标轴定义如下

324619ae995a043bc12bde7d078becb8.gif

坐标轴.jpg (14.28 KB, 下载次数: 48)

2010-12-17 21:27 上传

对于translation节点只需要三维数据,即三个当前时刻中心的坐标。

由于rotation是经常需要使用到的节点,所以,每次都写很多0,1很麻烦,可以将rotation的接口用一个模块来替代,使用之前只需要选择绕哪个轴即可,输入由原来的四维变成了一维,可以大大提高建模效率。模块参数如下

324619ae995a043bc12bde7d078becb8.gif

rotation模块.jpg (21.77 KB, 下载次数: 56)

2010-12-17 21:30 上传

做好一切准备工作之后,剩下的就是按动开始仿真的按钮了,让我们一起看一下效果吧~~

324619ae995a043bc12bde7d078becb8.gif

finally.jpg (141.67 KB, 下载次数: 93)

2010-12-17 21:31 上传

模型是使4个轮子旋转,并且整体移动,如果这样的试验通过了,下一步就是接入能使车真正运动起来的数据,进而可以仿真真实车辆行驶的全过程了

上图中左侧的图就是Matlab自带的虚拟现实浏览器,其中下方有许许多多按钮,下方的这些按钮是控制观察者的视角的,类似一些RPG游戏一样,观察者也可以通过鼠标任意调整视角,360°看到虚拟现实世界中的一切,不过前提是场景得做的十分精细,附件中的模型我指贴了一面的贴图,如果大家好奇心特别重,旋转了视角,将会看到另一个世界~~

==================================分割线================================

上面介绍了VRML建模的全过程,如果遇到复杂的模型,耗费时间的地方在于对真实模型和环境的刻画,Matlab这边的工作,Simulink 3D Animation工具箱已经做了足够多,不需要更改什么,设置一些参数就能直接用了。

此外,Simulink 3D Animation工具箱还提供了很多其他强大的功能,例如在虚拟现实世界中显示文字(VR Text Output),将运动物体的运动后的轨迹记录并在浏览器中显示(VR Tracer),一些外部输入设备的驱动(Joystick Input,Space Mouse Input)。最经典的是Demos模块中提供了各式各样的例子,里面不同类型的应用,基本能够满足简单的要求,同时也是学习虚拟现实一个很好的工具。

下载:

a069512cacf8908023d3780554a8dbd8.gif

car.mdl

(26.4 KB, 下载次数: 744)

2010-12-17 21:32 上传

点击文件名下载附件

下载积分: 贝壳 -1

7073a870a1f1932630cc81db1fab45ec.gif

car.rar

(506.07 KB, 下载次数: 27644)

2010-12-17 22:22 上传

点击文件名下载附件

下载积分: 贝壳 -1

附件使用方法:将压缩文件解压生成car.WRL文件,打开car.mdl,双击VR Sink,单击Brown找到car.WRL文件,在左侧节点列表中下找到如下节点

SUV/children.rotation      整车的旋转

SUV/children.translation  整车的位置

Reifen_VL.rotation          左前轮旋转

Reifen_HL.rotation          左后轮旋转

Reifen_VR.rotation          右前轮旋转

Reifen_HL.rotation          左后轮旋转

勾选上述节点,旋转需要四维数据(格式见上文所述),位置需要三维数据,输入相应数据,即可观察到相应的运动

你可能感兴趣的:(matlab物理仿真可视化)