一庭呜,ray(射線)的使用
cesium里的射線用得比較廣泛,很多拾取功能需要根據(jù)射線來(lái)進(jìn)行攝取钢颂,像“視線分析”钞它,“通透率”等功能都可以用射線來(lái)做。cesium里根據(jù)一個(gè)原點(diǎn)+方向就可以做一條指向某個(gè)方向的射線殊鞭。
常用的幾種射線
1.沿著x軸方向的射線
2.沿著y軸方向是射線
3.垂直射線(沿著z軸方向的射線)
4.相機(jī)位置和屏幕坐標(biāo)的連線做射線
5.相機(jī)位置和相機(jī)方向做射線
6.任意兩個(gè)點(diǎn)A和點(diǎn)B遭垛,以A做原點(diǎn)做A指向B的射線
代碼鏈接常用的幾種射線
二,pick的使用
在Cesium中會(huì)看到很多pick,包括Scene,Camera,Glober,Picking里操灿,接下來(lái)我們一一介紹
Scene里的pick方法
pick(windowPosition,?width,?height) 通過(guò)屏幕位置拾取锯仪,會(huì)返回拾取到的第一個(gè)“primitive”。width趾盐,height分別為拾取矩陣的長(zhǎng)寬
drillPick (windowPosition,?limit,?width,?height) 通過(guò)鼠標(biāo)位置批量拾取對(duì)象
drillPickFromRay(ray,limit,objectsToExclude,width) 通過(guò)射線批量拾取
drillPickFromRayMostDetailed(ray,limit,objectsToExclude,width) 異步通過(guò)射線批量拾取
pickPositionWorldCoordinates(?windowPosition,result) 通過(guò)屏幕位置拾取對(duì)應(yīng)的世界坐標(biāo)位置
pickPosition(?windowPosition,result) 拾取屏幕位置對(duì)應(yīng)的世界坐標(biāo)位置
pickFromRay(ray,?objectsToExclude,?width) 通過(guò)射線拾取相交的第一個(gè)對(duì)象庶喜,返回對(duì)象和相交位置。這個(gè)方法只能拾取已經(jīng)渲染好了的glober tiles和 3d tiles,無(wú)論它們可見(jiàn)與否
pickFromRayMostDetailed(ray,?objectsToExclude,?width) 支持異步拾取救鲤,和pickFromRay效果差不多
sampleHeight(position,?objectsToExclude,?width) 通過(guò)給定經(jīng)緯度坐標(biāo)返回拾取對(duì)象的高度信息溃卡,可用于glober,3dtiles等
clampToHeight(cartesian,objectsToExclude,width,result)通過(guò)給定的世界坐標(biāo)返回物體表面的位置
sampleHeightMostDetailed(position,?objectsToExclude,?width) 異步通過(guò)給定經(jīng)緯度坐標(biāo)返回拾取對(duì)象的高度信息,可用于glober,3dtiles等
clampToHeightMostDetailed(cartesian,objectsToExclude,width,result)異步通過(guò)給定的世界坐標(biāo)返回物體表面的位置
Camera里的pick方法
pickEllipsoid(windowPosition,?ellipsoid,?result) 根據(jù)相機(jī)位置和屏幕坐標(biāo)拾取位于地球上的點(diǎn)
Globe里的pick方法
pickWorldCoordinates(ray,scene,cullBackFaces,result) 通過(guò)射線拾取地球上的坐標(biāo)
pick(ray,?scene,?result)通過(guò)射線拾取地球上的坐標(biāo),內(nèi)部調(diào)用了pickWorldCoordinates方法蜒简,但在不是3D場(chǎng)景時(shí)候做了坐標(biāo)轉(zhuǎn)換處理
Picking里的pick方法瘸羡,Picking里的方法一般是集成到Scene,Camera,Glober里面了,Picking相當(dāng)于基類
pick(scene,?windowPosition,?width,?height) 通過(guò)屏幕坐標(biāo)位置拾搓茬,會(huì)返回拾取到的第一個(gè)“primitive”犹赖。width,height分別為拾取矩陣的長(zhǎng)寬卷仑。Scene里的pick方法正是調(diào)用的Picking
里的pick方法
pickPositionWorldCoordinates(scene,windowPosition,result)通過(guò)屏幕位置拾取對(duì)應(yīng)的世界坐標(biāo)位置,在Scene里面也被調(diào)用了
pickPosition( scne,windowPosition,result) 拾取屏幕位置對(duì)應(yīng)的世界坐標(biāo)位置,在Scene里面也被調(diào)用了
drillPick(scne峻村,windowPosition,?limit,?width,?height) 通過(guò)鼠標(biāo)位置批量拾取對(duì)象,在Scene里面也被調(diào)用了
pickFromRay(scne,ray,?objectsToExclude,?width) 通過(guò)射線拾取相交的第一個(gè)對(duì)象锡凝,返回對(duì)象和相交位置粘昨。這個(gè)方法只能拾取已經(jīng)渲染好了的glober tiles和 3d tiles,無(wú)論它們可見(jiàn)與否
drillPickFromRay(scne,ray,limit,objectsToExclude,width) 通過(guò)射線批量拾取
pickFromRayMostDetailed(scne,ray,?objectsToExclude,?width) 支持異步拾取,和pickFromRay效果差不多
drillPickFromRayMostDetailed(scne,ray,limit,objectsToExclude,width) 異步通過(guò)射線批量拾取
sampleHeight(scne,?position,?objectsToExclude,?width) 通過(guò)給定經(jīng)緯度坐標(biāo)返回拾取對(duì)象的高度信息张肾,可用于glober,3dtiles等
clampToHeight(scne,cartesian,objectsToExclude,width,result)通過(guò)給定的世界坐標(biāo)返回物體表面的位置
sampleHeightMostDetailed(scne,?position,?objectsToExclude,?width) 異步通過(guò)給定經(jīng)緯度坐標(biāo)返回拾取對(duì)象的高度信息芭析,可用于glober,3dtiles等
clampToHeightMostDetailed(scne,cartesian,objectsToExclude,width,result)異步通過(guò)給定的世界坐標(biāo)返回物體表面的位置
ImageryLayerCollection 里的pick方法
pickImageryLayerFeatures(ray,scene) 通過(guò)射線拾取feature
代碼鏈接cesium pick方法匯總