找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3853|回复: 0

[转]Open Inventor数据转换技术的研究

[复制链接]
发表于 2012-1-27 21:12:34 | 显示全部楼层 |阅读模式

以Open Inventor数据格式(IV数据格式)向STL数据格式转换为例介绍了一种将IV数据格式向其它数据格式转换的方法。它直接从IV数据格式中读取STL数据格式中所需的信息,并以STL数据格式的要求输出,避免了数据的损失和误差。该方法已在Linux系统下由C++语言编程实现,并应用于虚拟油泥造型系统中,取得了良好的效果。
    0 引言
    近年来的计算机软硬件纷纷朝向3D的应用方向发展, 目前兼容性最高的OpenGL绘图函式库规格也因此不断更新,以往程序开发者为了应用最新的技术,需要不断修改程序代码,如果使用Open Inventor的各类对象来开发软件,将可直接享受到这些绘图加速的技术,因为Open Inventor是以OpenGL为基础来开发的,而且Open Inventor未来的版本也会支持更新的绘图技术,如此以往开发的程序代码也将能跟上绘图技术的发展。
    Open Inventor经过TGS数年来的发展, 在3D Visualization领域上已经成为领导的先驱, 开发者可以使用各类功能强大的对象, 且透过重复使用这些对象将能快速发展绘图应用软件, 增加软件的开发效率, 如此可以节省许多开发的时间, 使得软件提早进入市场, 并使得绘图效率能够得到最佳化的保证Open Inventor目前已成为世界上被广泛使用的对象导向绘图软件开发接口, 其提供输入增强工具Data Converters以使其3D对象图形库更为丰富。Data Converters可以将CAD\CAM数据格式转成IV数据格式。这些功能的执行允许Open Inventor的开发人员任意添加现有的大量数据模型。但是Open Inventor只能输出自身生成的IV数据格式, 不支持其它数据格式的输出, 这就使得其与现有的其它CAD\CAM软件的交流出现困难, 为此我们设计一种方法使IV数据格式可以与其它数据格式进行转换。 本文以IV数据格式向STL数据格式转换为例, 提出一种将IV数据格式向其它数据格式进行转换的方法。
    1 IV数据格式
    IV数据格式是Open Inventor自身特有的模型数据格式, 每当对一个node、path或path list执行一个写操作时, 输出数据就以这种格式写出。 可以将这种格式的数据读入Inventor scene数据库。 这种数据格式也可以用来转换3维模型, 并在过程之间交换数据。
    IV数据格式是通过三维模型表面的三角网格化获得的。Open Inventor的数据格式有,2种形式:ASC码形式和二进制形式。 二进制形式的数据格式容量较小但不易阅读理解,ASC码形式的数据格式便于阅读分析, 通常Open Inventor默认保存为ASC码形式。ASC码格式的IV数据格式主要由文件头部、节点(域)信息、域关系、引擎数据、全局变量等部分构成, 其中文件头部用来说明数据格式的类型和版本信息, 其它部分为IV数据格式的内部节点信息说明。以下为IV数据格式ASC码形式的示例:
  1. #Inventor
  2. V2.1 ascii
  3. Separator{
  4. Separator{
  5. Translation{translation
  6. 050}
  7. Cone{}
  8. }
  9. Annotation{
  10. LightModel{model
  11. BASE_COLOR}
  12. Drawstyle{style LINES}
  13. Cube{}
  14. }
  15. }
复制代码
    2 STL数据格式
    STL格式是目前快速成型系统中最常见的一种数据格式。STL数据格式是通过对CAD模型或曲面模型进行表面三角网格划分而得到的,就是用一种全由小三角形面片构成的多面体去近似还原CAD模型,所以三角形面片的个数与该模型的近似程度密切相关。三角形面片数量越多,近似程度越好,精度越高。三角形面片数越少,则近似程度越差。 用同一CAD模型生成,精度不同的STL文件,精度高者可能要包含多达上万个三角形面片,文件达数兆,而精度低者可能只用几百个三角形面片,面片多少对后续处理的时间和难度影响很大。
    STL数据格式是若干空间小三角形面片的集合,每个三角形面片用三角形的3个顶点和指向模型外部的三角形面片的法向矢量组成。STL数据格式有2种形式,一种是ASC形式,另一种是二进制形式。 二进制的数据格式要小得多,大约是ASC格式的1/6,但ASC格式的数据格式可以阅读并能进行直观检查。本文讨论STL数据格式的ASC形式。
    ASC数据格式的第一行为说明行,记录STL数据格式的文件名,从第二行开始记录三角形面片,首先记录三角形面片的法向量,然后记录环,依次给出3个顶点的坐标,3个顶点的顺序与该三角形面片法向量符合“右手法则”。这样一个三角形面片的信息记录完毕,开始记录下一个三角形面片,直到将整个模型的全部三角形面片记录完毕。 图1是ASC码输出形式的示例。
图1 STL数据格式的ASC形式(片断)
3 IV格式向STL格式转换
    3.1 数据转换的可行性分析
    IV数据格式和STL数据格式都是通过三维模型表面的三角网格化获得的,都是若干空间小三角形面片的集合。 也就是说,不论其具体形式如何,其数据格式本质上都是记录物体表面提取后的三角形网格。 因此我们考虑通过对IV数据格式进行三角网格信息读取来得到STL数据格式所需的信息,得到STL数据格式。
    3.2 IV数据格式的信息读取
    从IV数据格式中读取对物体表面进行三角化后所生成的三角形网格的顶点座标、法向矢量、顶点序列、法向序列等信息,将信息存入临时存储区。 其实现程序流程图如图2所示。
    3.3 STL数据格式的输出
    将STL数据格式所需的顶点坐标、法向矢量、顶点序列等信息从临时存储区中读取,以STL数据格式输出。其程序流程图如图3所示。

4 试验结果
    本文所介绍的IV数据格式向STL数据格式转换的方法已经完成了程序实现,并应用在虚拟油泥造型系统中,取得了预想的效果。
图4 某车型IV数据格式在Inventor软件中的显示效果

图5 该车型IV数据格式
    图4为某车型IV数据格式在Inventor软件中的显示效果,图5为该车型IV数据格式,通过本文所介绍的方法转换后输出的STL数据格式在UG软件中的显示效果。由此可见,本方法可以实现IV数据格式向STL数据格式的转换且无误差和数据损失,是一种理想的数据转换方法。
    5 结论
    本文以IV数据格式向STL数据格式转换为例介绍了一种数据转换方法,此方法通过读取IV数据格式中STL数据格式所需的信息完成2种格式的转换,此方法不产生误差且无数据损失,是一种理想的数据转换方法。 此方法可以推广到IV数据格式与其它数据格式的转换中,使得Open Inventor的数据输出接口更加丰富,更好地与其它CAD/CAM软件进行数据交流。



您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-3 05:51 , Processed in 0.014337 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表