自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 cesium3Dtileset旋转平移

Cesium的gltf模型和3dtileset的平移旋转。

2018-11-22 16:48:23 4840 10

原创 Cesium地形裁剪,Cesium3DTileset裁剪

基于纹理映射实现的裁剪,反裁剪也可以。比判断点是否在多边形内裁剪性能要好的多,确点是在边缘锯齿感会比较明显。

2023-07-30 12:46:51 557 1

原创 Cesium双屏联动,二三维联动

Cesium双屏联动,二三维联动

2022-11-25 19:42:05 1602 2

原创 Cesium矢量编辑绘图(新)

Cesium矢量绘图

2022-09-19 16:05:26 596

原创 Cesium自定义Primitive

一般情况下我们使用实体类时,会直接用Entity,但是动态更新实时渲染的不闪烁的话,得使用CallbackProperty回调函数,比较麻烦。可以通过自定义Primitive达到实时渲染效果。function CustomPolygonPrimtive (options) { this.positions = options.positions this.color = options.color this._positions = undefined this._c

2022-01-11 11:51:36 3120 3

原创 Cesium3dtileset多区域裁剪(优化)

计算顶点坐标时,要区分3dtileset的upAxis轴向,轴向不同,顶点的计算也不同,可能是xy, xz,yz都有可能。裁剪做好后,压平,水印原理都一样的

2021-10-12 18:19:20 2169 4

原创 Cesium使用clampToHeightMostDetailed或者sampleHeightMostDetailed获取3Dtileset上的坐标高程始终获取不到问题。

为了方便对于多个3Dtileset管理和删除,我使用了new PrimitiveCollection()集合去加载3Dtileset。数据加载是没问题的,通过同步的sampleHeight和clampToHeight获取到的高程也是对的。但是我们现在有很多个点,遍历同步去获取性能开销太大,于是采用异步的clampToHeightMostDetailed和sampleHeightMostDetailed去获取,却始终获取的是地面的高度。经过调式,发现问题在Cesium源码上在上面的getT..

2021-08-30 15:15:38 4001 4

原创 Threejs动态箭头

由于Threejs的line不支持线宽,所以使用Line2来画线,但是Line2的纹理坐标并不是0到1的,而是每一段是 -1到1的纹理坐标,在端点和拐角处会有大于1和小于-1的一小部分,这部分需要做箭头时处理下。复写了LineGeometry继承的LineSegmentsGeometry的源码,通过给线的每一段增加参数,然后复写了LineMaterial的shader,使纹理坐标呈线性的,就可以达到这种效果了;箭头并没有采用贴图,而是通过shader硬算抠出来的箭头也,用纹理贴图的话会简单些。..

2021-08-05 11:12:23 2101 4

原创 Cesium多区域视频裁剪

自定义了一个Material材质类,用与多区域裁剪,可以裁剪任意多个区域,也支持凹凸变形裁剪,内部使用纹理坐标去裁剪,所以不支持纹理旋转。视屏效果可以见知乎https://www.zhihu.com/zvideo/1405561605292101632...

2021-08-02 16:15:22 671

原创 shader判断点是否在多边形内

var points = [];//由于shader只能传固定长度,所以这里的长度要写成定好的,并且不能长度不能为0;//二三维一样的,改下类型就行了,一般只用判断是否在平面内var shader = `bool pointInPolygon(vec3 p, vec3 points[${points.length}]){ bool inside = false; const int length = ${points.length}; for (int i = 0; i < le.

2021-06-08 13:57:03 1150 2

原创 Cesium的3dtileset坐标和高度问题

平时我加载的3Dtileset内部是模型坐标系的,模型定位的话使用Cesium.Transforms.headingPitchRollToFixedFrame去控制位置和方向角。但是有时会遇到3Dtileset内部是世界坐标系的,那就不需要上面的定位了,因为内部自己有坐标。可是有时候3Dtileset会在地下,或者有一点小偏移需要纠正。那就可以使用Cesium.Matrix4.multiplyByTranslation(tileset.root.transform, new Cesium.Carte

2021-03-01 15:20:33 3218 1

原创 parcel 2.0 js中引入图片问题

使用parcel时,在js中引入图片是使用 import logo from "./logo.png"时,编译报错应该改为 import logo from "url:./logo.png"

2021-02-23 16:08:19 399 1

原创 Cesium3DTileset任意面裁剪,压平,水印效果

凸起来来的地方是设置的压平区域,加了一张星际穿越的水印到模型上,五角星区域是任意区域裁剪。

2020-12-24 16:48:49 4233 10

原创 Cesium地形裁剪(任意多边形,多区域裁剪)

要做到这个功能需要修改cesium的源码,修改了GlobeVS.js、GlobeFS.js、Globe.js、GlobeSurfaceTileProvider.js、GlobeSurfaceShaderSet.js文件。

2020-11-19 18:15:34 4049 10

原创 Cesium和ThreeJS视角同步

左侧为Cesium,右侧为ThreejsThreejs加了控制器后,直接修改相机会被控制器还原,所以不能直接去修改相机,得从控制器入手。

2020-09-11 18:43:03 1553 4

原创 Cesium加载gif图片

扩展了property类,加载gif图

2020-06-19 19:42:40 2181 3

原创 Cesium第一视角飞行(相机跟随漫游,跟随定点转弯)

Cesium实现的视角跟随漫游,跟随定点转弯,可以直接设置漫游速度和转角速度,也可以暂停和继续。由于CSDN不能上传视频,可以看我发到知乎的视屏Cesium漫游...

2020-04-23 14:36:49 12459 22

原创 Cesium不随球转动的Label

用Cesium的label加载文字时,文字始终是面向用户这一边,不能很好的控制角度,刚好有个需求需要文字不随球转动,就像二维地图上那种水平的文字一样。解决方案:假设文字的坐标为var position = new Cesium.Cartesian3.fromDegrees(x, y, z)1. Cesium内部有文字转Canvas的方法,Cesium.writeTextToCanv...

2019-10-21 18:55:25 2796 1

原创 Cesium矢量编辑(点,线,圆,多边形,矩形)

在github上看到过一个drawhelp的矢量编辑, 拉取下来看后,却发现,这个矢量编辑是在没有地形的情况下才能完好的使用,有地形的时候点都跑到地下去了。我们的需求确实需要在地形上也可以编辑。后来就尝试将drawhelp改成我们的,改来改去还是有很多问题。弄得头都大了,干脆自己写一个得了,后来就写出来这个, 感觉还是自己动手舒服,出了bug知道问题在哪里,不像用别人的,bug都要找半天,浪费了很...

2018-12-21 11:22:04 8124 27

原创 Cesium标注聚合,没有聚合的文字不显示问题

做Cesium的标注聚合时。使用官方的例子dataSource聚合new Cesium.Entity({position:position,label:{}})标签时,没聚合的文字却并没有显示出来,经过调试后发现问题在Cesium的源码; Cesium1.62版本时解决了这个问题,如果是以前的版本的朋友,可以看下面的解决方案Cesium1.62日志解决方案:如下图所示,问题在箭头标...

2018-12-05 15:21:15 5449 5

原创 Cesium空间中AB两点A绕B点的地面法向量旋转任意角度后新的A点坐标(A’)

var A = new Cesium.Cartesian3(675679.994355399, 4532763.148054989, 4426298.210847025);var B = new Cesium.Cartesian3(675520.4303984543, 4532803.837842555, 4425994.113846752);// 计算B的地面法向量var chicB...

2018-09-03 17:40:31 4040 1

原创 cesium绕点飞行一周和原地旋转一周

1. 相机绕点飞行一周(原理其实就是给定距离和看的角度,一直去改变相机的heading就可以了) // 相机看点的角度,如果大于0那么则是从地底往上看,所以要为负值,这里取-30度 var pitch = Cesium.Math.toRadians(-30); // 给定飞行一周所需时间,比如10s, 那么每秒转动度数 var angle = 360 / 10;...

2018-08-08 09:50:09 7895 3

原创 cesium矩阵和方位角heading ,pitch, roll的相互转换

// 假设当前模型的经纬度坐标为{114, 30, 1000} 方位角{heading: 30, pitch: 20, roll: 10} 都是角度来计算 // 1. 根据坐标, 方位角计算世界矩阵 var position = Cesium.Cartesian3.fromDegrees(114, 30, 1000); v...

2018-07-12 19:00:53 9901 5

原创 cesium自定义气泡随着球转动

var setPosition = function () { // 世界坐标 var changedC = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, position); if ...

2018-07-05 12:02:42 2466 1

原创 knockouout的foreach里面访问不到监控的属性

&lt;ul&gt;&lt;!-- ko foreach: spatiaQueryList --&gt; &lt;li data-bind="text: $data, css: {spatial_active: spatiaQueryIndex() === $index()}, click:spatiaLiClick.bind($data, $index())"&gt;&lt;/li&...

2018-07-04 17:44:33 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除