5、加载3dtileset模型并定位到模型

news2024/10/5 14:29:57

      这一节使用CCesium加载3dtiles模型,3dtiles模型使用ceisum官网示例中的模型,加载3dtiles功能目前只能添加没有压缩的模型,draco或其他解压缩功能没有写。

1、在上一个例子的基础上,将鼠标事件改成右键的鼠标事件Cesium::ScreenSpaceEventType::RIGHT_CLICK

_eventHandler->setInputAction(&Handler::mouseUp, Cesium::ScreenSpaceEventType::RIGHT_CLICK);//设置鼠标点击事件

2、将ceisum的viewer赋值给hanlder指针的成员变量,并在Handler类中定义成员变量

handler->viewer = &viewer;
Cesium::Cesium3DTileset *tileset = NULL;

3、改写mouseUp函数,mouseUp函数有两个参数,在鼠标点击时回返。第一个参数是在创建new Cesium::ScreenSpaceEventHandler时传入的Handler变量,第二个参数是鼠标点击时的屏幕位置。在函数中创建Cesium3DTileset并加载到地图中,然后定位到模型。

std::string url="../data/BatchedColors/tileset.json";
aggregator->tileset = new Cesium::Cesium3DTileset(url);
//viewer.zoomTo(tileset);
aggregator->viewer->_scene->primitives()->add(aggregator->tileset);
Cesium::HeadingPitchRoll *orientation = new Cesium::HeadingPitchRoll(0.0, -1.5707963267948966, 0.0);
//因为已经有glm库使用没有写cesium的Cartesian3,但是Cartesian3的很多方法是写了的,也可以用glm库提供的
glm::dvec3 initialPosition1 = Cesium::Cartesian3::fromDegrees(-75.60908200128681, 40.04159868719826, 1000);
aggregator->viewer->_scene->_camera->setView(orientation,initialPosition1);

4、运行程序,鼠标在地图中点击右键即可加载模型并定位到模型

完整代码

/**
 * Created by IBM on 2021/3/3.
 */
#include <iostream>
#include <Widgets/Viewer/Viewer.h>
#include <Scene/Cesium3DTileset.h>

class Handler {
public:
    Cesium::Viewer *viewer;
    Cesium::Cesium3DTileset *tileset = NULL;

    bool bol;
   /**
    * 鼠标右键加载tileset模型
    * @param handler
    * @param event 鼠标指针位置,屏幕坐标,与ceisum中的基本一致
    */
    static void mouseUp(void *handler, Cesium::ScreenEvent *event) {
        Handler *aggregator = (Handler *) handler;
        if (aggregator->tileset == NULL) {
            std::string url="../data/BatchedColors/tileset.json";
            aggregator->tileset = new Cesium::Cesium3DTileset(url);
            //viewer.zoomTo(tileset);
            aggregator->viewer->_scene->primitives()->add(aggregator->tileset);
            Cesium::HeadingPitchRoll *orientation = new Cesium::HeadingPitchRoll(0.0, -1.5707963267948966, 0.0);
            //因为已经有glm库使用没有写cesium的Cartesian3,但是Cartesian3的很多方法是写了的,也可以用glm库提供的
            glm::dvec3 initialPosition1 = Cesium::Cartesian3::fromDegrees(-75.60908200128681, 40.04159868719826, 1000);
            aggregator->viewer->_scene->_camera->setView(orientation,initialPosition1);
            // 或者
            //aggregator->viewer->zoomTo( aggregator->tileset);
        }
    }
};

int main(int argc, char *argv[]) {
    Handler *handler = new Handler();
    Cesium::Viewer viewer = Cesium::Viewer(500, 300);
    handler->viewer = &viewer;
    std::string url = "https://dev.virtualearth.net";
    std::string key = "AmXdbd8UeUJtaRSn7yVwyXgQlBBUqliLbHpgn2c76DfuHwAXfRrgS5qwfHU6Rhm8";
    Cesium::BingMapsImageryProvider *imageryProvider1 = new Cesium::BingMapsImageryProvider(url, key);
    viewer.imageryLayers()->addImageryProvider(imageryProvider1);
    //创建事件
    Cesium::ScreenSpaceEventHandler *_eventHandler = new Cesium::ScreenSpaceEventHandler(handler);
    _eventHandler->setInputAction(&Handler::mouseUp, Cesium::ScreenSpaceEventType::RIGHT_CLICK);//设置鼠标点击事件
    viewer.startAnimating(true);//启动opengl循环
    system("pause");
    return 0;
}
​​​​​​返回目录 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科研热点|重磅!华为,唯一单位首发Nature!

