随笔分类 - Cesium
摘要:God does NOT play dice with the Universe! 什么是随机(random)?字典中给出的定义是无计划,无序和无目的,纯靠运气。随机是生活中必不可少的成分,比如彩票,游戏,安全,早餐吃什么,这些行为都有一些随机的成分,但我们能说这些行为都是随机的吗? 比如早餐,吃的人以为是随机的,做什么吃什么,对厨师而言,可能是精心安排的,就不算随机行...
阅读全文
摘要:所谓的热点图,是图1)构建一张灰度图,图2)在每个热点的位置上绘制并叠加形成灰色的热点图,图3)根据颜色表生成热点图。不难看出,最核心的是图2的过程。详情参考《可视化之热点图》。 图1 图2&图3 1强调两处细节 这种思路效率高,缺点就是不够灵活,每个点都是同一个样式,没有考虑该点的半径和权重。创建大小不一的模版(章),每个热点根据自己的半径值选择对应的章...
阅读全文
摘要:投影的数学意义 A projection is the transformation of points and lines in one plane onto another plane by connecting corresponding points on the two planes with parallel lines. 投影的概念很简单,就是投射的影子。好比黑暗屋子...
阅读全文
摘要:柏拉图认为,尽管世间万物是不完美的,但存在一种永恒不变的形式,这个形式是完美的,而生命的意义就是让这个世界尽可能的接近这个完美的形式。 怎么理解这句话,和我们今天讲的精度有什么关系。我们先举一个例子,方便大家的理解。比如一个圆,对应的数学形式为: 相信大家都不会否认这个公式很优雅,真的可以用完美无瑕来形容了。现在画出来,去其中的一段圆弧,你就意识到...
阅读全文
摘要:1球心坐标(ECEF)与本地坐标(NEU) 假如你来到一个陌生城市,你很可能需要问路、通常会告诉你向北走100米,右转,向东走100米,理解起来很直观。你给儿子买了一个地球仪,你从北京(39,115)转到伦敦 (51,0),这个动作就可以分解为两步:先转到同一个经度(39,0),在转到同一个维度(51,0) 这个例子体现了一个问题:不同的地理范围下会使用更适合的坐标系。比...
阅读全文
摘要:内容是个人经验的梳理,如有不妥之处,望专家指点一二,感激不尽。 上一节回忆了背单词初期的心酸往事,颇有感慨。本篇说说词汇量和阅读。 1词汇量 如何客观了解自己的词汇量?这里推荐两个平台。一个是testyourvocab网站:http://testyourvocab.com/,另一个是百词斩。我在两个平台下的测试结果都差不多,大家不妨交叉使用。每次测试时间不到5min,每个月测最多一次...
阅读全文
摘要:个人结论:目前,在演示层面,3D Tiles问题不大,但项目应用上就不够成熟了,所以问问自己,你是想吃瓜呢还是想吃螃蟹? 好的方面 数据规范 我非常喜欢glTF的整体设计,概括有四点:第一,数据块(Buffer)连续,保证了读写性能;第二,提供了视图(View)和访问器(Accessor)的概念,在不损失数据块完整性的前提下提供类型信息和读取规范,保证了兼容性;第三,逻辑层和...
阅读全文
摘要:上一节介绍3D Tiles渲染调度的时候,我们提到目前Cesium支持的Cesium3DTileContent目前支持如下类型: Batched3DModel3DTileContent Instanced3DModel3DTileContent PointCloud3DTileContent Composite3DTileContent 其中Composite3...
阅读全文
摘要:Cesium在2016年3月份左右推出3D Tiles数据规范,在glTF基础上提供了LOD能力,定位就是Web环境下海量三维模型数据。虽然目前3D Tiles还是Beta阶段,有不少硬伤,但3D Tiles数据规范于2016年9月30日开始了OGC标准化进程,积极成分还是很大。 之前的glTF时分享了个人对二进制格式的一些想法和谨慎的态度。3D Tiles简单说就是...
阅读全文
摘要:关键字:Cesium glTF WebGL技术 大纲: 1 glTF简介,这是一个什么东西,有哪些特点 2 Cesium如何加载,渲染glTF,逻辑结构和关键技术 3 个人总结,从glTF学习如何设计一个二进制格式,个人想法分享 共计 4000字 | 建议阅读时间 未知 1 glTF简介 之前介绍了Cesium的Property,Material,Batch,GroundPrimit...
阅读全文
摘要:今天来看看GroundPrimitive,选择GroundPrimitive有三个目的:1 了解GroundPrimitive和Primitive的区别和关系 2 createGeometry的特殊处理 3 如何通过阴影体的方式实现贴地效果。 GroundPrimitive.prototype.update 可以认为GroundPrimitive是Primitive的扩...
阅读全文
摘要:通过之前的Material和Entity介绍,不知道你有没有发现,当我们需要添加一个rectangle时,有两种方式可供选择,我们可以直接添加到Scene的PrimitiveCollection,也可以构造一个Entity,添加到Viewer的EntityCollection中,代码如下: // 直接构造Primitive,添加 rectangle = scene.primitive...
阅读全文
摘要:Shader 首先,在本文开始前,我们先普及一下材质的概念,这里推荐材质,普及材质的内容都是截取自该网站,我觉得他写的已经够好了。在开始普及概念前,推荐一首我此刻想到的歌《光---陈粒》。 在真实世界里,每个物体会对光产生不同的反应。钢看起来比陶瓷花瓶更闪闪发光,一个木头箱子不会像钢箱子一样对光产生很强的反射。每个物体对镜面高光也有不同的反应。有些物体不会散射(Scatter)很...
阅读全文
摘要:星期一的早上,我在办公区鸟瞰窗外,目光所到之处,用顾城的那首“你看天时很近,看我时很远”倒是格外的应景。作为一名父亲,看着工位上3M的口罩,想想此刻还在熟睡的孩子,多少有些无奈——又是PM25指数200+的一天。这么大的中国,如何给孩子找一方净土,让孩子能够健康快乐的成长。正是带着这样的一个想法,我查询了几个我比较关注的城市的PM值,比如北京,成都,杭州,深圳,厦门等地方,都不理想,...
阅读全文
摘要:之前主要是Entity的一个大概流程,本文主要介绍Cesium的属性,比如defineProperties,Property(ConstantProperty,CallbackProperty,ConstantPositionProperty)以及createPropertyDescriptor的相关内容,研究一下Cesium对Object的属性设计和使用方式。 我们以...
阅读全文
摘要:上一篇,我们介绍了当我们添加一个Entity时,通过Graphics封装其对应参数,通过EntityCollection.Add方法,将EntityCollection的Entity传递到DataSourceDisplay.Visualizer中。本篇则从Visualizer开始,介绍数据的处理,并最终实现渲染的过程。 CesiumWidget.prototype.render = ...
阅读全文
摘要:之前的最长的一帧系列,我们主要集中在地形和影像服务方面。简单说,之前我们都集中在地球是怎么造出来的,从这一系列开始,我们的目光从GLOBE上解放出来,看看球面上的地物是如何渲染的。本篇也是先开一个头,讲一下涉及到的类结构和整体的流程,有一个系统的,概括的理解。 我们先看看Cesium的渲染队列: var Pass = { // 环境,比如大气层,月亮,天空盒等 ...
阅读全文
摘要:最近研究Cesium的实例化,尽管该技术需要在WebGL2.0,也就是OpenGL ES3.0才支持。调试源码的时候眼前一亮,发现VAO和glDrawBuffers都不是WebGL1.0的标准函数,都是扩展功能,看来WebGL2.0标准的推广势在必行啊。同时发现,通过ANGLE_instanced_arrays的扩展,也可以在WebGL1.0下实现实例化,创建实例化方法的代码如下: ...
阅读全文
摘要:VAO VAO(Vertext Array Object),中文是顶点数组对象。之前在《Buffer》一文中,我们介绍了Cesium如何创建VBO的过程,而VAO可以简单的认为是基于VBO的一个封装,为顶点属性数组和VBO中的顶点数据之间建立了关联。我们来看一下使用示例: var indexBuffer = Buffer.createIndexBuffer({ co...
阅读全文
摘要:Cesium不仅仅提供了FBO,也就是Framebuffer类,而且整个渲染过程都是在FBO中进行的。FBO,中文就是帧缓冲区,通常都属于高级用法,但其实,如果你了解了它的基本原理后,用起来还是很简单的,关键在于理解。比如你盖楼,地基没打好,盖第一层楼,还可以,盖第二层楼,有点挫了,盖第三层楼,塌了。你会认为第三层楼(FBO)太难了,其实根本原因还是出在地基上。 窗口系...
阅读全文