本发明属于计算机应用领域,特别涉及一种OSGB数据在AutoCAD中渲染的方法。

背景技术:

倾斜摄影实景模型已经被广泛应用于各个领域,OSGB数据格式作为倾斜摄影实景模型的通用格式,自带超过20级金字塔级别的模型精度等级,使用该数据格式,可以充分利用LOD(多层次细节结构)的优势,加快数据加载速度,展示真实效果的三维实景模型。而CAD并不直接支持OSGB数据格式,这使得国土、规划、景观等单位无法使用倾斜摄影实景模型。

技术实现要素:

本发明的目的是针对现有CAD不直接支持OSGB数据格式的渲染缺点,提供一种在CAD中以多层次细节结构渲染OSGB数据格式的方法。

基于CAD平台的OSGB数据渲染的方法具体步骤为:

(1)读取OSGB文件夹下所有层级OSGB数据文件。

(2)以单个OSGB数据文件为单位,提取其中的模型以及纹理数据,根据模型中心点经纬度值,对模型顶点坐标进行偏移校正,同时将校正后的模型数据、纹理数据持久化到磁盘。

(3)根据步骤(2)中的模型和纹理数据,生成CAD中的三维模型,以DWG格式存储,以上完成OSGB模型数据到DWG模型数据转换。

(4)以步骤(3)完成的DWG文件为基础,构建索引;读取每一个DWG文件,获取其包围盒,将文件路径与包围盒坐标写入到文本索引中;同时,合并最顶层DWG文件的包围盒,形成本次索引构建的最小包围盒,将该包围盒坐标写入文本索引。

(5)以步骤(4)创建的索引文件,构建LOD结点。对结点进行分类,如果没有子结点,则划分为叶结点;如果包含子结点,则划分为组结点;同一文件夹下的所有结点,则组成为一个LOD结点;将叶结点关联到组结点下,组结点关联到LOD结点下,所有LOD结点关联到一个组结点下,形成一个LOD逻辑树。

(6)获取CAD三维视图下视距与可视范围。

(7)通过步骤(6)获取的视距确定渲染的层级,可视范围确定具体渲染数据块;根据视距和可视范围对LOD逻辑树进行刷选,确定需要显示的数据块。

(8)将步骤(7)刷选出的数据块结点,进行渲染,拷贝其对应DWG文件中的模型至当前文档,完成渲染。

本发明使用上述技术方案,对OSGB数据提取其中的模型、纹理数据,并将该部分数据缓存为DWG格式模型数据,通过构造LOD树,实现结点数据的逻辑分级。结合CAD中的视距与可视范围对LOD树中的结点进行刷选,确定需要渲染的结点,从而完成OSGB数据分级渲染,实现在CAD中对OSGB数据进行分级渲染的效果。CAD作为辅助制图工具被国土、规划、测绘等部门广泛使用,在CAD中渲染倾斜摄影实景模型的需求也越来越强烈。

本发明弥补了CAD中不支持OSGB数据渲染的缺点,实现了在CAD中对OSGB数据分级渲染的要求,具有很好的市场推广价值。

附图说明

图1 是本发明中构建的LOD逻辑树示意图。

图2 是本发明的技术流程图。

图3 是本发明中结点类图设计示意图。

具体实施方式

实施例:

下面结合附图与实施例对本发明作进一步详细描述。

如图2所示,对每个独立的OSGB结点数据,进行解析,对解析的结果数据(模型数据、纹理图片)进一步缓存为DWG格式模型数据文件;选取需要显示的OSGB结点数据,根据这些缓存的DWG文件构建索引文件;获取索引文件中每个条目(对应一个结点)的信息,包括缓存文件相对路径、缓存文件在世界坐标下的包围盒。根据结点组织规则,构建LOD树逻辑结构,该结构如图1所示;创建LOD树访问结点,用于刷选LOD树中的结点,该访问结点附带CAD三维视图中视距与可视化范围,如果树结点层级在视距范围内,且包围盒与可视范围重叠,则该结点将被收集起来,用于后面渲染;将收集后的结点进行渲染。

以下分别详细说明各个实现步骤。

(1) OSGB数据解析与缓存包括以下几个步骤:

步骤1 模型数据提取;

步骤2 纹理图片提取;

步骤3 生成DWG缓存。

具体实施步骤如下:

步骤1 模型数据提取:利用OSG开发包对OSGB结点数据进行加载;遍历所有加载的OSGB结点,获取其中的顶点数据与纹理映射坐标;根据倾斜摄影数据提供的metadata.xml中的信息对顶点数据进行偏移计算,将这两部分信息保留在内存中。