今日&#xff0c;国际顶级学术期刊《自然》(Nature)杂志正刊发表了华为云盘古大模型研发团队研究成果——《三维神经网络用于精准中期全球天气预报》&#xff08;《Accurate medium-range global weather forecasting with 3D neural networks》&#xff09;。数据显示&#xf…

医学报告怎样翻译效果好?

我们知道&#xff0c;医学报告是医学翻译领域比较重要的一个项目&#xff0c;许多国际医学期刊和杂志都要求医学报告必须是英语的&#xff0c;促使医学报告翻译的需求量越来越大。那么&#xff0c;怎样翻译医学报告&#xff0c;医学报告中译英哪里比较专业&#xff1f; 据了解&…

Java类加载深度剖析-大白话

Java类加载深度剖析 1.类加载的入口2.AppClassLoader、ExtClassLoader、BootstrapClassLoader的血脉渊源3.ExtClassLoader究竟是不是孙大圣4.为什么自定义类加载器的父类加载器是AppClassLoader呢&#xff1f;5.我们应该如何打破双亲委派机制呢&#xff1f;6.如何保证同class对…

实现UDP通信

UDP通信的实现过程 write/read到send/recv 函数原型&#xff1a; ssize_t send(int sockfd, const void *buf, size_t len, int flags); ssize_t recv(int sockfd, void *buf, size_t len, int flags); 前三个参数同read/write一样&#xff1b; ssize_t read(int fd, void *bu…

滚珠螺杆的基本知识点

滚珠螺杆具有定位精度高、高寿命、低污染和可做高速正逆向的传动及变换传动等特性&#xff0c;因具上述特性&#xff0c;滚珠螺杆已成为近来精密科技产业及精密机械产业的定位及测量系统上的重要零组件之一。 滚珠螺杆主要由螺杆、螺帽、钢珠、固定座、刮刷器及回流管所构成的&…

thinkphp开发宠物领养商城系统 金融投资理财源码 中英文语言 支持增加多种语言

程序代码里面 除了线下支付&#xff0c;增加了4个线上支付方式 1、新增短信接口&#xff1a;短信宝、云片短信、网建短信。 2、新增阿里API实名认证&#xff0c;支持开启或关闭。 3、新增阿里API银行卡实名认证&#xff0c;支持开启或关闭。 4、新增项目分类开关、支付宝和微信…

基于springboot+vue框架的电影订票系统_wqc3k

随着网络科技的不断发展以及人们经济水平的逐步提高&#xff0c;计算机如今已成为人们生活中不可缺少的一部分&#xff0c;为电影订票方便管理&#xff0c;基于java技术设计与实现了一款简洁、轻便的管理系统。本系统解决了电影订票事务中的主要问题&#xff0c;包括个人中心、…

微服务拆分原则

库存供应链服务 交易和订单服务 用户服务 1. 业务之间耦合降低 相互调用较少 进行拆分 2.修改频率区分不同服务

Qlib全新升级:强化学习能否重塑金融决策模式?

编者按&#xff1a;2020年&#xff0c;微软亚洲研究院开源了金融 AI 通用技术平台 Qlib。Qlib 以金融 AI 研究者和金融行业 IT 从业者为用户&#xff0c;针对金融场景研发了一个适应人工智能算法的高性能基础设施和数据、模型管理平台。一经开源&#xff0c;Qlib 便掀起了一阵热…

对话罗氏中国:数字化创新驱动下的高效运营与合规实践

