
什么是OSGB文件 讲的是 OSGB(OpenSceneGraph Binary) 文件。它不是 3D Tiles 的 tileset.json,也不是单个网页模型格式,而是 OpenSceneGraph 生态里常见的二进制场景数据文件。国内很多倾斜摄影、实景三维和大场景模型交付时,会看到一批按目录组织的 .osgb 文件。
OSGB文件到底保存什么
OSGB可以理解为把 OpenSceneGraph 的场景图数据以二进制方式保存下来。实际项目里,一个OSGB数据集往往不是单个文件,而是一套目录,里面包含很多瓦片、模型节点和纹理资源。它常见的内容包括:
- 场景图节点:记录模型的层级、父子关系、变换和组织方式。
- 几何网格:保存三角面、顶点、法线、UV等渲染需要的数据。
- 材质和状态:例如材质、贴图引用、渲染状态等,具体保留程度取决于导出工具。
- 纹理资源:贴图可能被写进文件,也可能作为外部图片随目录保存,丢失后模型容易发白或显示异常。
- 切片层级:倾斜摄影数据常按空间范围拆成大量瓦片,方便桌面软件或转换工具分块读取。
OSGB和3D Tiles不是一回事
很多人把OSGB和3D Tiles混在一起,是因为倾斜摄影数据经常先以OSGB交付,再转换成3D Tiles用于网页端加载。两者的工作位置不同:OSGB更像原始或中间的三维场景数据,3D Tiles则是面向网页和大规模地理空间流式加载的发布格式。

| 对比项 | OSGB | 3D Tiles |
|---|---|---|
| 常见入口 | 一批 .osgb 文件和目录 | 通常从 tileset.json 开始 |
| 主要场景 | OSG/OpenSceneGraph软件、倾斜摄影处理流程、数据转换中间格式 | Cesium等网页三维场景、大规模地理空间数据流式加载 |
| 文件组织 | 依赖导出工具生成的目录和瓦片层级 | 规范化描述根节点、子瓦片、包围体、geometricError和内容文件 |
| 使用重点 | 检查目录完整、贴图是否随数据一起、瓦片是否缺失 | 检查tileset路径、坐标落位、LOD、跨域和浏览器性能 |
拿到OSGB数据后先检查什么
真实工作里,OSGB最容易出问题的不是“后缀不认识”,而是数据目录被拷贝漏了、贴图路径断了、瓦片层级不完整,或者坐标信息和目标平台不匹配。建议先做下面几步:
- 不要只拿一个
.osgb文件测试,先保留完整目录。 - 统计OSGB数量、贴图数量和总大小,看是否明显缺失。
- 抽取几块瓦片打开,确认模型几何和贴图都能显示。
- 如果后续要网页发布,再单独做OSGB转3D Tiles或GLB的流程,不要把OSGB当作网页最终格式。
实际目录通常怎么看
不同软件导出的目录命名不完全一样,但倾斜摄影数据经常会看到很多层文件夹、很多osgb瓦片和贴图资源。下面是为了说明检查思路的示意,不代表所有项目都长得完全一样:
OSGB数据目录示意
Data/
Tile_+000_+000/
Tile_+000_+000.osgb
Tile_+000_+000_L01_00.osgb
Tile_+000_+000_L01_01.osgb
Texture/
0001.jpg
0002.jpg
Tile_+000_+001/
Tile_+000_+001.osgb可直接用的检查命令
如果服务器或本地环境能用命令行,先做文件级检查,比直接问为什么打不开更容易定位问题。
检查OSGB和贴图是否都在
find ./Data -iname '*.osgb' | head
find ./Data -iname '*.jpg' -o -iname '*.png' | head
du -sh ./Data
# 如果只有少量osgb、没有贴图、目录体积明显不对,通常说明数据没拷完整用osgconv转成OSG文本片段排查
osgconv Tile_+000_+000.osgb Tile_+000_+000.osg
# 转成.osg后可以查看节点、Geometry、StateSet、纹理引用等线索
# 注意:这只是排查方法,不是让人手写完整OSGB文件OSGB适合什么,不适合什么
| 用途 | 是否适合OSGB | 原因 |
|---|---|---|
| 倾斜摄影数据交付和中间处理 | 适合 | 很多实景三维处理软件会输出或读取OSGB目录。 |
| 网页端直接给浏览器加载 | 通常不适合 | 浏览器端更常见的是3D Tiles、GLB/GLTF等发布格式。 |
| 长期归档原始项目 | 只保留OSGB不够稳 | 最好同时保存原始工程、处理参数、坐标说明和完整纹理资源。 |
| 快速判断数据是否缺失 | 适合做检查对象 | 通过目录、瓦片数量、贴图资源和抽样打开可以快速发现问题。 |
常见误区
- 把OSGB等同于3D Tiles:OSGB可以作为转换来源,但3D Tiles有自己的tileset.json和瓦片规范。
- 只上传一个osgb测试:很多数据依赖同目录其他瓦片和纹理,单文件测试不能代表完整结果。
- 模型能打开就认为能上线:上线还要看坐标、层级、贴图、转换结果、加载性能和移动端内存。
- 忽略坐标和高度:倾斜摄影数据进入网页或GIS场景时,坐标、原点和高度基准经常影响落位。
常见问题
OSGB文件能直接改吗?
不建议直接手工修改。OSGB是二进制场景数据,更适合用OpenSceneGraph相关工具或三维处理软件读取、转换和重新导出。

OSGB转3D Tiles后为什么位置不对?
常见原因是坐标系、原点、高程基准或转换参数没有处理一致。先用小范围数据试转,确认落位正确后再批量转换。
OSGB打开后没有贴图怎么办?
优先检查贴图是否随目录一起复制、路径大小写是否一致、导出时是内嵌贴图还是外部引用。
实际建议
判断OSGB数据时,先确认它是不是完整目录,再检查瓦片、纹理、坐标和抽样打开效果。如果目标是网页端发布,OSGB通常只是转换来源,需要再生成3D Tiles或其他浏览器友好的格式;如果目标是桌面三维处理,则重点保留完整目录和贴图资源,避免只复制单个osgb文件。

参考资料
下面这些公开资料用于核对概念和术语,正文已经重新整理为本站自己的说明和操作判断。