Occluder

new Cesium.Occluder(occluderBoundingSphere, cameraPosition)

根据对象的位置和半径以及相机位置创建一个 `Occluder`(遮挡体)。 该遮挡体可用于判断其他对象是否可见,或者被遮挡体与相机位置所定义的可见地平线所遮挡。
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

计算一个可用作可见性函数中被遮挡物(occludee)位置的点。 对于被遮挡物的半径请使用零半径。通常,用户会围绕一个对象计算用于可见性判断的包围球;但也可以计算这样一个点:该点是否可见同样能指示对象是否可见。对于相对于遮挡体不移动且体积较大的对象(例如一块地形),调用此函数更合适。而对于卫星或地面车辆这类对象,最好不要调用此函数,而是使用对象自身的包围球。
Name Type Description
occluderBoundingSphere BoundingSphere 包围遮挡体的包围球。
occludeePosition Cartesian3 被遮挡物(半径为 0 的包围球)所在的位置。
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 论坛 上向社区和团队提问。