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文档认为代码没问题呀!搞不清楚,目前也没得参考的地方,没精力耗在这个上面了,存疑吧,以后有机会了再考虑修改。

jt格式文件读取,osg显示插件更新的更多相关文章

  1. jt格式文件与3D数据压缩

    介绍 JT是西门子公司推出的PLM通用三维格式,设计为一个开放.高效率的.紧凑,持久性存储的产品数据格式,用于产品可视化.协作和CAD数据共享.JT文件格式包括多方面的数据,以及对曲面边的精准表示,产 ...

  2. jt格式文件与网格压缩

    jt格式文件与网格压缩 介绍 jt是一种3D数据格式,主要用于工业,产品可视化,数据交换,并且西门子在2012推动jt成为ISO国际标准.在文件尺寸方面,采用了不少专门的压缩方法,比较轻量化. jt文 ...

  3. go学习之文件读取问题(需更新)

    go学习之文件读取问题(需更新) 一,问题: 今天做一个GO广度迷宫问题时,出现了一个奇怪的问题. 就是通过fmt.Fscanf()读取文件时,每行末尾多出一个0. 二,问题代码: 1,输入文件maz ...

  4. [自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计

    本文将介绍在本人JOS中实现的简单图形界面应用程序接口,应用程序启动器,以及一些利用了图形界面的示例应用程序. 本文主要涉及以下部分: 内核/用户RW/RW调色板framebuffer共享区域 8bi ...

  5. 《python核心编程》笔记——文件的创建、读取和显示

    创建文件(makeTextFile.py)脚本提醒用户输入一个尚不存在的文件名,然后由用户输入文件每一行,最后将所有文本写入文本文件 #!/usr/bin/env python 'makeTextFi ...

  6. 使用C#压缩解压rar和zip格式文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  7. [原][资料整理][osg]osgDB文件读取插件,工作机制,支持格式,自定义插件

    参考: osgPlugins相关 osg读取文件的原理(插件工作机制) 当使用osgDB读取文件时,会自动根据文件的扩展名来到插件目录中寻找相应的插件,来实现. 比如: osgviewer cow.o ...

  8. 使用CadLib实现CAD(dxf、dwg格式)文件的读取和显示 【转】

    参考文章:CadLib 3.5 documentationhttps://www.woutware.com/doc/cadlib3.5/Index.aspx 读取:定义DxfModel类型的变量mod ...

  9. [OSG][转]osg格式文件

    转自:http://blog.csdn.net/timothyfly/article/details/7826139 osg格式文件中如何处理多个节点共享一个子节点 下面一段程序中,共有三个Group ...

随机推荐

  1. 微信支付 第三篇 微信调用H5页面进行支付

    上一篇讲到拿到了 预支付交易标识 wx251xxxxxxxxxxxxxxxxxxxxxxxxxxxxx078700 第四步,是时候微信内H5调起支付了! 先准备网页端接口请求参数列表 微信文档中已经明 ...

  2. 易优CMS:compare的基础用法

    [基础用法] 名称:compare 功能:简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法 都一致. 语法: {eyou:比较标签 name='变量' value ...

  3. HTML+CSS基础知识点简要汇总(思维导图)

  4. Flutter 快速上手定时器/倒计时及实战讲解

    本文微信公众号「AndroidTraveler」首发. 今天给大家讲讲 Flutter 里面定时器/倒计时的实现. 一般有两种场景: 我只需要你在指定时间结束后回调告诉我.回调只需要一次. 我需要你在 ...

  5. vmware vsphere client 虚拟机动态添加磁盘

    0x00 事件 为了在虚拟机添加了磁盘之后,不重启机器加载新磁盘. 如上图,添加了一块 10G 的磁盘之后. 在虚拟机中是看不到新添加的磁盘: 0x01 解决 运行如下命令,通过重新扫描 SCSI ( ...

  6. [20191127]表 full Hash Value的计算.txt

    [20191127]表 full Hash Value的计算.txt --//曾经做过表full Hash Value的计算,当时我是通过建立简单的schema以及表名的形式,使用hashcat破解o ...

  7. 人体分析Demo-百度API

    本示例是采用Delphi 7 调用百度人体分析API:首先说明一下,怎么创建测试应用. 1.  登录百度云官网 https://cloud.baidu.com/ 当然需要一个百度账号 2.  进入管理 ...

  8. oracle 查询两个字段值相同的记录

    select A.* from tb_mend_enrol A, (select A.Typeid, A.address from tb_mend_enrol A group by A.Typeid, ...

  9. 如何从 ASH 找到消耗 PGA 和 临时表空间 较多的 Top SQL_ID (Doc ID 2610646.1)

    如何从 ASH 找到消耗 PGA 和 临时表空间 较多的 Top SQL_ID (Doc ID 2610646.1) 适用于: Oracle Database - Enterprise Edition ...

  10. [PHP] 编译安装swoole

    不知道为啥,家里的网访问不了pecl.php.net,这也就没有办法直接使用pecl install swoole安装swoole,也可以直接进行编译安装 在git仓库下载源码 https://git ...