- 博客(25)
- 收藏
- 关注
原创 Cesium地形裁剪,Cesium3DTileset裁剪
基于纹理映射实现的裁剪,反裁剪也可以。比判断点是否在多边形内裁剪性能要好的多,确点是在边缘锯齿感会比较明显。
2023-07-30 12:46:51
829
3
原创 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
3715
3
原创 Cesium3dtileset多区域裁剪(优化)
计算顶点坐标时,要区分3dtileset的upAxis轴向,轴向不同,顶点的计算也不同,可能是xy, xz,yz都有可能。裁剪做好后,压平,水印原理都一样的
2021-10-12 18:19:20
2479
4
原创 Cesium使用clampToHeightMostDetailed或者sampleHeightMostDetailed获取3Dtileset上的坐标高程始终获取不到问题。
为了方便对于多个3Dtileset管理和删除,我使用了new PrimitiveCollection()集合去加载3Dtileset。数据加载是没问题的,通过同步的sampleHeight和clampToHeight获取到的高程也是对的。但是我们现在有很多个点,遍历同步去获取性能开销太大,于是采用异步的clampToHeightMostDetailed和sampleHeightMostDetailed去获取,却始终获取的是地面的高度。经过调式,发现问题在Cesium源码上在上面的getT..
2021-08-30 15:15:38
4858
4
原创 Threejs动态箭头
由于Threejs的line不支持线宽,所以使用Line2来画线,但是Line2的纹理坐标并不是0到1的,而是每一段是 -1到1的纹理坐标,在端点和拐角处会有大于1和小于-1的一小部分,这部分需要做箭头时处理下。复写了LineGeometry继承的LineSegmentsGeometry的源码,通过给线的每一段增加参数,然后复写了LineMaterial的shader,使纹理坐标呈线性的,就可以达到这种效果了;箭头并没有采用贴图,而是通过shader硬算抠出来的箭头也,用纹理贴图的话会简单些。..
2021-08-05 11:12:23
2505
6
原创 Cesium多区域视频裁剪
自定义了一个Material材质类,用与多区域裁剪,可以裁剪任意多个区域,也支持凹凸变形裁剪,内部使用纹理坐标去裁剪,所以不支持纹理旋转。视屏效果可以见知乎https://www.zhihu.com/zvideo/1405561605292101632...
2021-08-02 16:15:22
802
原创 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
1510
2
原创 Cesium的3dtileset坐标和高度问题
平时我加载的3Dtileset内部是模型坐标系的,模型定位的话使用Cesium.Transforms.headingPitchRollToFixedFrame去控制位置和方向角。但是有时会遇到3Dtileset内部是世界坐标系的,那就不需要上面的定位了,因为内部自己有坐标。可是有时候3Dtileset会在地下,或者有一点小偏移需要纠正。那就可以使用Cesium.Matrix4.multiplyByTranslation(tileset.root.transform, new Cesium.Carte
2021-03-01 15:20:33
3441
1
原创 parcel 2.0 js中引入图片问题
使用parcel时,在js中引入图片是使用 import logo from "./logo.png"时,编译报错应该改为 import logo from "url:./logo.png"
2021-02-23 16:08:19
453
1
原创 Cesium3DTileset任意面裁剪,压平,水印效果
凸起来来的地方是设置的压平区域,加了一张星际穿越的水印到模型上,五角星区域是任意区域裁剪。
2020-12-24 16:48:49
4424
10
原创 Cesium地形裁剪(任意多边形,多区域裁剪)
要做到这个功能需要修改cesium的源码,修改了GlobeVS.js、GlobeFS.js、Globe.js、GlobeSurfaceTileProvider.js、GlobeSurfaceShaderSet.js文件。
2020-11-19 18:15:34
4457
10
原创 Cesium和ThreeJS视角同步
左侧为Cesium,右侧为ThreejsThreejs加了控制器后,直接修改相机会被控制器还原,所以不能直接去修改相机,得从控制器入手。
2020-09-11 18:43:03
1714
4
原创 Cesium第一视角飞行(相机跟随漫游,跟随定点转弯)
Cesium实现的视角跟随漫游,跟随定点转弯,可以直接设置漫游速度和转角速度,也可以暂停和继续。由于优快云不能上传视频,可以看我发到知乎的视屏Cesium漫游...
2020-04-23 14:36:49
13369
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
3326
2
原创 Cesium矢量编辑(点,线,圆,多边形,矩形)
在github上看到过一个drawhelp的矢量编辑, 拉取下来看后,却发现,这个矢量编辑是在没有地形的情况下才能完好的使用,有地形的时候点都跑到地下去了。我们的需求确实需要在地形上也可以编辑。后来就尝试将drawhelp改成我们的,改来改去还是有很多问题。弄得头都大了,干脆自己写一个得了,后来就写出来这个, 感觉还是自己动手舒服,出了bug知道问题在哪里,不像用别人的,bug都要找半天,浪费了很...
2018-12-21 11:22:04
8329
27
原创 Cesium标注聚合,没有聚合的文字不显示问题
做Cesium的标注聚合时。使用官方的例子dataSource聚合new Cesium.Entity({position:position,label:{}})标签时,没聚合的文字却并没有显示出来,经过调试后发现问题在Cesium的源码; Cesium1.62版本时解决了这个问题,如果是以前的版本的朋友,可以看下面的解决方案Cesium1.62日志解决方案:如下图所示,问题在箭头标...
2018-12-05 15:21:15
5674
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
4345
原创 cesium绕点飞行一周和原地旋转一周
1. 相机绕点飞行一周(原理其实就是给定距离和看的角度,一直去改变相机的heading就可以了) // 相机看点的角度,如果大于0那么则是从地底往上看,所以要为负值,这里取-30度 var pitch = Cesium.Math.toRadians(-30); // 给定飞行一周所需时间,比如10s, 那么每秒转动度数 var angle = 360 / 10;...
2018-08-08 09:50:09
8170
2
原创 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
10735
5
原创 cesium自定义气泡随着球转动
var setPosition = function () { // 世界坐标 var changedC = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, position); if ...
2018-07-05 12:02:42
2524
1
原创 knockouout的foreach里面访问不到监控的属性
<ul><!-- ko foreach: spatiaQueryList --> <li data-bind="text: $data, css: {spatial_active: spatiaQueryIndex() === $index()}, click:spatiaLiClick.bind($data, $index())"></li&...
2018-07-04 17:44:33
169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人