步骤2 纹理图片提取:利用OSG开发包对OSGB结点数据进行加载;遍历所有加载的OSGB结点,获取其中的纹理图片;根据原始OSGB文件的路径,将纹理图片保存到正确的位置(以该OSGB文件上一级文件夹为起始相对目录)。

步骤3 生成DWG缓存:利用CAD开发包ARX,创建一个AcDbSubDMesh对象;

将步骤1顶点数据赋值给AcDbSubDMesh;创建一个材质对象,并将纹理赋值为步骤2的纹理图片,将该材质添加到CAD模型空间中;将该AcDbSubDMesh对象与材质结合,赋值纹理坐标和材质给该对象,完成OSGB模型数据的DWG格式缓存。

(2) 索引文件创建包括以下几个步骤:

步骤1 OSGB结点文件夹选取;

步骤2 结点基本元信息提取;

步骤3 生成索引文件。

具体实施步骤如下:

步骤1 OSGB结点文件夹选取:选取需要进行渲染的OSGB结点文件夹,这部分OSGB数据文件将组合成一个索引文件,未在该索引文件中的OSGB文件将不会被渲染。

步骤2结点基本元信息提取:以索引文件为基准,获取OSGB文件对应DWG文件相对索引文件的相对路径;获取该DWG的包围盒坐标,以如下形式表示[(MinX,MinY,MinZ)、(MaxX,MaxY,MaxZ)];对于顶层DWG文件,合并其包围盒,形成本索引的最小包围盒。

步骤3生成索引文件:根据步骤2获取的单个OSGB文件元信息、索引本身包围盒信息、索引名称等信息,以JSON格式持久化到磁盘。

(3) LOD树创建包括以下几个步骤:

步骤1 面向对象的结点类设计与实现;

步骤2 结点寻址与独立LOD构建;

步骤3 LOD树构建。

具体实施步骤如下:

步骤1 面向对象的结点类设计与实现:以面向对象的思想设计叶结点、组结点、LOD结点,其中叶节点至少包含结点名称、结点所在层级、结点所在网格号、父结点所在网格号;组结点至少包含保存子节点的列表;LOD结点至少包含每个结点可视化范围列表,设计的类图关系参见附图3。

步骤2结点寻址与独立LOD构建:对索引文件中所有文件路径进行升序排序;解析每个文件名,获取层级以及网格号、父网格号;根据父层级以及父网格号进行寻址,找到父结点,完成独立LOD构建。

步骤3 LOD树构建:将所有独立的LOD组合起来,关联在一个组结点下,完成整个LOD树构建,构建完成的LOD树可参见附图1。

(4) 结点刷选与渲染包括以下几个步骤:

步骤1视距与可视范围获取;

步骤2 LOD树访问结点构建;

步骤3 结点渲染。

具体实施步骤如下:

步骤1视距与可视范围获取:视距被定义为屏幕长或宽在实景模型平面的投影长度;获取索引文件包含的结点的地形平面,根据整个模型的包围盒确定视距变化是由屏幕长度决定还是宽度决定;可视范围为一个以屏幕中心点在世界坐标的投影点为中心的球体,其直径为屏幕长度在世界坐标的投影长度。

步骤2 LOD树访问结点构建:构建一个LOD树的访问结点,该结点用于收集每次需要渲染的结点,该结点至少包含一个用于获取视距的接口,该接口返回步骤1的视距;该结点同时收集下一次需要隐藏的结点,判断依据是该结点与可视范围有空间重叠。

步骤3结点渲染:对步骤2收集的结点进行渲染,根据被渲染结点的缓存文件(DWG文件)路径将模型数据拷贝到当前模型空间;对步骤2需要进行隐藏的结点进行删除操作。通过上述步骤即可完成OSGB数据在CAD中的分级渲染。