上海斯歌与罗氏中国已合作十余年&#xff0c;罗氏几乎见证了上海斯歌发展的全过程。近日&#xff0c;斯歌与罗氏 China Market Domain 架构负责人—— Brian Yang&#xff0c;就企业数字化探索、新技术的展望及斯歌产品等话题展开了探讨。 罗氏中国简介 罗氏&#xff08;Roche&…

Nacos启动报错

错误如下 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name communicationController defined in URL [jar:file:/D:/apache/maven/vip/xiaonuo/nacos/nacos-config/2.1.2.GA/nacos-config-2.1.2.GA.jar!/com/alibaba/nacos…

前后端实现mqtt物联网消息互通对话(图文详解)

需求&#xff1a;前端使用mqtt订阅主题和硬件设备进行通讯功能&#xff0c;不走后端&#xff0c;前端操作可以控制。从部署到对话&#xff0c;跟着图文一套下来你也可以学会。很简单的。后端用node&#xff0c;前端就用原生的js&#xff0c;如果要使用vue&#xff0c;可以看我另…

OpenCV4使用applyColorMap()函数,可以将灰度图或彩色图转换成自定义的彩色图,或opencv提供的20多种色彩值

文章目录 1、applyColorMap()函数的使用&#xff1a;&#xff08;1&#xff09;函数原型&#xff1a;void applyColorMap(InputArray src, OutputArray dst, int colormap)void applyColorMap(InputArray src, OutputArray dst, InputArray userColor) &#xff08;2&#xff0…

记录CompletableFuture使用遇到的坑-多数据源

现象&#xff1a;使用了allof().get()去阻塞线程等待子线程跑完&#xff0c;但子线程还是没跑完就结束了。 代码如图&#xff1a; 如果您熟悉CompletableFuture的.allOf方法应该知道题主是想等3个异步任务完成再往下执行&#xff0c;但事实是3个异步任务执行到最后 "好像…

2023年最新全国分省、市路网数据shp

最新全国分省、市路网数据 2023年 ​ 最近有小伙伴反应无法进入OSM地图官网下载数据&#xff0c;所以这次带来全国路网数据shp文件。获取时间&#xff1a;2023年5月 数据格式&#xff1a;shp 坐标系&#xff1a;GCJ-02 数据概览 分省如下&#xff1a; ​ 例如河北&#xff…

DDR3 控制器 MIG IP 详解完整版 (nativeVIVADOVerilog)

文章目录 前言一、MIG IP 核的配置二、MIG 交互的接口三、常用IP例化值四、小实验传图 前言 本节主要是介绍 Xilinx DDR 控制器 IP 的创建流程、IP 用户使用接口 native 协议介绍和IP 对应的 Example Design 的仿真和上板验证。。 提示&#xff1a;以下是本篇文章正文内容&…

开放式耳机哪个好?综合性能不错的开放式耳机推荐

传统入耳式耳机容易滑落&#xff0c;而且戴久了耳朵疼&#xff0c;开放式耳机的出现就避免了这个问题的出现&#xff0c;本文就为大家推荐几款使用感较好的开放式耳机&#xff0c;一起来看看吧~ 一、NANK南卡OE Pro开放式耳机 南卡OE Pro凭借着顶级的佩戴体验和极高的音质水准…

图像几何变换笔记

图像缩放 图像缩放是指对图像大小进行调整&#xff0c;对原图进行放大或缩小。图像缩放一般通过插值采样来实现。 常见的插值方法&#xff1a;最近邻插值、双线性插值、双三次插值。 最近邻插值 最近邻插值是最简单的一种插值方法&#xff0c;通过映射将原始图片中的像素值映射…

【数据结构与算法】哈希表设计(C\C++)

实践要求 1. 问题描述 针对某个集体中人名设计一个哈希表&#xff0c;使得平均查找长度不超过R&#xff0c;并完成相应的建表和查找程序。 2. 基本要求 假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个&#xff0c;取平均查找长度的上限为2。哈希函数用除留…

C++——string(2)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年7月7日 内容&#xff1a;C——string内容讲解 目录 前言&#xff1a; 1.string&#xff1a; 1. reserve&#xff1a; 2.resize&#xff1a; 3.assign&#xff1a; 4.insert&#xff1a; 5.erase&#xff1a; 6.rep…