cesium primitive添加模型
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添加模型相关推荐
- cesium中添加建筑白模
1.在cesium中添加模型依赖于Cesium ion帐户的资产id,在这里创建账户. 2.上传模型(模型文件类型在Cesium ion中有说明,模型的提取办法可在这里查看)到账户中并平铺为3D Ti ...
- cesium开发加油站1:cesium场景添加多边形贴地形或模型
cesium开发加油站1:cesium场景添加多边形贴地形或模型 前言 原代码 更改后代码 前言 本篇文章主要介绍ceisum场景中,用GroundPrimitive替换Primitive加载多边形时 ...
- Cesium 通过primitive 添加垂直图片资源
实际Cesium 项目中添加了部分贴地的资源.资源类型有图片,gltf或者glb的模型.这里简单比较一下primitive 和entity. primitive 基于比较底层的webgl技术,进行渲染 ...
- Cesium中添加entitie模型,实现贴地。
1.Cesium中添加entitie模型,实现贴地. 2. 添加模型 const createModel = (url) => {const entity = viewer.entities.a ...
- vue2 使用 cesium 【第二篇-相机视角移动+添加模型】
vue2 使用 cesium [第二篇-相机视角移动+添加模型] 搞了一阵子 cesium,小白入门,这东西很牛逼,但是感觉这东西好费劲啊!网上资料不多,每个人的用法又不一样,操作起来真的是绝绝子.之 ...
- Cesium添加模型实时更新偏航角
开发工具与关键技术: 作者:熊琪 撰写时间:2020年9月8日 首先简单的说下cesium是什么,cesium是一个跨平台.跨浏览器的展示三位地球和地图的js库,cesium使用WebGL来进行硬件加 ...
- Cesium: Primitive vs Entity
Primitive vs Entity Entity Cesium Sandcastle: Variety of available entities 更高级别的数据驱动 API,它使用一致性设计的. ...
- vue 使用 cesium 接入 gltf 模型
vue 使用 cesium 接入 gltf 模型 这个其实说简单也简单,但是说复杂也不容易搞.尤其是转化成vue语法或者是在vue项目接入的时候会有些许的坑,我在接入的时候也是有很多问题,好在最后把模 ...
- Cesium加载模型两种方式
Cesium加载模型两种方式 代码如下 <!DOCTYPE html> <html><head><meta charset="UTF-8" ...
最新文章
- Dbgrid 中表字段所在的列序号
- 文件的读取流和书写流
- 1.10 卷积神经网络示例-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- 4.11-固件映像包 (FIP)
- Qt 图形视图框架中的事件处理和传播
- 关于 richedit 控件
- 使用Java操作文本文件的方法详解
- shell之通过if [ $? != 0 ]判断上次程序是否执行成功
- 【FZU2178】礼物分配
- lane是什么意思_什么是Trunk?Trunk详解
- 怎么通过scanf读取一个空白前的字符
- Google 谷歌翻译 API
- 趣味花体模糊字体玩法介绍与实践
- 使用Scrapy框架爬取网页并保存到Mysql
- vue2 动态添加响应式数据
- 玩转数据可视化之R语言ggplot2:(九)网络图绘制
- Kali Linux实战:如何一下看出Windows计算机是否开启445危险端口?是否存在永恒之蓝漏洞?
- 什么是搜索引擎优化(SEO)
- 如何获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓
- Lpms-B2 IMU数据采源码分析 及 TCP/IP握手简单分析
热门文章
- SQL中常用的字符串CHARINDEX函数和PATINDEX函数详解!
- windows下递归删除指定文件和文件夹
- 编程测试题-电话号码的英文表示和中文表示转换
- sql如何遍历几百万的表_关于SQL查询效率,100w数据,查询只要1秒
- 树莓派安装openwrt旁路由开启ipv6
- 宝塔php怎么设置回收空闲进程,宝塔面板-回收站爆满后清理的三种方式
- 云电脑用流量打游戏卡吗
- Illustrator 教程:如何在 Illustrator 中变换图稿?
- python底层网络交互模块_Python 利用三个简易模块熟悉前后端交互流程
- 计算机毕业设计javaweb理发店预约网站源码