OSG 读取OSGB倾斜数据

osg学习(四十五)有关倾斜摄影的osgb、gltf、3DTiles格式 1、osgb是倾斜摄影的格式,osg可以直接读取osgb文件 OSGB file is an OpenSceneGraph Binary Scene Data. The OpenSceneGraph is an open source high performance 3D graphics toolkit, used by application developers in fields such as visual simulation, games, virtual reality, scienti 阅读详情

OSG 读取OSGB倾斜数据

OSGB数据是一个四叉树结构,本文测试使用OSG加载OSGB倾斜摄影测量数据。

示例数据

在这里插入图片描述

Code

1、遍历所有osgb数据文件生成空间索引
2、通过建立的空间索引加载数据

#include <iostream>
#include <string>
#include <filesystem>

#include <osgViewer/Viewer>
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>

using namespace std;


static void findDir(const string& dir, vector<string>& subDirs)
{
    //
    subDirs.clear();

    for (auto& i : filesystem::directory_iterator(dir)) {
        if (i.path().string() == "." || i.path().string() == "..")
            continue;
        if (i.is_directory()) {
            subDirs.push_back(i.path().string());
        }
    }
}

static std::string DirOrPathGetName(std::string filePath)
{
    size_t m = filePath.find_last_of('\\');
    if (m == string::npos)
    {
        return filePath;
    }

    size_t p = filePath.find_last_of('.');
    if (p != string::npos && p > m)		
    {
        filePath.erase(p);
    }

    std::string dirPath = filePath;
    dirPath.erase(0, m + 1);
    return dirPath;
}

void createObliqueIndexes(std::string fileDir)
{
	string dataDir = fileDir + "/Data";

	osg::ref_ptr<osg::Group> group = new osg::Group();
	vector<string> subDirs;
	findDir(dataDir, subDirs);

	for (size_t i = 0; i < subDirs.size(); i++)
	{
		string name = DirOrPathGetName(subDirs[i]);
		string path = subDirs[i] + "/" + name + ".osgb";

		if (!filesystem::exists(path))
			continue;
		osg::ref_ptr<osg::Node> node = osgDB::readNodeFile(path);
		osg::ref_ptr<osg::PagedLOD> lod = new osg::PagedLOD();
		if (!node.valid())
			continue;
		//auto bs=node->computeBound();
		auto bs = node->getBound();
		auto c = bs.center();
		auto r = bs.radius();
		lod->setCenter(c);
		lod->setRadius(r);
		lod->setRangeMode(osg::LOD::RangeMode::PIXEL_SIZE_ON_SCREEN);
		osg::ref_ptr<osg::Geode> geode = new osg::Geode;
		geode->getOrCreateStateSet();
		lod->addChild(geode.get());

		std::string relativeFilePath = "./Data/" + name + "/" + name + ".osgb";

		lod->setFileName(0, "");
		lod->setFileName(1, relativeFilePath);

		lod->setRange(0, 0, 1.0);																							//第一层不可见
		lod->setRange(1, 1.0, FLT_MAX);

		lod->setDatabasePath("");

		group->addChild(lod);
	}
	std::string outputLodFile = fileDir + "/Data.osgb";
	osgDB::writeNodeFile(*group, outputLodFile);
}

int main(int argc, char *argv[])
{
	if (argc < 2)
		return -1;
	if (!filesystem::exists(argv[1]))
		return -1;
	std::string fileDir = argv[1];
    std::string outputLodFile = fileDir + "/Data.osgb";
	createObliqueIndexes(fileDir);

	osgViewer::Viewer viewer;
	osg::Node * node = new osg::Node;
	node = osgDB::readNodeFile(outputLodFile);
	viewer.setSceneData(node);
	viewer.setUpViewInWindow(50, 50, 800, 600);
	return viewer.run();
}

构建

添加 C++17支持。

cmake_minimum_required(VERSION 3.15)
project(osgDemo)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS NO)

