水利水电工程施工可视化仿真涉及大量的数据信息,包括施工区域的地形DEM数据、建筑物体型尺寸和属性信息数据,数据的采集、存储、管理和可视化表达方式的正确选择是建立一个高性能可视化仿真系统的关键。
水利水电工程施工是一个动态过程,施工区域地形地貌及建筑物形态随时间的推移而不断改变,其可视化仿真场景的构建需考虑时间特征。在VRML中支持多个场景的合并(Inline),为了便于操作和提高场景构建的效率,可将整个仿真场景分为不变部分和可变部分。在Visual Basic开发环境下应用COM组件技术与MySQL网络数据库技术可实现VRML动态场景的实时构建。
1.数据来源
混凝土坝施工过程是一个从混凝土制备、混凝土运输到混凝土浇筑的过程。依据系统工程原理,混凝土坝施工作为一个复杂的系统,可看作由混凝土拌和、运输、浇筑子系统构成,整个系统受外部因素和内部因素的综合影响。利用系统分析方法,在坝体尺寸和分缝分块一定的情况下,由给定的机械配置方案及各种限制和约束条件,可通过仿真计算来安排各浇筑块的浇筑顺序和计算施工工期,以进行多种施工方案的比较选优。
通过系统仿真分析,将每个浇筑块的几何信息和决策变量(如:浇筑机械、入仓时间等)计算结果输出,作为可变场景构建以及交互式查询属性信息的数据源。对于不变场景,其数据来源主要是CAD建模软件。
2.数据存储方式与结构
常用的数据存储方式一般有顺序文本格式和数据库格式。文本格式存储方法简单,但无法处理海量数据;数据库格式适用于海量数据的存储,具有查询快捷、记录操作方便灵活等优点,已成为数据存储的首选方式。
混凝土浇筑块信息包括空间几何信息和属性信息,数据量大、相互关系复杂,考虑到两种信息数据在可变场景构建和交互查询操作时需要灵活的逻辑匹配连接,选择采用数据库格式存储。几何信息和属性信息分别保存到不同的数据表中,并借助相同字段将同一浇筑块的几何信息和属性信息记录进行关系连接,如图7-18所示。
3.基于COM组件技术的VRML场景构建
组件技术使近20年来兴起的面向对象技术进入到成熟的实用化阶段。在组件技术的概念模式下,软件系统可以被视为相互协同工作的对象集合,其中每个对象都会提供特定的服务,发出特定的消息,并且以标准形式公布出来,以便其他对象了解和调用。
图7-18 混凝土浇筑块信息数据库表结构
COM是组件式对象模型(Component Object Model)的英文缩写,是组件之间相互接口的规范,是OLE(Object Linking&Embedding)和ActiveX共同的基础,其作用是使各种软件构件和应用软件能够用一种统一的标准方式进行交互。COM不是一种面向对象的语言,而是一种与源代码无关的二进制标准。COM所建立的是一个软件模块与另一个软件模块之间的链接,当这种链接建立之后,模块之间就可以通过称为“接口”的机制来进行通信。COM标准增加了保障系统和组件完整的安全机制,并扩展到分布式环境。COM本质上仍然是客户/服务器模式。客户(通常是应用程序)请求创建COM对象并通过COM对象的接口操纵COM对象。服务器根据客户的请求创建并管理COM对象。客户和服务器这两种角色并不是绝对的。
由于组件技术的出现,软件开发的形式也随之发生了很大的变化。大量行业组件不断出现,软件开发者则可以直接利用适当的组件快速开发出特定功能的应用程序。利用blaxxun公司的Contact VRML浏览器组件,在Visual Basic开发环境下可实现虚拟现实场景的动态构建,并完成VRML浏览器与Visual Basic开发环境之间的交互及通信。
利用Visual Basic的ODBC数据库驱动技术连接混凝土浇筑块信息数据库,读取几何信息数据表中满足特定条件的所有浇筑块记录,将浇筑块的几何描述信息写入VRML场景,最后输出WRL格式场景,实现某一时刻混凝土坝施工面貌的形象展示,程序的具体流程如图7-19所示。
各浇筑块可以用六面体来描述,混凝土浇筑块在VRML场景中的描述方法如下:
图7-19 构建VR场景程序流程图
浇筑块的生成过程如图7-20所示。
在CAD环境下建模形成的不变场景主要包括施工区域DTM模型、水体模型、永久地物等,可以通过第三方软件转换为WRL文件格式。考虑到由于开挖、回填等引起场景面貌改变,可分别生成多个关键时刻不同面貌的不变场景WRL文件,供场景合并使用。生成整体场景时,首先根据指定的时间点进行判断,确定与可变场景合并的不变场景,然后在可变场景中使用Inline节点引入不变场景,形成整体场景。(www.xing528.com)
图7-20 浇筑块生成过程
4.交互功能的实现
VRML场景本身提供对用户需求处理的简单交互,包括事件和路由。但是在VRML场景与其他特定应用之间就必须要有相应的接口来实现它与用户之间的交互,可以使用Script节点辅以JavaScript编程实现VRML与外界的信息交互。Script节点的主要作用有:
(1)可感应环境的变化及用户的操作。
(2)从其他节点接收事件并进行一些处理。
(3)内部的程序块可完成一些计算工作。
(4)通过发送事件使外界产生相应的变化。
利用它可以编写复杂的VRML程序。Script节点的语法为:
虚拟现实场景的交互一般包括对场景视点的切换(视图旋转、平移、缩放等)、场景物体的捕捉以及场景锚点的触发。视点的切换功能一般在虚拟现实浏览器中提供,对于物体的捕捉操作需要使用Script节点和Route路由来完成,以下VRML代码实现了鼠标捕捉某一浇筑块并将鼠标事件传递到Visual Basic编程环境的功能:
在VisualBasic环境下,通过OnEvent事件过程可截获由VRML场景所发出的鼠标事件,具体代码如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。