添加 3D Tiles,并调整位置 3D Tiles 是什么 3DTiles数据集是cesium小组AnalyticlGraphics与2016年3月定义的一种数据集,3DTiles数据集以分块.分级渲染,将大数据量三维数据以分块,分层的形式组织起来,可以大量减轻浏览器和GPU的负担是一个优秀的,并且格式公开的数据格式. 3D Tiles将用于流式传输3D内容,包括建筑物,树木,点云和矢量数据. 参考 官网 3dtiles 介绍 3D Tiles 3D Tiles将用于流式传输3D内容,包括建筑…
添加 3D Tiles,并调整位置 3D Tiles 是什么 3DTiles数据集是cesium小组AnalyticlGraphics与2016年3月定义的一种数据集,3DTiles数据集以分块.分级渲染,将大数据量三维数据以分块,分层的形式组织起来,可以大量减轻浏览器和GPU的负担是一个优秀的,并且格式公开的数据格式. 3D Tiles将用于流式传输3D内容,包括建筑物,树木,点云和矢量数据. 参考 官网 3dtiles 介绍 3D Tiles 3D Tiles将用于流式传输3D内容,包括建筑…
cesium编程入门(七)3D Tiles,模型旋转 上一节介绍了3D Tiles模型的位置移动,和贴地的操作,这一节来聊一聊模型的旋转, 参考<WebGl编程指南>的第四章 假设在X轴和Y轴构成的平面上,要让物体旋转角度为β,那么公式如下: 由此思路就出来了: 根据要旋转的角度,构建一个三阶旋转矩阵 获取3D tiles 的旋转矩阵modelMatrix,然后与旋转矩阵运算, 最后将计算结果再赋值给modelMatrix,完成. 参考代码: var m = tileset.modelMatr…
cesium编程入门(七)3D Tiles,模型旋转 上一节介绍了3D Tiles模型的位置移动,和贴地的操作,这一节来聊一聊模型的旋转, 参考<WebGl编程指南>的第四章 假设在X轴和Y轴构成的平面上,要让物体旋转角度为β,那么公式如下: 由此思路就出来了: 根据要旋转的角度,构建一个三阶旋转矩阵 获取3D tiles 的旋转矩阵modelMatrix,然后与旋转矩阵运算, 最后将计算结果再赋值给modelMatrix,完成. 参考代码: var m = tileset.modelMatr…
cesium编程中级(一)添加示例到Sandcastle 添加示例到Sandcastle在cesium编程入门(七)3D Tiles,模型旋转中提到过,这里是一份完整的说明 创建例子 开启node服务后打开 http://localhost:8080/Apps/Sandcastle/ 会自动跳到 hello world 示例 可以选择点击左上角的[New]按钮新建一个页面,也可以就在当前页面的[JavaScript code]面板中进行修改 如果需要添加界面元素,比如输入框,按钮之类,需要在[H…
cesium编程入门 cesium是什么 Cesium 是一个跨平台.跨浏览器的展示三维地球和地图的 javascript 库. Cesium 使用WebGL 来进行硬件加速图形,使用时不需要任何插件支持,但是浏览器必须支持WebGL; Cesium是基于Apache2.0 许可的开源程序.它可以免费的用于商业和非商业用途. Cesium官方网站 cesium能做什么 支持2D,2.5D,3D 形式的地图展示, 可以绘制各种几何图形.高亮区域,支持导入图片,甚至3D模型等多种数据可视化展示 可用…
cesium编程入门(九)实体 Entity 在cesium编程入门(五)绘制形状提到过添加实体的方法,这一节聊一聊实体相关的一些内容: 先来看 Entity 的各个属性 id 唯一标志,如果没设置,值就为一个默认给定的GUID name 名称,可以不唯一 availability 可用性 show 可见性 description 描述 position 位置 orientation 方向 viewFrom 查看此对象的初始偏移量 parent 父节点 properties 与此实体关联的任意属…
cesium编程入门(八)设置材质 Cesium中为几何形状设置材质有多种方法 第一种方法 Material 直接构建Cesium.Material对象,通过设置Material的属性来进行控制,官方示例和API描述的比较清楚, API说明 材质示例 第二种方法 MaterialProperty 今天介绍通过MaterialProperty设置: Cesium 材质相关的类为 MaterialProperty,它有一下几个子类: ColorMaterialProperty ImageMateri…
本文引用了“帅地”发表于公众号苦逼的码农的技术分享. 1.引言 搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址),但他们的区别是什么?又有什么关系呢?另外,内行都知道,提到外网IP和内网IP就不得不提NAT路由转换这种东西,那这双是什么鬼?本文就来简单讲讲这些到底都是怎么回事.   另外,以下是与本文内相关知识点有关联的文章,可详细阅读之: <P2P 技术详解(一):NAT详解——详细原理.P2P简介> <P2P 技术详解(二):P2P…
通过Entity添加形状 先来看一个添加立方体的例子 var viewer = new Cesium.Viewer('cesiumContainer'); var redBox = **viewer.entities.add**({ name : 'Red box with black outline', position: Cesium.Cartesian3.fromDegrees(-107.0, 40.0, 300000.0), box : { dimensions : new Cesium…
感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Picker : 选择视角的模式,有三种:3D,2D,哥伦布视图(CV) Base Layer Picker : 图层选择器,选择要显示的地图服务和地形服务. Navigation Help Button :导航帮助按钮,显示默认的地图控制帮助. Animation : 动画器件,控制视图动画的播放速度.…
通过Entity添加形状 先来看一个添加立方体的例子 var viewer = new Cesium.Viewer('cesiumContainer'); var redBox = **viewer.entities.add**({ name : 'Red box with black outline', position: Cesium.Cartesian3.fromDegrees(-107.0, 40.0, 300000.0), box : { dimensions : new Cesium…
感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Picker : 选择视角的模式,有三种:3D,2D,哥伦布视图(CV) Base Layer Picker : 图层选择器,选择要显示的地图服务和地形服务. Navigation Help Button :导航帮助按钮,显示默认的地图控制帮助. Animation : 动画器件,控制视图动画的播放速度.…
搭建最简的开发环境 这一节来搭建一个最简单的能运行的helloworld,以后的代码也会在这一节的基础上慢慢增加 创建文件夹 mkdir cesium-test cd cesium-test 引入编译成果 将cesium源码中的Build文件夹,拷入cesium-test 创建html 将cesium-1.4.0/Apps/ 中的HelloWorld.html 拷入cesium-test 使用vscode 等编辑器打开 修改js和css的文件路径 <script src="../Build…
环境搭建 环境搭建 编译 node 安装 Node.js安装包及源码下载地址为:https://nodejs.org/en/download/. 安装完成后,打开命令行,输入:node -v,如果结果为版本号,表明安装成功 $ node -v v6.10.3 cnpm 设置 国内使用npm时有时速度很慢,推荐使用cnpm替代,使用方法和npm一样,链接:淘宝 NPM 镜像 $ npm install -g cnpm --registry=https://registry.npm.taobao.o…
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Pelican Mapping 激动的宣布支持加载Cesium ion上的3D Tiles和Bing图层到他们的osgEarth数字地球渲染工具上. 添加3D Tiles支持 osgEarth 绘制来自Cesium ion中的数据Melbourne, Australia 在过去的一年中,我们一直在开发对osgEarth中3D Tiles的支持,事实证明这是一种令…
目录 1. 概述 2. 案例 1. 概述 3D Tiles作为传输和渲染大规模3D地理空间数据的格式,应对的都是大规模数据的场景,Cesium提供了一个监视3D Tiles数据的监视器,可以通过这个监视器观察3D Tiles数据的效果. 2. 案例 HTML页面3DTilesInspector.html代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&…
cesium编程中级(二)源码编译 有些情况下,比如我们自己从Github下载了最新的代码,或者自己临时修改了一点代码,想要编译后的Build文件夹的内容,需要自行编译源码,这里介绍一下编译的方法 下载源码之后,可以发现根目录存在一个gulpfile.js文件,编译源码就是使用 gulp 编译的成果有四部分, 生成Apps文件夹,包括helloworld程序和沙盒Sandcastle 编译后的部署环境下的Cesium文件夹 编译后的调试环境下的Cesium文件夹 API文档 解压,或者git c…
Cesium入门10 - 3D Tiles Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 我们团队有时把Cesium描述成一个真实世界数据的3D游戏引擎.然而,使用真实世界的数据比使用典型的视频游戏数据资料要困难得多,因为真实数据可能是难以置信的高分辨率,并且需要精确的可视化.幸运的是,Cesium 与开源社区合作开发了3D Tiles,这是一个开放的规范,用于传输海量的异构三维地理空间数据集. 使用概念上…
Cesium在2016年3月份左右推出3D Tiles数据规范,在glTF基础上提供了LOD能力,定位就是Web环境下海量三维模型数据.虽然目前3D Tiles还是Beta阶段,有不少硬伤,但3D Tiles数据规范于2016年9月30日开始了OGC标准化进程,积极成分还是很大. 之前的glTF时分享了个人对二进制格式的一些想法和谨慎的态度.3D Tiles简单说就是具备LOD能力的glTF.有了数据首先是提供API可以渲染,保证用起来,下一步就要了解该数据规范的具体特点,比如倾斜,矢量,点云,…
Cesium在2016年3月份左右推出3D Tiles数据规范,在glTF基础上提供了LOD能力,定位就是Web环境下海量三维模型数据.虽然目前3D Tiles还是Beta阶段,有不少硬伤,但3D Tiles数据规范于2016年9月30日开始了OGC标准化进程,积极成分还是很大. 之前的glTF时分享了个人对二进制格式的一些想法和谨慎的态度.3D Tiles简单说就是具备LOD能力的glTF.有了数据首先是提供API可以渲染,保证用起来,下一步就要了解该数据规范的具体特点,比如倾斜,矢量,点云,…
上一节介绍3D Tiles渲染调度的时候,我们提到目前Cesium支持的Cesium3DTileContent目前支持如下类型: Batched3DModel3DTileContent Instanced3DModel3DTileContent PointCloud3DTileContent Composite3DTileContent 其中Composite3DTileContent是复合数据,PointCloud3DTileContent是只包含FeatureTable和BatchTable…
个人结论:目前,在演示层面,3D Tiles问题不大,但项目应用上就不够成熟了,所以问问自己,你是想吃瓜呢还是想吃螃蟹? 好的方面 数据规范 我非常喜欢glTF的整体设计,概括有四点:第一,数据块(Buffer)连续,保证了读写性能:第二,提供了视图(View)和访问器(Accessor)的概念,在不损失数据块完整性的前提下提供类型信息和读取规范,保证了兼容性:第三,逻辑层和数据层分离,两者尽量分离,比如用户想要增加一种风格,只会牵连到逻辑层的调整,不会影响数据层的读写,保证了独立性:第四,逻辑…
本文引用了自简书作者“涤生_Woo”的文章,内容有删减,感谢原作者的分享. 1.前言 HTTP(全称超文本传输协议,英文全称HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法. 对于移动端即时通讯(尤其IM应用)来说,现今主流的数据通信总结下来无外乎就是长连接+短连接的方式,而短连接在应用上讲就是本文将要介绍的HTTP协议的应用,而而正确地理解HTTP协…
上一节中鸡啄米讲了菜单及CMenu类的使用,这一节讲与菜单有密切联系的工具栏. 工具栏简介 工具栏一般位于主框架窗口的上部,菜单栏的下方,由一些带图片的按钮组成.当用户用鼠标单击工具栏上某个按钮时,程序会执行相应的操作,如果鼠标没有点击,只是停留在某个按钮上一会后,会弹出一个小窗口显示提示信息. 一般工具栏中的按钮在菜单栏中都有对应的菜单项中,即点击工具栏按钮与点击菜单项的效果相同.但工具栏中的按钮都显式的排列出来,操作很方便,而且按钮上的图片描述功能更直观,所以工具栏作为用户操作接口来说比菜单…
创建对话框类和添加控件变量在上一讲中已经讲过,这一讲的主要内容是如何为控件添加消息处理函数. MFC为对话框和控件等定义了诸多消息,我们对它们操作时会触发消息,这些消息最终由消息处理函数处理.比如我们点击按钮时就会产生BN_CLICKED消息,修改编辑框内容时会产生EN_CHANGE消息等.一般为了让某种操作达到效果,我们只需要实现某个消息的消息处理函数. 一.添加消息处理函数 鸡啄米仍以前面的加法计算器的程序为例,说明怎样为“计算”按钮控件添加消息处理函数.添加方法列出4种: 1.使用Clas…
上一节中鸡啄米讲了CFile文件操作类,本节主要来说说MFC异常处理. 在鸡啄米C++编程入门系列的最后一节鸡啄米:C++编程入门系列之五十(异常处理)中,鸡啄米讲了C++标准异常的处理机制,如果你还没有学过这方面内容,可以到那节教程中去学习下. MFC异常处理与C++标准异常处理是类似的,只是它在抛出和捕获异常时使用了一些宏,另外还将异常封装到了CException类及其派生类中.下面就分别讲解这些宏与异常类. MFC异常宏 MFC提供的异常处理宏包括TRY.CATCH.AND_CATCH.E…
前面几节鸡啄米讲了属性页对话框,我们可以根据所讲内容方便的建立自己的属性页对话框.本节讲解Windows系统中最常用最简单的一类对话框--消息对话框. 我们在使用Windows系统的过程中经常会见到消息对话框,提示我们有异常发生或提出询问等.因为在软件开发中经常用到消息对话框,所以MFC提供了两个函数可以直接生成指定风格的消息对话框,而不需要我们在每次使用的时候都要去创建对话框资源和生成对话框类等.这两个函数就是CWnd类的成员函数MessageBox()和全局函数AfxMessageBox()…
在MFC软件开发中,界面操作或者线程之间通信都会经常用到消息,通过对消息的处理实现相应的操作.比较典型的过程是,用户操作窗口,然后有消息产生,送给窗口的消息处理函数处理,对用户的操作做出响应. 一.什么是消息?  窗口消息一般由三个部分组成:1.一个无符号整数,是消息值:2.消息附带的WPARAM类型的参数:3.消息附带的LPARAM类型的参数.其实,我们一般所说的消息是侠义上的消息值,也就是一个无符号整数,经常被定义为宏. 二.什么是消息映射机制?  MFC使用一种消息映射机制来处理消息,在应…
鸡啄米的这套VS2010/MFC编程入门教程到此就全部完成了,虽然有些内容还未涉及到,但帮助大家进行VS2010/MFC的入门学习业已足够.以此教程的知识为基础,学习VS2010/MFC较为深入的内容已非难事.作为本教程的最后一课,鸡啄米将对前面所讲内容进行目录归纳,并对这八个月加班加点的努力进行总结. 一.VS2010/MFC编程入门教程之目录 第一部分:VS2010/MFC开发环境 VS2010/MFC编程入门之前言 VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解) 第…