产品零件的数控加工程序在投入实际加工之前一般先进行试切,传统的试切方式是采用塑模、蜡模或木模在专用设备上进行的,该过程占用了加工设备的工作时间,需要操作人员在整个加工周期内进行监控;三维机床的运动仿真能够使用户从直觉上感受到产品的加工过程,具有很强的逼真效果,为零件的可加工性评价提供分析手段和关键数据,验证加工工艺,优化产品的加工时间和能力;另一方面,三维机床仿真还可以应用于技术技能培训与教育.本文从代码的可移植性、场景和模型数据的易管理性出发,实现了基于OpenGL的可重用的支持三维建模和三维交互的组件,使得编写程序的工作量大大降低,而且对于三维场景中物体的过程运动便于控制与管理.三维图形引擎的选择和设计是建立三维环境的基础,如何设计一个适合于三维加工环境特点的三维图形引擎是整个系统开发的前提条件.
代码组件技术传统的三维图形引擎的用户接口方式的开发方法是采用的传统的面向过程和面向对象的方法,这些方法在大型应用开发的重用性、开放性和应用程序间的交互与协作等方面是不够的.组件可以是一组协作的对象集合,典型的组件如CORBA组件、COM/DCOM组件、JavaBean组件等.
基于组件的软件程序具有良好的鲁棒性、可扩展性和可维护性,可方便地将多个应用程序联合在一起,共同完成一项工作.微软公司建立的COM组件标准,其基本思想是将复杂的应用程序分散设计成一些小的、独立的功能模块,然后通过彼此间的接口进行通信,实现无缝结合来组建开放的应用程序.COM组件作为一个二进制对象具有以下特征:①良好的可移植性,易于扩展;②独立于编程语言,支持多种平台;③采用单一的编程模式进行通信,具有对象间共享存储器管理功能,提高程序的运行和访问效率;④在一个组合的应用程序里,对象能够动态的装卸.
OpenGL编程特点随着OpenGL的广泛应用,越来越多的三维应用程序用OpenGL作为支撑库,可方便地绘制具有真实感的图形,但在开发具有交互特征和实体行为的三维环境方面,存在明显的不足:(1) OpenGL与窗口系统无关,不提供任何交互手段,必须由程序员自己编写所有的交互功能.(2) OpenGLAPI是低级的C函数,不提供可重用的对象库或者应用程序框架,开发效率不高,同时所编写程序的可重用性较差.(3) OpenGL应用程序绘制性能的优化是程序员面临的较大困难, OpenGL的API非常灵活,针对硬件与软件的优化方法多而相异,即使对于同一数据结构或算法,如果代码的组织不同也会产生性能差异.
"3DVS"组件的层次结构我们根据OpenGL的编程特点和虚拟场景开发的要求,构思了如图1所示的"3DVS"组件设计方案.从本质上看,我们是在系统平台上的OpenGL层次结构中,增加了一个二进制代码级组件层次,如图1中虚线框层所示,虽然,从理论上看,会增加命令和数据的传输开销,但这对系统效率的影响是很小的,因为在组件层次上只是实现场景数据的组织和管理,并不涉及到大量底层图元的生成计算及处理.
"3DVS"组件设计 "3DVS"组件层次结构利用ATL生成组件本质上是COM组件对象,其它程序在向COM对象发请求必须知道其所支持的操作、类型、对象的接口规定,对象所支持的操作和类型,也就定义了该对象可提供的请求.对象的接口由IDL(Interface Define Language)来描述, IDL的一个重要特点就是其语言独立性,其通过映像使得对象接口的定义与对象的实现分开,允许对象用不同的程序设计语言实现但仍能保持相互之间的通信.
鼠标三维跟踪球算法三维加工环境相对于传统的二维线框模型仿真具有很强的直观性,可以全方位多视角连续地观察整个机床运动过程.机床仿真应用在组件的设计过程中,融合了实体建模技术,以树形结构描述三维实体的几何模型和运动模型,便于用户模型数据进行组织和管理.该组件本身是一个非应用程序,要在其它应用程序中进行调试,由于其本身数据表达复杂,树形结构的链表存储实现比较复杂,抽象程度较高,其调试过程比较困难.该组件大大地扩展了OpenGL的应用范围,该组件可以作为一个图形绘制服务器,支持网络化编程,其可以作为一个插件(Plus-in)应用于Web环境中,生成基于Web页面的三维环境.其次,在完成组件开发后,利用VC开发环境提供的工具将该组件在系统平台上的注册表中进行注册,然后在可视化编程环境VB下进行调用该组件的事件、方法和属性进行三维编程,大大地提高了程序的开发速度.图3是仿真机床在加工过程中的一帧,在实际应用中,仿真速度和图形的真实感都能满足要求.
共0条 [查看全部] 网友评论