find_package(OpenSceneGraph REQUIRED osgDB osgViewer)
include_directories(${OPENSCENEGRAPH_INCLUDE_DIR})
add_executable (osgDemo "main.cpp")
target_link_libraries(${PROJECT_NAME} ${OPENSCENEGRAPH_LIBRARIES})

OSG 库使用vcpkg编译安装。
在这里插入图片描述

测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

参考

  1. 倾斜摄影OSGB转换为3DTiles
  2. OSG加载倾斜摄影数据
【下载链接】台湾倾斜模型OSGB样式数据和使用教程,台北倾斜模型osgb,高雄倾斜模型osgb.全球谷歌无水印影像和地形数据 OSGB数据的第三版数据,优化了算法和结构组织。在2022年,我们第一次推出了3Dtiles格式https://blog.csdn.net/qq_38203878/article/details/126949791,2024年3月,我们推出的osgb1.0版本。https://blog.csdn.net/qq_38203878/article/details/136698087,期间版本做了版本更新,这次我们做了第三次的更新。通过百度网盘分享的文件:台北市倾斜模型osgb。 阅读详情

相关推荐

Cesium 实战 08 - 无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例

无人机斜影数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例。 包括下载测试数据地址以及使用说明。 几乎把所有错都试了一遍,才找到最合适的工具进行转换。 文中有完整试错过程。

非科班Java出身GISer的博客 1万+

读取OSGB数据的几种方式

在接触osgb的时候,一般都会先配osg的环境,所以先介绍这种方法。

qq_43718758的博客 2万+

【CC精品教程】osbg格式三维实景模型全解

数据格式同样都是osgb,不同软件生产的,建模是参数不一样,还是有很大区别的,本讲进行一一讲解。

智慧空间实验室 3079

OSGB格式解析

主要介绍倾斜摄影数据OSGB二进制数据的解析,首先简单介绍一下OpenSceneGraph相关技术,并介绍倾斜摄影数据的组织结构,着重分析OSGB格式的相关字段,最后逐字节对OSGB数据进行解析并通过OpenSceneGraph对数据进行可视化。 文章目录前言一、OpenSceneGraph1. OSGB数据的可视化2. OSGB数据查看二、倾斜摄影数据1.数据组织结构2.OSGB格式解析总结 前言 OpenSceneGraph是一个开源的,跨平台的高性能 3D 图形工具包,它完全用标准 C++ 和

TxyITxs的博客 3万+

倾斜摄影示例数据可用于demo,osgb格式

通过SuperMap iDesktop工具,加载模型数据索引文件(*.scp)的方式,直接加载OSGB原始数据,无需数据转换。 根据模型索引文件(*.scp)生成数字地表模型数据(DSM)或者数字正射影像(DOM)。支持显示任意剖分格式的倾斜摄影建模数据。

新手必看:如何用PhaGCN2和vConTACT2搞定宏病毒组注释(附避坑指南)

本文为宏病毒组研究新手提供了使用PhaGCN2和vConTACT2进行病毒注释的完整实战指南。内容涵盖从Conda环境配置、软件安装、参数解析到结果解读的全流程,并重点分享了整合双工具进行交叉验证的策略与常见报错解决方案,旨在帮助研究者高效、准确地完成病毒分类注释工作。

j2k3l4的博客 793

【OSG】读取osgb倾斜数据

string data_dir = osgb_dir; //std::string ext = osgDB::getLowerCaseFileExtension(data_dir); osgDB::ReaderWriter::Options* options=NULL; std::string fileName = osgDB::findDataFile(osgb_dir, options); if (fileName.empty()) { OSG_INFO << "Readi.

OathkeePer2x的博客 2041

MobaXterm SSH连接失败:深入解析密钥格式错误导致的Software caused connection abort

本文深入解析了MobaXterm SSH连接失败问题,特别是因密钥格式错误导致的'Software caused connection abort'错误。通过分析系统日志和密钥损坏原因,提供了重建SSH主机密钥的详细步骤,包括备份、生成新密钥及权限设置,帮助用户彻底解决连接中断问题。

