let addModel = true;
 var model = null
const viewer = new Cesium.Viewer("cesiumContainer", {
  shouldAnimate: true,
});
function update3dtilesMaxtrix(model,params) {
            //旋转
            var mx = Cesium.Matrix3.fromRotationX(Cesium.Math.toRadians(params.rx));
            var my = Cesium.Matrix3.fromRotationY(Cesium.Math.toRadians(params.ry));
            var mz = Cesium.Matrix3.fromRotationZ(Cesium.Math.toRadians(params.rz));
            var rotationX = Cesium.Matrix4.fromRotationTranslation(mx);
            var rotationY = Cesium.Matrix4.fromRotationTranslation(my);
            var rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);
            //平移
            var position = Cesium.Cartesian3.fromDegrees(params.tx, params.ty, params.tz);
            var m = Cesium.Transforms.eastNorthUpToFixedFrame(position);
            //旋转、平移矩阵相乘
            Cesium.Matrix4.multiply(m, rotationX, m);
            Cesium.Matrix4.multiply(m, rotationY, m);
            Cesium.Matrix4.multiply(m, rotationZ, m);
            //赋值给model
            model.modelMatrix = m;
        }
var scene=viewer.scene;

var handler1 = new Cesium.ScreenSpaceEventHandler(scene.canvas);
        handler1.setInputAction(function (movement) {
            if(addModel === true){
                let ray = viewer.camera.getPickRay(movement.position);
                let cartesian = viewer.scene.globe.pick(ray, viewer.scene);
                var cartographic = Cesium.Cartographic.fromCartesian(cartesian);
                var lat = Cesium.Math.toDegrees(cartographic.latitude);
                var lng = Cesium.Math.toDegrees(cartographic.longitude);
                var alt1 = cartographic.height;
        
                var params= {
                    tx: lng,  //模型中心X轴坐标(经度,单位:十进制度)
                    ty: lat,    //模型中心Y轴坐标(纬度,单位:十进制度)
                    tz: alt1,    //模型中心Z轴坐标(高程,单位:米)
                    rx: 0,    //X轴(经度)方向旋转角度(单位:度)
                    ry: 0,    //Y轴(纬度)方向旋转角度(单位:度)
                    rz: 0      //Z轴(高程)方向旋转角度(单位:度)
                };
                console.log(params)
                model = viewer.scene.primitives.add(Cesium.Model.fromGltf({
                    url : "../SampleData/models/CesiumAir/Cesium_Air.glb",
                    scale : 1000,
                    color:Cesium.Color.fromCssColorString('#ffffff'),

}));
                model.type = "model";
                model.tx = lng;
                model.ty = lat;
                model.tz = alt1;
                model.rx = 0;
                model.ry = 0;
                model.rz = 0;
                update3dtilesMaxtrix(model,params);
                addModel = false
               viewer.camera.flyTo({
                 destination: Cesium.Cartesian3.fromDegrees(lng, lat, 40000)
               })
            }
       }, Cesium.ScreenSpaceEventType.LEFT_DOWN);

cesium primitive添加模型相关推荐

  1. cesium中添加建筑白模

    1.在cesium中添加模型依赖于Cesium ion帐户的资产id,在这里创建账户. 2.上传模型(模型文件类型在Cesium ion中有说明,模型的提取办法可在这里查看)到账户中并平铺为3D Ti ...

  2. cesium开发加油站1:cesium场景添加多边形贴地形或模型

    cesium开发加油站1:cesium场景添加多边形贴地形或模型 前言 原代码 更改后代码 前言 本篇文章主要介绍ceisum场景中,用GroundPrimitive替换Primitive加载多边形时 ...

  3. Cesium 通过primitive 添加垂直图片资源

    实际Cesium 项目中添加了部分贴地的资源.资源类型有图片,gltf或者glb的模型.这里简单比较一下primitive 和entity. primitive 基于比较底层的webgl技术,进行渲染 ...

  4. Cesium中添加entitie模型,实现贴地。

    1.Cesium中添加entitie模型,实现贴地. 2. 添加模型 const createModel = (url) => {const entity = viewer.entities.a ...

  5. vue2 使用 cesium 【第二篇-相机视角移动+添加模型】

    vue2 使用 cesium [第二篇-相机视角移动+添加模型] 搞了一阵子 cesium,小白入门,这东西很牛逼,但是感觉这东西好费劲啊!网上资料不多,每个人的用法又不一样,操作起来真的是绝绝子.之 ...

  6. Cesium添加模型实时更新偏航角

    开发工具与关键技术: 作者:熊琪 撰写时间:2020年9月8日 首先简单的说下cesium是什么,cesium是一个跨平台.跨浏览器的展示三位地球和地图的js库,cesium使用WebGL来进行硬件加 ...

  7. Cesium: Primitive vs Entity

    Primitive vs Entity Entity Cesium Sandcastle: Variety of available entities 更高级别的数据驱动 API,它使用一致性设计的. ...

  8. vue 使用 cesium 接入 gltf 模型

    vue 使用 cesium 接入 gltf 模型 这个其实说简单也简单,但是说复杂也不容易搞.尤其是转化成vue语法或者是在vue项目接入的时候会有些许的坑,我在接入的时候也是有很多问题,好在最后把模 ...

  9. Cesium加载模型两种方式

    Cesium加载模型两种方式 代码如下 <!DOCTYPE html> <html><head><meta charset="UTF-8" ...

最新文章

  1. Dbgrid 中表字段所在的列序号
  2. 文件的读取流和书写流
  3. 1.10 卷积神经网络示例-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  4. 4.11-固件映像包 (FIP)
  5. Qt 图形视图框架中的事件处理和传播
  6. 关于 richedit 控件
  7. 使用Java操作文本文件的方法详解
  8. shell之通过if [ $? != 0 ]判断上次程序是否执行成功
  9. 【FZU2178】礼物分配
  10. lane是什么意思_什么是Trunk?Trunk详解
  11. 怎么通过scanf读取一个空白前的字符
  12. Google 谷歌翻译 API
  13. 趣味花体模糊字体玩法介绍与实践
  14. 使用Scrapy框架爬取网页并保存到Mysql
  15. vue2 动态添加响应式数据
  16. 玩转数据可视化之R语言ggplot2:(九)网络图绘制
  17. Kali Linux实战:如何一下看出Windows计算机是否开启445危险端口?是否存在永恒之蓝漏洞?
  18. 什么是搜索引擎优化(SEO)
  19. 如何获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓
  20. Lpms-B2 IMU数据采源码分析 及 TCP/IP握手简单分析

热门文章

  1. SQL中常用的字符串CHARINDEX函数和PATINDEX函数详解!
  2. windows下递归删除指定文件和文件夹
  3. 编程测试题-电话号码的英文表示和中文表示转换
  4. sql如何遍历几百万的表_关于SQL查询效率,100w数据,查询只要1秒
  5. 树莓派安装openwrt旁路由开启ipv6
  6. 宝塔php怎么设置回收空闲进程,宝塔面板-回收站爆满后清理的三种方式
  7. 云电脑用流量打游戏卡吗
  8. Illustrator 教程:如何在 Illustrator 中变换图稿?
  9. python底层网络交互模块_Python 利用三个简易模块熟悉前后端交互流程
  10. 计算机毕业设计javaweb理发店预约网站源码