jt格式文件读取,osg显示插件更新
osgdb_jt
最近还是更新了一下 osgdb_jt 插件。解码jt格式核心库jt_toolkit,通过静态链接到Plugin jt产生osgdb_jt插件,使得osg可以可视化jt格式文件。
用法
osg为OpenSceneGraph-3.6.3官方源码编译,只有osgdb_jt为新增编译文件。
当 osgDB::readNodeFile(fileName) 遇到后缀为jt格式的文件时,会自动以osgdb_jt的形式去寻找插件,所以在osg源码部分没有任何修改。
osgdb_jt 仅依赖zlib.dll, liblzma.dll 两个文件。
下载地址:osgviewer_with_jt
用法举例:比如 osgviewer ElectricRazor_assm.jt
相比之前的osgdb_jt插件,改进如下:
- 在接口层面放弃模拟西门子官方JT Open库,重心放在jt格式解析上,拆掉在jt格式节点之上的一层架子
- 接口层面增加 遍历访问器,在Dump()打印信息输出更友好
- 当前仅支持单一文件形式的JT文件,相比之前还支持外部JT文件是一个退步,不过这里不理会这个
- 修订在JT9.5格式上解码的缺失以及遇到的错误,现在大部分JT9.5格式文件均可正常打开
- 实现对JT文件中材质节点的支持,会有颜色显示
- 升级可支持读取VERSION 10的JT文件,但是由于在Int32CDP压缩数据读取上遇到问题,所以没有哪个JT10版本的文件会成功可视化
如果模拟官方JT Open Toolkit,认为可以更好与CAD模型数据比对(Assembly, Part, Instance的方式),体现形式会更友好。但这种表述并不贴近JT格式内容,需要在这之上再架构一层。我这次是重新整理对原有代码的较大幅度升级,重心放在格式的解析上,放弃在这之上的架构叠加,以减少工作量与精力投入;估计这个库用得人也不会多,所以也不投入JT Writer,不过如果再去做,会比原来的底层更健壮友好。
仅实现了三角网格节点的读取,没有对线框,JT BREP, X_T BREP,PMI等节点或段的读取。
关于 Int32 Compressed Data Packet 数据的读取问题,在JT10版本上,基本上遇到算术编码之后,成功读取一二次之后就会遇到难以解释的问题,仔细比对JT文档认为代码没问题呀!搞不清楚,目前也没得参考的地方,没精力耗在这个上面了,存疑吧,以后有机会了再考虑修改。
更新 2021/10/25
本项工作已DLL库形式发布在 https://gitee.com/bitbybit3d/jt_toolkit, 包括traverse和osg jt读取插件。
作者: bitbybit3d@163.com