cesium pick和射线的使用(工具篇)

一,ray(射线)的使用

cesium里的射线用得比较广泛,很多拾取功能需要根据射线来进行摄取,像“视线分析”,“通透率”等功能都可以用射线来做。cesium里根据一个原点+方向就可以做一条指向某个方向的射线。

cesium射线的构造类

常用的几种射线

1.沿着x轴方向的射线

2.沿着y轴方向是射线

3.垂直射线(沿着z轴方向的射线)

4.相机位置和屏幕坐标的连线做射线

5.相机位置和相机方向做射线

6.任意两个点A和点B,以A做原点做A指向B的射线

代码链接常用的几种射线

二,pick的使用

在Cesium中会看到很多pick,包括Scene,Camera,Glober,Picking里,接下来我们一一介绍

Scene里的pick方法

pick(windowPosition, width, height) 通过屏幕位置拾取,会返回拾取到的第一个“primitive”。width,height分别为拾取矩阵的长宽

drillPick (windowPosition, limit, width, height) 通过鼠标位置批量拾取对象

drillPickFromRay(ray,limit,objectsToExclude,width) 通过射线批量拾取

drillPickFromRayMostDetailed(ray,limit,objectsToExclude,width) 异步通过射线批量拾取

pickPositionWorldCoordinates( windowPosition,result) 通过屏幕位置拾取对应的世界坐标位置

pickPosition( windowPosition,result) 拾取屏幕位置对应的世界坐标位置

pickFromRay(ray, objectsToExclude, width) 通过射线拾取相交的第一个对象,返回对象和相交位置。这个方法只能拾取已经渲染好了的glober tiles和 3d tiles,无论它们可见与否

pickFromRayMostDetailed(ray, objectsToExclude, width) 支持异步拾取,和pickFromRay效果差不多

sampleHeight(position, objectsToExclude, width) 通过给定经纬度坐标返回拾取对象的高度信息,可用于glober,3dtiles等

clampToHeight(cartesian,objectsToExclude,width,result)通过给定的世界坐标返回物体表面的位置

sampleHeightMostDetailed(position, objectsToExclude, width) 异步通过给定经纬度坐标返回拾取对象的高度信息,可用于glober,3dtiles等

clampToHeightMostDetailed(cartesian,objectsToExclude,width,result)异步通过给定的世界坐标返回物体表面的位置

Camera里的pick方法

pickEllipsoid(windowPosition, ellipsoid, result) 根据相机位置和屏幕坐标拾取位于地球上的点

Globe里的pick方法

pickWorldCoordinates(ray,scene,cullBackFaces,result) 通过射线拾取地球上的坐标

pick(ray, scene, result)通过射线拾取地球上的坐标,内部调用了pickWorldCoordinates方法,但在不是3D场景时候做了坐标转换处理

Picking里的pick方法,Picking里的方法一般是集成到Scene,Camera,Glober里面了,Picking相当于基类

pick(scene, windowPosition, width, height) 通过屏幕坐标位置拾,会返回拾取到的第一个“primitive”。width,height分别为拾取矩阵的长宽。Scene里的pick方法正是调用的Picking

里的pick方法

pickPositionWorldCoordinates(scene,windowPosition,result)通过屏幕位置拾取对应的世界坐标位置,在Scene里面也被调用了

pickPosition( scne,windowPosition,result) 拾取屏幕位置对应的世界坐标位置,在Scene里面也被调用了

drillPick(scne,windowPosition, limit, width, height) 通过鼠标位置批量拾取对象,在Scene里面也被调用了

pickFromRay(scne,ray, objectsToExclude, width) 通过射线拾取相交的第一个对象,返回对象和相交位置。这个方法只能拾取已经渲染好了的glober tiles和 3d tiles,无论它们可见与否

drillPickFromRay(scne,ray,limit,objectsToExclude,width) 通过射线批量拾取

pickFromRayMostDetailed(scne,ray, objectsToExclude, width) 支持异步拾取,和pickFromRay效果差不多

drillPickFromRayMostDetailed(scne,ray,limit,objectsToExclude,width) 异步通过射线批量拾取

sampleHeight(scne, position, objectsToExclude, width) 通过给定经纬度坐标返回拾取对象的高度信息,可用于glober,3dtiles等

clampToHeight(scne,cartesian,objectsToExclude,width,result)通过给定的世界坐标返回物体表面的位置

sampleHeightMostDetailed(scne, position, objectsToExclude, width) 异步通过给定经纬度坐标返回拾取对象的高度信息,可用于glober,3dtiles等

clampToHeightMostDetailed(scne,cartesian,objectsToExclude,width,result)异步通过给定的世界坐标返回物体表面的位置

ImageryLayerCollection 里的pick方法

pickImageryLayerFeatures(ray,scene) 通过射线拾取feature

代码链接cesium pick方法汇总

你可能感兴趣的:(cesium pick和射线的使用(工具篇))