随着物流业日益快速的发展, 自动化立体仓库作为生产物流的重要组成部分在国内外已得到广泛的应用[1]。
VRML (虚拟现实建模语言, Virtual Reality Modeling Language) 是一种用于建立真实世界的场景模型或者虚构的三维世界的场景建模语言, 是WWW (World Wide Web) 的具有交互性的虚拟现实建模语言[2,3], 具有平******立性、可扩展性、低宽带要求、实时的图形渲染和基于事件的交互等特点。VRML也是一种ASCII的描述性语言, 能够在网页中显示三维动画效果和基于三维模型的交互操作, 将人的行动作为浏览的主体。目前, VRML技术已经广泛应用于科技探索、商业宣传、文物保护、娱乐业等各行各业。基于其极强的直观性和丰富实时交互功能, 在远程监控中VRML技术也得到愈来愈多的应用[4,5]。
当前大部分仓储管理系统用户界面不直观, 企业高层决策者不能直观了解仓库的运行状态, 但却又没有充足的时间到实地进行考察, 看到的都是下级部门经过加工整理后的信息, 大多是以文字或表格的形式呈现给决策者。有用信息的提取需要经过二次加工 (如比较、排列等) , 没有较为直观形象的三维立体图形作为辅助查询工具, 难以真实地反映仓库的动态运行状况。实现对仓库物资和设备的远程监控有多种途径, 利用VRML技术构建虚拟的仓库设施及物资模型, 将虚拟现实环境与WWW集成在一起, 使用户可以围绕Web站点查看场景信息, 可以看到三维模型, 还可以超链接到Web的其他部分。利用虚拟现实技术实现远程监控, 用户可以通过浏览器直接查看虚拟模型的状态, 随时随地身临其境地查看仓库。
该虚拟三维立体仓库管理系统主要用来实时查看仓库的储存状态及存储货物的信息, 以便于管理者对仓库有形象直观的了解, 暂时不对仓库内的其他设备进行监控, 但可以与其他仓库管理系统进行集成。虚拟三维立体仓库管理系统关键技术主要涉及到货架货物模型建模、模型整合、从数据库中检索已有的货物、对仓库进行漫游查询、货物信息查询等。
三维模型通常有两种建模方法:VRML是一种描述性的文本语言, 因此可以利用文本编辑器进行VRML编辑, Parallel Graphics公司开发的Vrml Pad是基于文本格式、支持即时浏览的VRML专用开发工具, 就有下载、编辑、预览、调试等多种功能。VRML是利用其内部的节点、场景、事件来构成的。但是利用Vrml Pad建立一些复杂的模型, 一般不采用该方法。另外一种是利用其他的三维建模软件建模。现在很多三维软件建模已相当成熟, 在VRML中需要复杂的编程模型只需要在三维软件中通过拉伸、旋转、扫描、镜像、阵列等功能就可以轻松实现, 一些更加复杂的造型, 例如渲染、曲面创建等在VRML中很难实现的功能也可以在三维建模软件中实现, 并且过程是可视化的, 可以在建模过程中修改形状和尺寸的变化。现在常用的造型软件如Pro/E、CATIA、UG、Solid Works等, 建模完成后保存为VRML格式 (*.wrl) 。但是三维建模软件导出的VRML文件程序比较混乱, 可以利用VRMLPad进行优化处理[6]。
在构建三维立体仓库管理系统过程中, 货架模型和货物模型有很多形状都是相同的, 对于这些具有相同属性的对象, 可以采用模块化的方法建立三维立体仓库的三维模型。即只建立各种类型的货架或货物的一个模型, 并使之带有外露接口, 但其他地方需要此模型时, 只需通过调用即可, 大大降低了人工建模的重复工作, 提高建模效率。
三维立体仓库涉及到大量的货架和货物模型, 用一个单独的VRML文件实现全部场景不是现实的。VRML文件在调试整个程序过程中不能出现任何错误, 任何一个小错误都会加大调试的难度, 还可能引起未知的错误, 因此对于程序很大很复杂的文件一次性调试是极其困难的;用户通过Web打开VRML文件, Web通常要读入一个完整的VRML文件后, 才能显示其创建的模型或场景, 若把所有模型都放在一个场景中, 用户在Web上查看时将会大大降低模型的渲染速度, 虚拟场景的实时性也就得不到更好的体现。
为了解决上述难题, 可以采取场景分割策略, 即把大场景分割成几块小的模型, 分别存放在一个VRML文件中作为整个场景的素材模块。使用内联节点Inline, 在构建主场景时, 在需要插入素材模块的位置利用内联节点指明素材文件的地址和文件名即可完成调用和插入素材, 素材可以很方便的成为场景中的一部分。Inline节点语法如下:
在主文件中需要包括所有的货架, 若只是应用Inline节点来整合模型, 同样会做大量的重复工作。即在同一个VRML文件中, 有很多个同样的造型同时出现, 如相同形状的货架和货物, 这就需要多次使用同一节点, 若每次使用该节点都必须重新定义, 那么将是一个非常浪费精力的过程, 并且还使文件变大和复杂。在VRML中, 使用DEF命令为空间中的任何节点定义名称, 在后面的程序中可以使用USE命令进行调用, 从而重复使用同一节点。节点的定义及引用语法定义如下:
DEF节点名节点类型{}
USE节点名
在该虚拟三维立体仓库管理系统中, 可以将一个仓库分为很多区, 每个区规划为几个块, 每块包含若干货架的模式。在VRML程序中使用DEF来为节点定义一个名称, 之后就可以反复地引用自定义节点, 来创建所需要的复杂的VRML空间。部分代码如下:
ASP (Active server pages) 是Microsoft公司开发出的一种基于服务器端的脚本环境, 使用ASP可以非常方便地开发交互式动态网页和具有强大数据库访问功能的Web应用程序。ASP提供了一系列的内置对象, 利用ASP提供的这些对象可以实现从浏览器中接受和发送信息, 从而能够即时动态反映网页的变动, 在实时性方面得到了很大的提高。
由于VRML文件无法与数据库直接建立交互通道, 找一个既能被VRML场景文件进行调用, 又能对Web数据库快速连接的中间数据通道是必要的。VRML场景文件是嵌入到Web页面通过浏览器进行解释执行和动态显示, ASP又是动态网页设计及Web数据库连接的主要手段, 可以利用VRML与ASP相结合, 实现VRML与数据库的联系, 如图1 所示。
VRML与ASP相结合连接数据库时, Web服务器将VRML程序、ASP程序和数据库隔离, 它们可以独立配置、运行和管理。这样构建的系统灵活性和扩展性好, 适用于三维立体仓库这种大型分布式的管理系统。
用户每次进入系统的时, 通过与数据库相连接动态地显示仓库的存储状态, 由于仓库货物数量庞大、种类繁多, 系统只需要直观展示仓库哪些地方存有货物, 哪些地方没有存储货物。可以用长方形来表示货物, 货架上的每个货位都存放一个长方形。用长方形的大小来表示存储货物的大小。用长方形的颜色来表示货位的存储情况, 银白色的长方形表示该货位没有货物, 红色显示的长方形表示该货位有货, 黄色显示的长方形表示该货位被锁定。
MIME (Multipurpose Internet Mail Extensions, 多用途互联网邮件扩展) 是描述消息内容类型的因特网标准。要用ASP生成VRML文件, 必须在页面开始时生成一个合适的扩展MIME类型: “model/VRML” 。用ASP产生MIME类型头信息可以这样表示:<% response.Content Type = “model/VRML”%>。由于VRML文件都是以“# VRML V2.0 utf8”开头, 因此用ASP生成VRML文件, 还需要声明常用的VRML头信息: <% response.write (“# VRML V2.0 utf8”) %>。
利用color与shape两个参数来确定物体的颜色和几何形状, 实现VRML、ASP和数据库连接的部分ASP代码如下:
程序运行时, 通过数据库中的货位状态来确定该货位上长方体的颜色与形状, 从而使用户可以直观查看仓库的存储情况。
对仓库漫游查询, 通过ROUTE节点可以实现, ROUTE节点的作用是在各个节点的event Out和event In之间建立链接:
ROUTE pos. value_ changed TO view. set_ position //当pos节点的值变化时, 将这个值传递给view节点的位置域, 设置view节点的新位置, 即视点的新位置
ROUTE angle. value_ changed TO view. set_ orientation //视点被设定了新角度
ROUTE view. bind Time TO time. set_ start Time //当视点被绑定 (选中) 时, 将此时的绝对时间传递给time节点, 使定时器可以计算动画中的时间
ROUTE time. fraction_ changed TO pos. set _ fraction //当时间变化时, pos节点被刷新
ROUTE time. fraction_ changed TO angle. set _ fraction //当时间变化时, angle节点被刷新
货物信息查询功能的实现原理:用户通过点击虚拟场景中的三维货物模型, 获取此货物模型的ID号, 传输给服务器端上的ASP程序, ASP程序接受此ID号, 并根据此ID访问数据库服务器, 获取货物模型的属性数据, 并将查询结果传回到客户端, 调用HTML编写的页面文件, 以一个新的Web页面显示出来[7]。货物属性信息查询过程的流程如图2 所示。
下面以仓库中的任意一个货物为例, 说明如何查询货物的信息。在货物模型上建立一个锚点, 点击该锚点调用其ASP (*.asp) 文件, 实现对数据库的访问, 然后将关于货物的相关信息通过新的页面展现。相应的VRML代码为:
上述源代码表示单击goods (货物) 超链接后出现一个新窗口, 在新窗口中出现“*. asp? no=1”所对应的内容。
结合VRML与ASP建立虚拟三维立体仓库管理系统, 可以帮助物流企业管理者更加方便且形象的查看仓库状态。面对数量庞大的仓库, 种类繁多的存货及数以万计的存储物资及仓库的物资堆放情况, 企业高层可以利用虚拟三维立体仓库管理系统更加形象、直观、全方位地观察和了解仓库的运行状态, 为企业对未来的规划、决策提供第一手的信息, 为实现仓库可视化管理提供了有效的解决方法。
标签: