快三年了,在写了四篇文章,关于Cesium的基本都是水一下,不是不想写,一是没时间,二来确实比较懒,关于Cesium已经一年多没有看过了,最多也就关注一下官网的更新内容,对于Cesium深入了解还真没有下功夫。
最近公司业务调整,手头的业务也停掉了,只剩下维护了,也没有继续待着的意义了,趁着换工作的空,整理一下以前抄过、请教过、写过的一些东西吧,不确定能写多少,就简单记录一下吧。
Ceisum本身有一个clipPlane可以进行裁剪,但是不支持多边形裁剪,想要支持多边形裁剪也要费一番功夫。
多边形裁剪的主要原理:
一、构造裁剪多边形;
二、将构造多边形的定点归化到模型局部坐标系,并获取模型Rectangle,记录并传递给片元着色器;
三、将多边形渲染到到一张构造的纹理上,给多边形一个绘制的颜色,并将纹理赋值给片元着色器;
四、在顶点着色器中把从attribute获取到的定点传递给片元着色器,如
gl_Position = czm_projectionu_modelViewMatrix viewPos; //投影矩阵模型视图矩阵顶点坐标
中的viewPosxyz;
五、在片元着色器中,根据(四)中传递过来的顶点,判定该顶点是否在(二)中的rectangle中,若在,则计算该顶点在(三)中纹理的uv坐标,用texture2D(texture,uv)获取当前顶点的color值,若不为空,则继续,若为空则discard并返回。
通过以上步骤就可以实现以多边形为边界的模型裁剪。
ArcGIS Server发布服务的方式有多种,最常用的就是通过ArcMap发布。
1、首先在打开您要发布的地图文档,将坐标系切换到3857,具体 *** 作如下:右键Layers,打开属性,切换到Coordinate System标签下,在搜索栏中搜索3857,选中WGS 1984 Web Mercator(auxiliary sphere),确定即可。
2、然后点击File->Share As->Service…,打开Share as Service窗口,如下:
3、选择Publish a service,点击下一步
4、选择ArcGIS Server连接以及设置服务名称,点击下一步,直到ServiceEditor
5、ArcGIS Server的参数非常丰富,可以适应各种需求。目前cesiumlab支持的ArcGIS Server切片必须进行如下设置:
6、在Caching中,
Draw this map service:选择Using tiles from a cache;
Tiling Scheme:选择ArcGIS Online/Bing Maps/Google Maps;
Levels of Detail:默认即可;
7、在Caching->Advanced Settings->Advanced中,将Storage Format切换为EXPLODED,确定。注:该界面的Cache directory是设置切片存储路径的,请记下该路径。
8、最后点击右上角的Publish,等待几秒后d出Copying Data Server窗口,点OK,之后就是复制数据,打包,处理,生成缓存切片等过程
9、完成时将会提示Service Publishing Result
默认情况下,切片数据存储在<Cache directory>/ <mapservername>/Layers下面。
1、打开cesiumlab,切换到分发服务页面,点击添加,d出添加数据窗口
2、点击选择文件夹,选择<Cache directory>/ <mapservername>/Layers,数据名称可以随意设置,然后点击确定。
3、这时,在服务列表中会多出一条记录,通过点击服务路径可跳转至三维视图查看该数据。
至此,cesiumlab完成加载ArcGIS Server切片数据,小伙伴们快来动手试试吧!
没听过这种坐标系。但是你这个实现很简单,你plane的face有一个法向量。这是个attribute,geometry都有的假定你法向量normal=vector3(a,b,c)你中心点位置为postion=vector4(0,0,0,1)你移动距离是distance=1那么你要求的点的位置实际上
以上就是关于Cesium 3Dtiles模型多边形裁剪简单整理全部的内容,包括:Cesium 3Dtiles模型多边形裁剪简单整理、在CesiumLab中加载ArcGIS Server切片数据、如何修改cesium geometry的位置position等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)