weixin_29306011的博客 474

OSG加载倾斜摄影数据

通过生成一个索引文件,使用OpenSceneGraph加载倾斜摄影数据。

Charlee44的技术驿站 7997

如何实现三种不同RAM?(单端口RAM、伪双端口RAM、真双端口RAM|verilog代码|Testbench|仿真结果)

RAM(随机存取存储器)是计算机系统中的一种主要存储器件,用于存储和读取数据。在RAM中,单端口RAM(Single-port RAM)和双端口RAM(Dual-port RAM)是两种常见的类型,双端口RAM又分为真双端口(True dual-port RAM)和伪双端口RAM(Simple dual-port RAM)。那么什么是单端口和双端口?又该如何区分真双端口和伪双端口?输入只有一组数据线和一组地址线,读写共用地址线,输出只有一个端口。

Loudrs的博客 1万+

重磅!Repo Wiki!

RepoWiki是Qoder平台的智能文档生成功能,通过静态代码分析自动提取项目架构、模块依赖和核心逻辑,并持续追踪代码变更保持文档同步。其工作流程分为四个阶段:1)代码扫描与AST解析;2)结构分析与依赖映射;3)文档智能生成;4)增量更新机制。支持多种编程语言,能识别设计模式并推断技术决策,适用于新项目搭建和遗留系统维护。优势在于降低理解成本和提高开发效率,但存在文件数量限制和依赖Git的局限性。典型应用场景包括自动生成架构图、API手册和团队知识沉淀。

ayusong870的博客 3990

倾斜摄影数据OSGB进入到ArcGIS平台相关问题小结

OSGB格式及来源 国内倾斜摄影数据多是以.osgb格式存储的,osgb格式是三维引擎定义的数据格式,使用二进制Binary存储,可以加快计算机读取。.osg格式可以通过OSG库自带的数据转换工具转为.osgt格式,osgt采用ASCII存储。.osgb,就是osg的数据再在后面贴上纹理图片,通常为.jpg等格式的图片,可以通过查看图片格式的编码得知图片存储的字节位。 通常使用Smart 3D...

ceibake的博客 2万+

海外最新AI营销AI销售书籍推荐AI营销培训讲师AI销售培训讲师人工智能营销培训师人工智能销售培训师AI赋能营销培训AI赋能销售培训企业AI营销内训企业AI销售内训AI营销课程讲师AI销售课程讲师

专栏|AI营销与AI销售实战 · 第46期在这个人类与算法共舞的时代,销售,已经不是你我熟悉的那个“打电话、见客户、做PPT”的老行当了。你还以为销售是“打感情牌”?错了,情感要继续,但方式已经升级。你还以为AI只是“写写文案”?错了,文案只是皮毛,真正的杀器,是思维方式的重构,是认知地图的重绘。首先,我们需要明确一个事实:AI并不会消灭销售这个职业,但它必然会重新定义销售的本质。在销售领域,真正的制胜之道不是简单地采用AI工具,而是的能力。

Akibfrycc的博客 1095

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

面对倾斜摄影三维模型数据量大(占空间)、大区域显示效果不好(卡)的情况,该咋办

tanhongwei000的博客 2万+

VXWorks6.9 + Workbench3.3 开发环境部署

VxWorks6.9 + Workbench3.3的安装部署,以及简单示例项目的创建、编译和运行

Mr.Sugarcane 5413

Android Treble 简介

上面两段话来自官网上,Android 8.0 重新设计了 Android 操作系统框架(在一个名为“Treble”的项目中),以便让制造商能够以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。本文主要整理一下Android Treble框架。

私房菜 9266

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

