麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

Cesium API - Occluder 中文文档

本文介绍下Cesium中 Occluder API的详细使用说明。

Occluder API 调用方法

new Cesium.Occluder(occluderBoundingSphere, cameraPosition)
创建从物体的位置和半径以及相机位置派生的遮光器(Occluder)。 遮光器可用于确定其他物体是否可见或隐藏在遮光器和相机位置所定义的可见视界后面。
Name Type Description
occluderBoundingSphere BoundingSphere 包围遮光器(occluder)的包围球。
cameraPosition Cartesian3 查看器/相机的坐标。
示例:
// 构造一个距离原点一个单位,半径为1的遮挡器。
var cameraPosition = Cesium.Cartesian3.ZERO;
var occluderBoundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 1);
var occluder = new Cesium.Occluder(occluderBoundingSphere, cameraPosition);

成员变量

cameraPosition : Cartesian3
相机的位置。
遮光器的位置。
radius : Number
遮光器的半径。

内置方法

staticCesium.Occluder.computeOccludeePoint(occluderBoundingSphere, occludeePosition, positions)Object
计算一个可以用作可见性函数的遮光器位置的点。 对遮光器半径使用0。通常,用户计算一个用于可见性的对象周围的包围球; 然而,也可以计算一个点,如果看到/没有看到,也可以表明一个对象是否可见/不可见。 对于那些相对于遮光器不移动且较大的物体(如大块地形),最好调用此函数。 您最好不要调用它,而是将对象的包围球用于诸如卫星或地面车辆之类的物体。
Name Type Description
occluderBoundingSphere BoundingSphere 包围遮光器的包围球。
occludeePosition Cartesian3 遮光器(半径为0的包围球)所在的点。
positions Array.<Cartesian3> 遮光器表面附近地平线上的高度点列表。
返回值:
包含两个属性的对象:occludeePointvalid,这是一个布尔值。
异常情况:
  • DeveloperError : positions必须包含至少一个元素。
  • DeveloperError : occludeePosition必须有一个不同于occluderBoundingSphere.center的值。
示例:
var cameraPosition = new Cesium.Cartesian3(0, 0, 0);
var occluderBoundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -8), 2);
var occluder = new Cesium.Occluder(occluderBoundingSphere, cameraPosition);
var positions = [new Cesium.Cartesian3(-0.25, 0, -5.3), new Cesium.Cartesian3(0.25, 0, -5.3)];
var tileOccluderSphere = Cesium.BoundingSphere.fromPoints(positions);
var occludeePosition = tileOccluderSphere.center;
var occludeePt = Cesium.Occluder.computeOccludeePoint(occluderBoundingSphere, occludeePosition, positions);
staticCesium.Occluder.computeOccludeePointFromRectangle(rectangle, ellipsoid)Object
从矩形中计算一个可以用作可见性函数的遮光器位置的点。
Name Type Default Description
rectangle Rectangle 用于创建包围球的矩形。
ellipsoid Ellipsoid Ellipsoid.WGS84 optional 用来确定矩形位置的椭球体。
返回值:
包含两个属性的对象:occludeePointvalid,这是一个布尔值。
staticCesium.Occluder.fromBoundingSphere(occluderBoundingSphere, cameraPosition, result)Occluder
从包围球和相机位置创建一个遮光器。
Name Type Description
occluderBoundingSphere BoundingSphere 包围遮光器的包围球。
cameraPosition Cartesian3 查看器/相机的坐标。
result Occluder optional 存储结果的对象。
返回值:
遮光器派生于物体的位置和半径,以及相机的位置。
computeVisibility(occludeeBS)Number
确定遮光器可见的程度(不可见、部分可见或完全可见)。
Name Type Description
occludeeBS BoundingSphere 遮光器的包围球。
返回值:
如果遮光器不可见,则为Visibility.NONE; 如果遮光器部分可见,则为Visibility.PARTIAL;如果遮光器完全可见,则为Visibility.FULL。
示例:
var sphere1 = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1.5), 0.5);
var sphere2 = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -2.5), 0.5);
var cameraPosition = new Cesium.Cartesian3(0, 0, 0);
var occluder = new Cesium.Occluder(sphere1, cameraPosition);
occluder.computeVisibility(sphere2); //returns Visibility.NONE
参考:
  • Occluder#isVisible
isBoundingSphereVisible(occludee)Boolean
确定一个球体(occludee)是否被遮光器隐藏。
Name Type Description
occludee BoundingSphere 围绕遮光器对象的包围球。
返回值:
如果遮光器是可见的,则为true;否则false
示例:
var cameraPosition = new Cesium.Cartesian3(0, 0, 0);
var littleSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 0.25);
var occluder = new Cesium.Occluder(littleSphere, cameraPosition);
var bigSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -3), 1);
occluder.isBoundingSphereVisible(bigSphere); //returns true
参考:
isPointVisible(occludee)Boolean
确定一个点(occludee)是否被遮光器隐藏。
Name Type Description
occludee Cartesian3 围绕遮光器对象的点。
返回值:
如果遮光器是可见的,则为true;否则false
示例:
var cameraPosition = new Cesium.Cartesian3(0, 0, 0);
var littleSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 0.25);
var occluder = new Cesium.Occluder(littleSphere, cameraPosition);
var point = new Cesium.Cartesian3(0, 0, -3);
occluder.isPointVisible(point); //returns true
参考:

其他API

Cesium中文API文档手册(v1.63.1版本)参考:《Cesium中文API文档手册(v1.63.1版本)

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)