Occluder

new Cesium.Occluder(occluderBoundingSphere, cameraPosition)

创建一个基于对象的位置、半径以及相机位置的遮挡器。 遮挡器可用于确定其他对象是否可见或被 遮挡器和相机位置定义的可见地平线遮挡。
Name Type Description
occluderBoundingSphere BoundingSphere 包围遮挡器的包围球。
cameraPosition Cartesian3 观察者/相机的坐标。
Example:
// Construct an occluder one unit away from the origin with a radius of one.
const cameraPosition = Cesium.Cartesian3.ZERO;
const occluderBoundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 1);
const occluder = new Cesium.Occluder(occluderBoundingSphere, cameraPosition);

Members

相机的位置。
遮挡器的位置。
遮挡器的半径。

Methods

static Cesium.Occluder.computeOccludeePoint(occluderBoundingSphere, occludeePosition, positions)object

计算可以作为可遮挡物位置的点,以用于可见性函数。使用零半径的可遮挡物半径。 通常,用户会计算一个包围对象的包围球以用于可见性; 然而,也可以计算一个点,如果该点是可见的/不可见的,也会指示对象是否可见/不可见。 对于相对固定且较大的对象(例如一块地形块),调用此函数较为合适。 对于如卫星或地面车辆等对象,最好使用对象的包围球而不是调用此函数。
Name Type Description
occluderBoundingSphere BoundingSphere 包围遮挡器的包围球。
occludeePosition Cartesian3 可遮挡物(半径为零的包围球)所在的点。
positions Array.<Cartesian3> 近地平面的高程点列表。
Returns:
包含两个属性的对象:occludeePointvalid,后者是一个布尔值。
Throws:
  • DeveloperError : positions 必须包含至少一个元素。
  • DeveloperError : occludeePosition 的值必须不同于 occluderBoundingSphere.center
Example:
const cameraPosition = new Cesium.Cartesian3(0, 0, 0);
const occluderBoundingSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -8), 2);
const occluder = new Cesium.Occluder(occluderBoundingSphere, cameraPosition);
const positions = [new Cesium.Cartesian3(-0.25, 0, -5.3), new Cesium.Cartesian3(0.25, 0, -5.3)];
const tileOccluderSphere = Cesium.BoundingSphere.fromPoints(positions);
const occludeePosition = tileOccluderSphere.center;
const occludeePt = Cesium.Occluder.computeOccludeePoint(occluderBoundingSphere, occludeePosition, positions);

static Cesium.Occluder.computeOccludeePointFromRectangle(rectangle, ellipsoid)object

计算可以作为可遮挡物位置的点,以用于从矩形获得的可见性函数。
Name Type Default Description
rectangle Rectangle 用于创建包围球的矩形。
ellipsoid Ellipsoid Ellipsoid.default optional 用于确定矩形位置的椭球体。
Returns:
包含两个属性的对象:occludeePointvalid,后者是一个布尔值。

static Cesium.Occluder.fromBoundingSphere(occluderBoundingSphere, cameraPosition, result)Occluder

从包围球和相机位置创建一个遮挡器。
Name Type Description
occluderBoundingSphere BoundingSphere 包围遮挡器的包围球。
cameraPosition Cartesian3 观察者/相机的坐标。
result Occluder optional 存储结果的对象。
Returns:
由对象的位置、半径以及相机位置衍生的遮挡器。

computeVisibility(occludeeBS)Visibility

确定被遮挡对象的可见程度(不可见、部分可见或完全可见)。
Name Type Description
occludeeBS BoundingSphere 被遮挡对象的包围球。
Returns:
如果被遮挡对象不可见,则返回 Visibility.NONE, 如果被遮挡对象部分可见,则返回 Visibility.PARTIAL, 如果被遮挡对象完全可见,则返回 Visibility.FULL。
Example:
const sphere1 = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1.5), 0.5);
const sphere2 = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -2.5), 0.5);
const cameraPosition = new Cesium.Cartesian3(0, 0, 0);
const occluder = new Cesium.Occluder(sphere1, cameraPosition);
occluder.computeVisibility(sphere2); //returns Visibility.NONE

isBoundingSphereVisible(occludee)boolean

确定一个球体(即 occludee)是否被遮挡器隐藏在视野之外。
Name Type Description
occludee BoundingSphere 包围被遮挡对象的包围球。
Returns:
如果被遮挡对象可见,则返回 true;否则返回 false
Example:
const cameraPosition = new Cesium.Cartesian3(0, 0, 0);
const littleSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 0.25);
const occluder = new Cesium.Occluder(littleSphere, cameraPosition);
const bigSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -3), 1);
occluder.isBoundingSphereVisible(bigSphere); //returns true
See:

isPointVisible(occludee)boolean

确定一个点(即 occludee)是否被遮挡器隐藏在视野之外。
Name Type Description
occludee Cartesian3 包围被遮挡对象的点。
Returns:
如果被遮挡对象可见,则返回 true;否则返回 false
Example:
const cameraPosition = new Cesium.Cartesian3(0, 0, 0);
const littleSphere = new Cesium.BoundingSphere(new Cesium.Cartesian3(0, 0, -1), 0.25);
const occluder = new Cesium.Occluder(littleSphere, cameraPosition);
const point = new Cesium.Cartesian3(0, 0, -3);
occluder.isPointVisible(point); //returns true
See:
需要帮助?获得答案的最快方法是来自社区和团队 Cesium Forum.