(unity 加载倾斜摄影-C#解析osgb) 先上连接:最初的C#解析osgb 修改后:添加了个人注释和新功能C#解析osgb的unity工程 使用: 新增: 鼠标操作换了个舒服点的 (多余的就不说了) Cameramove_new 获取倾斜摄影位置 读取xml文件 、相机定位 首先是坐标问题 避免不了 读取到倾斜摄影坐标超过十几万 unity里坐标因为flot有限制所以只能是将所有读取到的坐标缩小100倍 所以问题来了 有些情况下倾斜摄影不是单独一个 这种情况时就需要通过

WantFK的博客 1万+

深入剖析RDMA Netlink:Linux内核中高效通信的基石

RDMA Netlink:Linux内核中高效通信控制的核心机制 RDMA技术通过绕过内核实现高速数据传输,但其管理控制仍需内核参与。drivers/infiniband/core/netlink.c文件作为RDMA子系统的心脏,构建了用户空间与内核间的高效通信桥梁。该模块采用模块化客户端架构,通过全局数组管理不同类型的RDMA功能,如设备管理、连接服务和链路层操作。从最初的全局锁到细粒度读写锁的演进,展现了Linux内核追求高性能的持续优化。同时,通过条件编译支持新旧内核版本和网络命名空间,体现了稳定性与

数字人生 234

osg 倾斜数据纹理_技术 | 倾斜摄影数据OSGB进入到ArcGIS平台相关问题小结

提示:点击上方"达北云"↑免费订阅本刊OSGB格式及来源国内倾斜摄影数据多是以.osgb格式存储的,osgb格式是三维引擎定义的数据格式,使用二进制Binary存储,可以加快计算机读取。.osg格式可以通过OSG库自带的数据转换工具转为.osgt格式,osgt采用ASCII存储。.osgb,就是osg的数据再在后面贴上纹理图片,通常为.jpg等格式的图片,可以通过查看图片格式的编码得知...

weixin_39591720的博客 1325

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Unity加载OSGB倾斜摄影数据

需要注意的是:文件夹加载方式并没有使用lod,所以加载的数据只是data文件夹下,瓦片文件夹下的同名osgb数据(效果如下图所示),并没有加载到层级osgb数据,显示并不尽如人意,需要自己再跟进一下(随后吧,我也没太清楚)!我们知道osgb的osg推出的倾斜摄影数据的数据结构,所以,osg引擎一定是支持osgb最好的三维引擎,研究osgb的加载,了解osg的库也就是必然项!然而但是,三维引擎方向,UE,Unity一定是主流中的主流了,怎么让osgb在这两个引擎中工作成了大家研究的一个侧重点。

原在路上的博客。 1202

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

CesiumLab 倾斜数据处理以及osg 关联关系

简单介绍一下 CesiumLab 的 Osgb倾斜数据转3dtiles:

PHP代码的博客 1296

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

倾斜摄影测量数据轻量化1(OSGB格式数据的介绍)

针对OSGB格式的倾斜摄影测量数据的介绍

m0_47612058的博客 2161

3mx转osgb_如何将无人机Las点云数据转为Osgb数据

LAS点云转OSGB对于现如今无人机与激光雷达的应用在GIS行业中也越来越成熟,所以对于一个GISer来说,Las点云数据应该都不会陌生;但在我们开发环境中,有时候Las数据也不能完全适用于所有的场景,这时候我们就需要将数据进行格式转换;小编也是在工作中需要将las点云转为OSGB倾斜摄影数据;也查阅了很多资料但都没有找到一个比较好的中间件来进行转换,所以只能发挥一下自己的动手能力,自己做了一个小...

weixin_29016833的博客 5974

osg加载osgb数据_ArcGIS三维数据

一、I3S、Multipatch和slpkI3S规范,全称为OGC Indexed 3D Scene Layer ,以及基于该规范的三维数据格式规范SceneLayer Package(SLPK),专注于在互联网或离线环境中提供高性能三维可视化和空间分析。标准采用知识共享署名-非商业性使用-相同方式共享 4.0 (CC BY-NC-SA 4.0)国际许可协议进行许可。目前,已经率先被Es...

weixin_39918145的博客 3579
上一篇: Cesium for UE4 加载离线地形和影像
下一篇: 基于C++11的数据库连接池(推荐)
wblong_cs
博客等级 码龄15年 1851粉丝 432原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值