信息化 频道

基于VRML的虚拟制造

  2)针对虚拟模型的虚拟现实仿真技术

  利用虚拟现实建模语言VRML构建复杂系统的三维场景后,可以通过PlaneSensor 、CylinderSensor 、SphereSensor等节点确定各部分机构的运动自由度和范围,通过位置插补器节点PositionInterpolator、方向插补器节点Orientatationlnterpolator和坐标插补器节点Coordinatelnterpolator进行线性插值来设计动态过程。还可以利用Java语言与Script脚本节点结合来扩充VRML的功能,实现复杂动作虚拟。其中,仿真过程的触发行为以及事件之间的连接回路是通过触摸传感器节点TouchSensor、时间传感器节点TimeSensor和ROUTE语句实现的,ROUTE语句对出事件和入事件进行了有机的连接,保证了节点与节点之间的联系。为扩展动态交互功能,可利用VRML为JavaScript、Java等语言提供的接口与JavaScript、Java集成,共同完成动态交互仿真功能。

  3)应用实例


图1.石油固井添加剂分配系统的虚拟制造效果图

  如图1,是应用VRML实现的石油固井添加剂分配系统的虚拟制造效果图。

  这个系统的三维仿真场景中实现的造型主要有:电机、搅拌器、贮藏罐、电磁伺服阀、过滤器、计量泵、针阀、管道等,其三维模型先由UG完成,再输出为VRML文件,然后对各个设备进行详细的渲染,最后按要求分别定义颜色和材质。

  对该系统的的虚拟现实仿真包括电机的加速减速、搅拌器的拆卸、工作指示灯的开关、设备的工作声响等,篇幅所限,下面仅就电机的加速减速为例简述其实现过程。

  实现电机的转动用到TimeSensor 节点,其VRML语法如下:

  DEF time TimeSensor {cycleInterval A
       loop True }

  cycleInterval的值指定了一个时间长度A,即传感器从0.0到1.0时刻的间隔。改变A的大小可以改变电机转动的快慢。Loop域是一个开关量,指转动循环的状态,True 指无限的循环,False指只循环一次。

  实现电机转子转动要定义的另一个节点是OrientationInterpolator,即朝向插补器。

  DEF path OrientationInterpolator {key [ ]
                            keyValue [ ]}

  key和keyValue定义了电机转子转动的关键值和关键位置。产生事件和接收事件节点由ROUTE指令连接在一起。

  ROUTE time.fraction_changed TO path.set_fraction

  ROUTE   path.value_changed TO zhuanzi.set_rotation


图2.Java和VRML动态仿真的程序流程图

  第一个路由在TimeSensor节点的fraction_changed eventOut和OrientationInterpolator节点的set_fraction eventIn之间建立连接。第二个路由在OrientationInterpolato节点的Value_changed eventOut事件和TimeSensor节点的set_translation 之间建立连接。在虚拟场景中电机一旦开启,时间传感器被击发而不断输出时刻值,插补器OrientationInterpolator收到这些值后,用来计算一个新的旋转,新的旋转数据输出给Transform节点,使得节点坐标以一个新的角度旋转。要实现在虚拟场景中对转速的加减进行控制,可运用Script节点对应的Java类来完成,使用Java对VRML的Script节点编程、封装属性和建立场景图内部消息通道能够实现虚拟实体丰富的动态交互功能。其程序流程如图2示。Java程序对虚拟场景中电机的转速控制的流程为:设计者在虚拟场景中输入一个转速值,该事件经路由传入Script节点;Java程序从Script节点处获取的事件进一步加工,再将在Java程序中实现的操作者的加速或减速的逻辑信息反馈到Script节点中,实现对虚拟现实场景中电机转子的速度控制。

0
相关文章