根据对象的位置和半径以及相机位置创建遮挡体。
遮挡体可用于确定其他对象是可见还是隐藏在
由遮挡体和相机位置定义的可见地平线之后。
| Name | Type | Description |
|---|---|---|
occluderBoundingSphere |
BoundingSphere | 包围遮挡体的包围球。 |
cameraPosition |
Cartesian3 | 观察者/相机的坐标。 |
Example:
// 在距离原点一个单位处构建半径为 1 的遮挡体。
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
cameraPosition : Cartesian3
相机的位置。
position : Cartesian3
遮挡体的位置。
遮挡体的半径。
Methods
static Cesium.Occluder.computeOccludeePoint(occluderBoundingSphere, occludeePosition, positions) → object
计算一个可用作遮挡体位置的点,供可见性函数使用。
被遮挡体的半径使用零。通常,用户会计算
用于可见性的对象周围的包围球;但也可以计算一个点,其
可见/不可见也能指示对象是否可见/不可见。此函数更适合
用于相对于遮挡体不移动且较大的对象,例如地形块。
对于卫星或地面车辆等对象,最好不要调用此函数,而是使用对象的包围球。
| Name | Type | Description |
|---|---|---|
occluderBoundingSphere |
BoundingSphere | 包围遮挡体的包围球。 |
occludeePosition |
Cartesian3 | 被遮挡体(半径为 0 的包围球)所在的点。 |
positions |
Array.<Cartesian3> | 遮挡体表面附近地平线上的高度点列表。 |
Returns:
包含两个属性的对象:
occludeePoint 和 valid,
后者是一个布尔值。
Throws:
-
DeveloperError :
positions必须至少包含一个元素。
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);
从矩形计算一个可用作被遮挡体位置的点,供可见性函数使用。
| Name | Type | Default | Description |
|---|---|---|---|
rectangle |
Rectangle | 用于创建包围球的矩形。 | |
ellipsoid |
Ellipsoid |
Ellipsoid.default
|
optional 用于确定矩形位置的椭球体。 |
Returns:
包含两个属性的对象:
occludeePoint 和 valid,
后者是一个布尔值。
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); // 返回 Visibility.NONE
确定某个球体(
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); // 返回 true
See:
确定某个点(
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); // 返回 true
