unity 加载倾斜摄影-C#解析osgb(一)

article/2025/11/6 23:19:03

下载 https://download.csdn.net/download/WantFK/87009338https://download.csdn.net/download/WantFK/87009338
1.提取osgb的图片信息\mesh顶点 \UV\ 三角序列\下一级name\bounds\视距 和保存  (提取

        目的 解析osgb的流程过于麻烦 真正用地到的就这几个数据

2.unity 制作初始瓦片预制件 整理为空间四叉树 优化索引                                            (预制件 

        目的  相机看向的部分总是只有一部分而看不到的地方为了减少GPU压力需要进行隐藏

        同时如何快速判断相机看向的目标是哪些

        瓦片加载时的索引优化(之前都是无脑遍历)

        提前计算每个瓦片的bounds(之前都是利用中心点和半径) 四叉树叶子的bounds和更精准的个体瓦片bounds

3.读取并使用                                                                                                                (解压

4.数据结构分析

        

         

 

        将所有数据存为一棵四叉树 

        主干TreeFour 

        自身bounds 和四个叶子的bounds 四个叶子对象

        叶子Leaf

         自身 下一级四个叶子的bounds和对象 每个子叶子包含的个体

        我这里只分了两层 再多就不合适了反而增加了负担

每帧执行肯定不可取 做一些延迟 大概比例在适当位置相机移动一个瓦片大小的距离

 void FixedUpdate(){//延迟处理 当相机位置移动量偏差为10或者旋转量为~ 进行更新if ((CameraMin.transform.position - oldCamera_position).magnitude > 10)//10 实时检测间隔   || !oldCamera_rotation.Equals(CameraMin.transform.rotation)按需要添加旋转 旋转如何设置间隔?{slope = Mathf.Tan(CameraMin.fieldOfView * Mathf.Deg2Rad * 0.5f);GeometryUtility.CalculateFrustumPlanes(CameraMin, _currentFrustum);oldCamera_position = CameraMin.transform.position;//oldCamera_rotation = CameraMin.transform.rotation;// 先进行加载 隐藏 StartCoroutine(All_LoadLayer());//卸载 队列 1 储存卸载需求 卸载综量  }

        StartCoroutine(All_LoadLayer());

     找到相机看向的瓦片层级个体集合 通过遍历判断AABB是否在相机范围内储存List<user_osg>

public class user_osg 
{public float distanceold = 0;           //记录上次的距离 减少循环public int isOnselect = 0;              //记录是否离开过视角 减少循环public Bounds _bounds;public Transform ThisObj;               //初始瓦片实体public Transform _pagedDatas;           //关联下一级public Transform ThisTransform;         //自己public user_osg(Transform B, Transform A,Transform C, Bounds _bounds){this._pagedDatas = B;this.ThisObj = A;this.ThisTransform = C;this._bounds = _bounds;}
}

        判断个体是否在相机范围内(虽然和上边已经判断出大概  这里可以取舍 选择默认在相机内和再次判断 各有优劣)

        结果存在

         //加载栈 后进先出 把数据平摊到每帧执行
    Stack<Transform> TaskDels1 = new Stack<Transform>();

          加载栈 

 if (!isLoading){if (TaskDels1.Count == 0) return;LoadWork();}}async void LoadWork(){isLoading = true;await RequestLoadAndUnload(TaskDels1.Pop());isLoading = false;//TaskDels1.Pop();}

        (整个场景你没有设计卸载队列  现阶段如果把没个瓦片都加载到最后内存实际使用为 总文件的2/3大小  这里只加载了17到19层级)
        

一 提取osgb信息并写入新文档

1.打开ReaderOSGB.cs 组件 关闭Ceshis.cs

 

 设置读取文件目录 onclickbutton("E:/接收文件/osgb/1");

 文件写入目录 可以自定义 (不过最好存在项目外

PathName = Path.Combine(Path.Combine(Application.dataPath, "../"), "OsgbData") ;

需要手动设置

0.  ReaderOSGB.cs 173 出可以输出空文件的目录       

 if (!File.Exists(rootFileL + ".osgb")){Debug.Log(rootFileL+"名字异常");break;}

1.ReaderOSGB.cs 需要根据实际填写  初始瓦片层级(例如 17 以文件不分叉同时较清晰程度) 和你要的最终层级 (19 为止 需要的往上调)  osgb结构的初始层级(14 有的文件都不一致 所以需要手动调 15 16都有可能)

2.

  InsideFuntion(scencepatent, a, PathName); 初始瓦片

  InsideFuntionQI(scencepatent, a, PathName);17层瓦片

分别输出 一块输出数据会混乱

3.先输出  InsideFuntionQI(scencepatent, a, PathName);17层瓦片  如果debug 数据异常 有可能数据文件夹为空需要手动删除 不然会卡主进程

二 预制件 

如果加载的是osgb文件集 需要调整每个模块的位置 

具体步骤写的不是太详细 有需求的话留言吧


http://chatgpt.dhexx.cn/article/jSGTJn7g.shtml

相关文章

osg加载osgb数据_PCM点云数据处理软件功能使用第十六弹

好久不见!今日为大家带来PCM点云数据处理软件功能使用第十六弹——建筑物应用,快跟小编一起学习吧! 该菜单包含两个建筑物应用模块:建筑点云提取、建筑简易模型一 建筑点云提取 建筑物点云提取输入数据为原始点云文件和地面文件,利用法向量对非地面点进行建筑物墙面点云检…

UE加载osgb倾斜摄影数据

1.支持加载大疆智图和CC导出的osgb格式倾斜摄影数据 2.支持编辑器模式&#xff08;不运行&#xff09;加载预览特定精度级别的osgb数据 3.运行时多线程加载osgb文件&#xff0c;分页LOD算法动态加载卸载&#xff0c;内存占用稳定 4.支持海量的osgb数据量加载&#xff0c;支持…

Osgb转3DTiles工具

三维倾斜摄影生产主要格式为Osgb&#xff0c;目前三维模型主要展示场景为web&#xff0c;大部分使用框架都是Cesium库&#xff0c;格式为 3DTiles&#xff0c;目前市面上osgb转3DTiles的软件已经有好几个&#xff0c;付费免费都有。 先说免费软件&#xff1a; 1、CesiumLab …

osgb倾斜模型顶层合并

经过多年的发展&#xff0c;倾斜摄影模型技术已经成熟&#xff0c;在智慧城市、社区管理&#xff0c;安防演练模拟等应用场合非常多&#xff0c;效果也非常好。 倾斜模型顶层合并是一个比较复杂的问题&#xff0c;常规上倾斜模型制作软件&#xff0c;倾斜模型24级别合并到12级…

Threejs加载倾斜摄影OSGB数据

个人主页&#xff1a; 左本Web3D&#xff0c;更多案例预览请点击》 在线案例 个人简介&#xff1a;专注Web3D使用ThreeJS实现3D效果技巧和学习案例 &#x1f495; &#x1f495;积跬步以至千里&#xff0c;致敬每个爱学习的你。获取模型或源码请点赞收藏加留言&#xff0c;有问…

数据处理-倾斜摄影OSGB合并根节点

数据处理-倾斜摄影OSGB合并根节点 背景介绍 web三维地图引擎我们使用的是cesium&#xff0c;因此我们使用的倾斜摄影数据(OSGB)会转换成3DTiles(.b3dm)进行加载。如果倾斜摄影的范围很大或者数据量大&#xff0c;有不少的建筑物什么的&#xff0c;默认转换的3Dtiles数据在前台…

UE5加载osgb倾斜摄影数据

1.支持加载大疆智图和CC导出的osgb格式倾斜摄影数据 2.支持编辑器模式&#xff08;不运行&#xff09;加载预览特定精度级别的osgb数据 3.运行时多线程加载osgb文件&#xff0c;分页LOD算法动态加载卸载&#xff0c;内存占用稳定 4.支持海量的osgb数据量加载&#xff0c;支持…

osgb转3dtiles之数据篇

前不久&#xff0c;终于对osgb以及3dtiles的数据结构有了足够的了解&#xff0c;成功地利用FME将osgb数据转换成了3dtiles数据。于是&#xff0c;我开心地决定先来写一下如何将osgb转换成3dtiles数据。 为了让大家能够比较详细的了解这两个数据格式&#xff0c;该系列文章一共…

osgb转json_cesuim加载倾斜摄影OSGB三维数据完整过程(超详细)

1、得到正确原始.osgb格式数据; (1)倾斜摄影数据仅支持 smart3d 格式的 osgb 组织方式, 数据目录必须有一个 “Data” 目录的总入口, “Data” 目录同级放置一个 metadata.xml 文件用来记录模型的位置信息。 (2)每个瓦片目录下,必须有个和目录名同名的 osgb 文件,否则无法…

GIS数据处理-OSGB转换3dTiles

GIS数据处理-OSGB转换3dTiles 介绍 Open Scene Gragh Binary是OSGB的全称&#xff0c;这里的Binary是二进制的意思。 目前市面上生产的倾斜模型&#xff0c;尤其ContextCapture Cente处理的倾斜摄影三维模型数据的组织方式一般是二进制存贮的、带有嵌入式链接纹理数据&#x…

OSGB 倾斜摄影数据生产完成后裁剪模型问题

在OSGB生产完成后&#xff0c;可能想要裁剪模型&#xff0c;只要其中的一部分模型数据。这里介绍两种我了解到的方法。 1. 使用商业软件 据了解&#xff0c;大部分此类软件都是国产的软件&#xff0c;需要购买使用。例如模方&#xff0c;但是有一个月试用时间&#xff0c;优点…

OSGB数据文件解读

1、OSGB数据的组成 1.1 如上图所示倾斜模型分块构成。在Data目录下有编号000&#xff0c;001&#xff0c;002&#xff0c;003等。 每一个文件夹代表了一个分块。 1.2 每一个分块文件夹下有若干个.osgb文件构成 如上图所示第一个.osgb文件的文件名和文件夹名相同&#xff0c;代…

倾斜摄影OSGB转换为3DTiles

倾斜摄影OSGB转换为3DTiles 情深不寿&#xff0c;慧极必伤。谦谦君子&#xff0c;温润如玉。3DTiles validator 官方提供的3DTiles检验工具及相关工具箱。 feature table binary must be aligned to an 8-byte boundary 时代变迁&#xff0c;3DTiles b3dm 字节对齐由以前的…

OSG 读取OSGB倾斜数据

OSG 读取OSGB倾斜数据 OSGB数据是一个四叉树结构&#xff0c;本文测试使用OSG加载OSGB倾斜摄影测量数据。 示例数据 Code 1、遍历所有osgb数据文件生成空间索引 2、通过建立的空间索引加载数据 #include <iostream> #include <string> #include <filesystem…

osgb加载

背景 三维引擎 本文要介绍的three.js和cesium.js是web端三维引擎&#xff0c;基于WebGL开发的&#xff0c;WebGL又是OpenGL ES的B端API封装集&#xff0c;openGL ES是 openGL的一个子集&#xff0c;OpenGL是 Open Graphics Library 是个定义了一个跨编程语言、跨平台的编程接口…

实景三维的基石-osgb

前言 2022年2月24号&#xff0c;自然资源部办公厅印发《关于全面推进实景三维中国建设的通知》。 其中我们可以发现在城市级实景三维建设中提出了倾斜摄影影像&#xff0c;描述如下&#xff1a; 《二是城市级实景三维建设。国家层面将整合省级行政区域基础地理实体数据&#xf…

倾斜摄影三维模型OSGB格式简化(压缩、优化)

倾斜摄影三维模型OSGB格式简化&#xff08;压缩、优化&#xff09; 文章目录 倾斜摄影三维模型OSGB格式简化&#xff08;压缩、优化&#xff09;前言一、OSGB格式二、当前osgb简化/压缩的主要方式1.第一种 输出osgb格式2.第二种 输出其他格式 三、我的理解**有兴趣的同学可以加…

倾斜摄影测量数据osgb格式加载优化(以supermap为例)

一、OSGB格式介绍 1. osgb osgb全称为Open Scene Gragh Binary,是OSG引擎的一种支持三维数据的二进制存储格式。 2. cc软件生成osgb数据目录结构 其中metadata.xml为元数据文件&#xff0c;含倾斜摄影测量数据的坐标及原点等信息。Data为倾斜摄影测量数据的存储文件夹&…

OSGB格式解析

主要介绍倾斜摄影数据OSGB二进制数据的解析&#xff0c;首先简单介绍一下OpenSceneGraph相关技术&#xff0c;并介绍倾斜摄影数据的组织结构&#xff0c;着重分析OSGB格式的相关字段&#xff0c;最后逐字节对OSGB数据进行解析并通过OpenSceneGraph对数据进行可视化&#xff0c;…

如何介绍自己测试过的项目

测试人员在找工作的过程中&#xff0c;通常有一个问题是很难绕开的。就是要如何向别人介绍自己之前做过的项目。下面我们就这个问题简单的做一些分析。 要解决这个问题&#xff0c;大体上可以分为如下几个步骤&#xff1a; 1、对项目进行基本介绍 2、说明自己负责测试的模块…