CESIUM例子学习(一)——动态模型加载
前言
一直在学习cesium,时断时续地用它,但感觉哪里不对,什么都了解一点,但什么没有深入地去研究,都是浮于表面。于是下定决心:从头开始,从cesium的sandcastle例子开始,系统地学一下cesium。并把它记录下来,以便后面用时能很快找到。
一、场景与动态模型加载
把基本框架搭起来之后,就开始第一个例子。如下图(发动机叶片是转动的):
viewer配置如下图:
因为模型的发动机叶片是转动的,为了使叶片转动起来,shouldAnimate: true。
二、模型调整
这里的模型调整不是指模型本身的动画。模型在三维场景中除了有位置之外,还有模型的姿态。比如头朝哪边,左右倾斜多少度,模型缩放等等,代码如下:
1、模型姿态
function createModel (url, x, y, height) {viewer.entities.removeAll();var position = Cesium.Cartesian3.fromDegrees(x, y, height);var heading = Cesium.Math.toRadians(135);var pitch = 0;var roll = 0;var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);//var orientation = Cesium.Transforms.headingPitchRollQuaternion(position,hpr);var entity = viewer.entities.add({name: url,position: position,orientation: orientation,model: {uri: url,minimumPixelSize: 128,maximumScale: 20000,},});viewer.trackedEntity = entity;
}
上面代码中,
position设置entity的位置;
orientation: 设置entity的姿态;
需要注意这一行: var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll);
cesium API中是这样说的:A rotation expressed as a heading, pitch, and roll. Heading is the rotation about the negative z axis. Pitch is the rotation about the negative y axis. Roll is the rotation about the positive x axis.
其中说到Heading是绕Z轴,Pitch是绕Y轴,而Roll是绕X轴。这里的x,y,z轴指的是模型坐标系中的x,y,z轴。而不是cesium中笛卡儿坐标系的x,y,z。旋转中心是建模时的模型中心。
2、缩放
模型缩放很简单,只要找到模型,设置模型scale属性即可,但要注意,netity并不一个只为模型服务的单一类,可以把它理解成容器,大多数的可视化要素都可以放里面,所以要找到模型,就需要找到它的模型属性,即entity.model,这就是模型。代码如下:
entity.model.scale = 10 //模型放大10倍
三、视点锁定
在学习加载模型过程中,经常会碰到一个问题,就是运行没有报错,模型已经加载,但是就是看不到模型在哪里!Cesium提供了一个模型锁定的方法。即:
viewer.trackedEntity = entity;
这样就可以,这时视角不支持平移,只能放大和缩小。视点始终锁定在模型上,不用满世界去找模型。
CESIUM例子学习(一)——动态模型加载相关推荐
- PyTorch框架学习十九——模型加载与保存
PyTorch框架学习十九--模型加载与保存 一.序列化与反序列化 二.PyTorch中的序列化与反序列化 1.torch.save 2.torch.load 三.模型的保存 1.方法一:保存整个Mo ...
- 【虚幻引擎UE】UE5 AR初体验之静态动态模型加载
UE5的AR初体验之静态动态两种模型加载 基于配置好AR环境(参考另一篇文章) 先## 标题简单了解一下它的项目结构 这里的brush就是我们的操作空间范围 官方模板可以实现平面识别,控制对象的旋转和 ...
- Cesium案例解析(四)——3DModels模型加载
文章目录 1. 概述 2. 代码 3. 解析 4. 参考 1. 概述 Cesium自带的3D Models示例,展示了如何加载glTF格式三维模型数据.glTF是为WebGL量身定制的数据格式,在网络 ...
- 如何将深度学习模型加载到android环境中
承接上一篇的内容,考虑如何将深度学习的模型加载到android app中 文章目录 前言 一.使用工具 二.使用步骤 1.模型格式的转换 2.配置文件修改 3. 应用程序 前言 将图片学习的模型加载到 ...
- NVIDIA GEFORCE 2080 / 2080 SUPER / 2080 Ti + CUDA Toolkit 8.0 深度学习模型加载速度慢
NVIDIA GEFORCE 2080 / 2080 SUPER / 2080 Ti + CUDA Toolkit 8.0 深度学习模型加载速度慢 (卡顿) GEFORCE RTX 2080 / GE ...
- 草图大师sketchup的模型加载到cesium里显示 带贴图
草图大师sketchup的模型加载到cesium里显示 带贴图 前言 一.sketchUp导出obj格式 二.在Blender中转换数据 1.导入数据 2.调整尺寸和视图 三.cesium中加载 总结 ...
- cesium模型加载-加载fbx格式模型
整体思路: fbx格式→dae格式→gltf格式→cesium加载gltf格式模型 具体方法: 1. fbx格式→dae格式 工具:3dsMax, 3dsMax插件:OpenCOLLADA, 下载地址 ...
- OpenGL学习脚印:模型加载初步-加载obj模型(load obj model)
写在前面 前面介绍了光照基础内容,以及材质和lighting maps,和光源类型,我们对使用光照增强场景真实感有了一定了解.但是到目前为止,我们通过在程序中指定的立方体数据,绘制立方体,看起来还是很 ...
- postgresql源码学习(57)—— pg中的四种动态库加载方法
一. 基础知识 1. 什么是库 库其实就是一些通用代码,可以在程序中重复使用,比如一些数学函数,可以不需要自己编写,直接调用相关函数即可实现,避免重复造轮子. 在linux中,支持两种类型的库: 1. ...
- Cesium bim模型加载并与模型树关联(分层加载)
很久都没写文章了,最近实在是太忙了,向各位关注我的小伙伴致个歉! 最近没事儿写了个模型树和模型关联的功能,处理工具是用的cesiumlab. 说明一下为什么要用cesiumlab: 网上现在有很多的模 ...
最新文章
- hadoop错误,重新格式化namenode后,出现java.io.IOException Incompatible clusterIDs
- RAC环境下的备份与恢复(四)
- C++ cin相关函数总结
- Spring - Java/J2EE Application Framework 应用框架 第 14 章 JMS支持
- Node读取并输出txt文件内容
- 深度学习和目标检测系列教程 9-300:TorchVision和Albumentation性能对比,如何使用Albumentation对图片数据做数据增强
- HTML5 Canvas 图形组合
- vue+vuex初入门
- 窗函数(matlab)
- QTreeView+自定义Model实现示例
- 人脸识别、活体检测、人脸识别面临的挑战
- 用计算机和电视机组成家庭影院,用电脑组建家庭影院: 最方便最实惠的玩法...
- linux运维都不知道是什么,这8种命令都不会,还算什么Linux运维!
- 马云、张小龙、雷军缅怀金庸:江湖路远,侠义长存!
- Java 可用于比较与排序的lambda表达式和comparing方法
- 10+ 张图来探究 Linux 内核,以及如何高效学习
- NVisual-自动化网络拓扑
- 2021-11-29 vue移动端卖座电影项目(三) vue项目中使用Swiper插件,Film页面设置轮拨图,nowPlaying页面设置样式
- 在URL中传递中文的解决方式
- FAT32 文件系统在磁盘上的结构
热门文章
- JavaScript 每日一题 #10
- #C语言#6.1 数据类型 笔记
- 深度学习图片预处理:crop
- css炫酷标题,炫酷 CSS 背景效果的 10 个代码片段
- 【图片新闻】美海军的下一艘战舰与“祖姆沃尔特”DDG-1000极其相似
- 【Django】 视图层说明
- 《CSDN排行榜冲榜攻略》妙用Emoji表情符号读者提升阅读体验(编码表)
- excel 筛选重复项_列表项的Excel筛选器:2011年“鲨鱼周”
- Chrome - develop for the web
- Edit plus | ecli pse配色方案