osgb转json_基于CAD平台的OSGB数据分级渲染的方法与流程相关推荐

  1. 云计算机是一种基于资源,一种基于云平台和云计算的资源管理系统和方法

    一种基于云平台和云计算的资源管理系统和方法 [技术领域] [0001]本发明涉及云计算系统,尤其涉及一种基于云平台和云计算的资源管理系统和方法. [背景技术] [0002]云计算(Cloud Comp ...

  2. 基于多核平台优化的OGRE 3D渲染引擎

    基于多核平台优化的OGRE 3D渲染引擎 陈天洲1+,陈学亮1, 施青松1 1(浙江大学计算机学院,浙江杭州,310027) 摘 要:近年来,随着计算机体系结构的发展,多核平台的应用越来越广泛.多核平 ...

  3. “基于云平台的移动终端实时渲染”学习参考

    "基于云平台的移动终端实时渲染"学习参考 之前在看"基于云平台的移动终端实时渲染"时,遇到了很多问题.在解决这些问题的过程中,查阅了大量的资料.此处记录下当时所 ...

  4. 空间注意力机制sam_一种基于注意力机制的神经网络的人体动作识别方法与流程...

    本发明属于计算机视觉领域,具体来说是一种基于注意力机制的神经网络的人体动作识别的方法. 背景技术: 人体动作识别,具有着非常广阔的应用前景,如人机交互,视频监控.视频理解等方面.按目前的主流方法,可主 ...

  5. 基于iData平台的数字城市整理建库方法

    广东南方数码科技有限公司  510665 简介:本文基于新一代数据生产平台--南方iData数据工厂,依托数字县市地理空间框架建设,结合实际地形图入库工作,对新的图库一体化整理建库模式进行了阐述.此种 ...

  6. melis系统c800_一种基于Melis平台的卡拉OK系统的制作方法

    本实用新型涉及一种卡拉OK系统,具体是一种基于Melis平台的卡拉OK系统. 背景技术: 随着经济的快速发展,人们在追求物质生活上的富足外也更加注重精神的富足,由此就催生了一系列的娱乐方式,音乐就是其 ...

  7. 基于软件无线电平台的电磁信号数据表征方法

     [摘  要]随着信息时代的快速发展,电磁频谱环境日益复杂,为了在有限条件下实现信息的高效传输,对电磁信号数据信息的感知与表征显得格外重要.重点研究了基于软件无线电平台的数据表征方法与实现.首先,给出 ...

  8. 超调 matlab m文件,基于Matlab平台实现的复合轴控制系统超调控制方法与流程

    本发明属于复合轴控制技术领域,具体涉及一种基于Matlab平台实现的复合轴控制系统超调控制方法. 背景技术: 复合轴控制是近年来一种新兴的控制方法,其主要借助快速反射镜响应快.精度高的特点补偿常规控制 ...

  9. bim 导入unity_一种基于BIM和Unity3d的3D物联网可视化人机交互方法与流程

    本发明涉及到建筑工程领域和计算机软件领域,采用目前较为成熟的autodeskrevit平台进行3d模型的建立,unity3d平台进行交互设计,具体设计为一种基于unity3d和bim的3d物联网可视化 ...

  10. FLAC3D可视化后处理matlab,一种基于Matlab的由Midas导入Flac3D的模型识别方法与流程...

    本发明涉及岩土工程的仿真模拟研究领域,具体涉及一种基于Matlab的由Midas导入Flac3D的模型识别方法. 背景技术: 随着我国近几年经济的快速发展和基础设施等的大力投资,涉及复杂地质环境下的岩 ...

最新文章

  1. java unsafe获取指针_【实战Java高并发程序设计 1】Java中的指针:Unsafe类
  2. Service Intent must be explicit
  3. 登录账号,玩猜数字游戏
  4. 常考数据结构与算法:实现二叉树先序,中序和后序遍历
  5. 我在PMCAFF,感觉身体被掏空
  6. poj 1634 Who's the boss?
  7. 微信支付宝服务器在哪里,支付宝支付与微信支付服务端回调notify_url数据的区别...
  8. 【音视频安卓开发 (三)】OpenGL ES 直接绘制YUV
  9. node.js将buffer对象转换为json对象
  10. Python学习:day20正则表达式
  11. 恒生电子笔试题:LoopMove
  12. 阿龙学堂-Java手机号码归属地查询
  13. revit二次开发-创建组
  14. 维也纳新生生活指南(2018春季版)
  15. 使用HbuilerX运行微信小程序到微信小程序模拟器
  16. 青藤 #10064 奇怪的电梯
  17. IDEA模块名后面中括号中内容与模块名不一致的问题
  18. ThinkPHP5 实现短信验证码注册功能
  19. 为什么打印还要另存为_打印的时候为什么显示文件另存为
  20. 电报注册网络代理_如何在电报开放网络(TON)中开发和发布智能合约

热门文章

  1. matlab 数字带圈,LaTeX - 带圈数字
  2. 幼儿园门口摆个考勤机 家长接孩子得打卡
  3. 语音芯片,语音合成芯片,嵌入式语音合成软件的区别
  4. VC2012 ActiveX 控制台打印调试
  5. 2021最新15个App跨平台开发框架
  6. emu8086汇编——字符串匹配算法程序
  7. K3CLOUD业务系统编码规则设置
  8. C# 中intptr用法
  9. 51单片机汇编学习笔记1——内部结构
  10. uniapp的选择收货地址