Occluder

new Cesium.Occluder(occluderBoundingSphere, cameraPosition)

Creates an Occluder derived from an object's position and radius, as well as the camera position. The occluder can be used to determine whether or not other objects are visible or hidden behind the visible horizon defined by the occluder and camera position.
参数名称 类型 描述信息
occluderBoundingSphere BoundingSphere The bounding sphere surrounding the occluder.
cameraPosition Cartesian3 The coordinate of the viewer/camera.
使用示例:
// 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);

成员(属性)

The position of the camera.
The position of the occluder.
The radius of the occluder.

方法

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

Computes a point that can be used as the occludee position to the visibility functions. Use a radius of zero for the occludee radius. Typically, a user computes a bounding sphere around an object that is used for visibility; however it is also possible to compute a point that if seen/not seen would also indicate if an object is visible/not visible. This function is better called for objects that do not move relative to the occluder and is large, such as a chunk of terrain. You are better off not calling this and using the object's bounding sphere for objects such as a satellite or ground vehicle.
参数名称 类型 描述信息
occluderBoundingSphere BoundingSphere The bounding sphere surrounding the occluder.
occludeePosition Cartesian3 The point where the occludee (bounding sphere of radius 0) is located.
positions Array.<Cartesian3> List of altitude points on the horizon near the surface of the occluder.
返回值:
An object containing two attributes: occludeePoint and valid which is a boolean value.
Throws:
  • DeveloperError : positions must contain at least one element.
  • DeveloperError : occludeePosition must have a value other than occluderBoundingSphere.center.
使用示例:
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

Computes a point that can be used as the occludee position to the visibility functions from a rectangle.
参数名称 类型 默认值 描述信息
rectangle Rectangle The rectangle used to create a bounding sphere.
ellipsoid Ellipsoid Ellipsoid.WGS84 可选 The ellipsoid used to determine positions of the rectangle.
返回值:
An object containing two attributes: occludeePoint and valid which is a boolean value.

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

Creates an occluder from a bounding sphere and the camera position.
参数名称 类型 描述信息
occluderBoundingSphere BoundingSphere The bounding sphere surrounding the occluder.
cameraPosition Cartesian3 The coordinate of the viewer/camera.
result Occluder 可选 The object onto which to store the result.
返回值:
The occluder derived from an object's position and radius, as well as the camera position.

computeVisibility(occludeeBS)Visibility

Determine to what extent an occludee is visible (not visible, partially visible, or fully visible).
参数名称 类型 描述信息
occludeeBS BoundingSphere The bounding sphere of the occludee.
返回值:
Visibility.NONE if the occludee is not visible, Visibility.PARTIAL if the occludee is partially visible, or Visibility.FULL if the occludee is fully visible.
使用示例:
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
参考:
  • Occluder#isVisible

isBoundingSphereVisible(occludee)boolean

Determines whether or not a sphere, the occludee, is hidden from view by the occluder.
参数名称 类型 描述信息
occludee BoundingSphere The bounding sphere surrounding the occludee object.
返回值:
true if the occludee is visible; otherwise false.
使用示例:
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
参考:

isPointVisible(occludee)boolean

Determines whether or not a point, the occludee, is hidden from view by the occluder.
参数名称 类型 描述信息
occludee Cartesian3 The point surrounding the occludee object.
返回值:
true if the occludee is visible; otherwise false.
使用示例:
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
参考: