相机由位置、方向和视锥体定义。
方向与视图形成正交基,向上和向右 = 视图 x 向上单位向量。
视锥体由 6 个平面定义。每个平面由一个
方向与视图形成正交基,向上和向右 = 视图 x 向上单位向量。
视锥体由 6 个平面定义。每个平面由一个
Cartesian4
对象表示,其中 x、y 和 z 分量定义垂直于平面的单位矢量,w 分量是平面到原点/相机位置的距离。
Name | Type | Description |
---|---|---|
scene
|
Scene | 现场。 |
Example:
// Create a camera looking down the negative z-axis, positioned at the origin,
// with a field of view of 60 degrees, and 1:1 aspect ratio.
const camera = new Cesium.Camera(scene);
camera.position = new Cesium.Cartesian3();
camera.direction = Cesium.Cartesian3.negate(Cesium.Cartesian3.UNIT_Z, new Cesium.Cartesian3());
camera.up = Cesium.Cartesian3.clone(Cesium.Cartesian3.UNIT_Y);
camera.frustum.fov = Cesium.Math.PI_OVER_THREE;
camera.frustum.near = 1.0;
camera.frustum.far = 2.0;
Demo:
Members
static Cesium.Camera.DEFAULT_OFFSET : HeadingPitchRange
当相机飞到包含边界球体的位置时使用的默认航向/俯仰/范围。
一个标量,用于乘以相机位置并在设置相机以查看矩形后将其添加回来。零值意味着相机将查看整个
Camera#DEFAULT_VIEW_RECTANGLE
,大于零的值将使其远离范围,小于零的值将使其靠近范围。
static Cesium.Camera.DEFAULT_VIEW_RECTANGLE : Rectangle
相机将在创建时查看的默认矩形。
readonly changed : Event
获取当相机改变
percentageChanged
时将引发的事件。
constrainedAxis : Cartesian3
如果设置,相机将无法在任一方向上旋转超过此轴。
-
Default Value:
undefined
未向外观方法提供参数时旋转相机的默认量。
-
Default Value:
Math.PI / 60.0
未向 move 方法提供参数时移动相机的默认量。
-
Default Value:
100000.0;
当旋转方法没有提供参数时,旋转相机的默认量。
-
Default Value:
Math.PI / 3600.0
未向缩放方法提供参数时移动相机的默认量。
-
Default Value:
100000.0;
direction : Cartesian3
摄像机的视图方向。
readonly directionWC : Cartesian3
获取相机在世界坐标中的视图方向。
frustum : PerspectiveFrustum | PerspectiveOffCenterFrustum | OrthographicFrustum
视野中的空间区域。
-
Default Value:
PerspectiveFrustum()
See:
以弧度获取摄像机航向。
readonly inverseTransform : Matrix4
获取逆相机变换。
-
Default Value:
Matrix4.IDENTITY
readonly inverseViewMatrix : Matrix4
获取逆视图矩阵。
See:
该因子乘以地图大小,用于确定在从表面缩小时将相机位置固定在哪里。默认值为 1.5。仅对 2D 有效且地图可旋转。
-
Default Value:
1.5
readonly moveEnd : Event
获取相机停止移动时将引发的事件。
readonly moveStart : Event
获取将在相机开始移动时引发的事件。
在引发
changed
的事件之前相机必须更改的量。该值是 [0, 1] 范围内的百分比。
-
Default Value:
0.5
以弧度获取相机间距。
position : Cartesian3
相机的位置。
readonly positionCartographic : Cartographic
获取相机的
Cartographic
位置,经度和纬度以弧度表示,高度以米表示。在 2D 和 Columbus View 中,当相机在地图之外时,返回的经纬度可能超出有效经纬度范围。
readonly positionWC : Cartesian3
获取相机在世界坐标中的位置。
right : Cartesian3
相机的正确方向。
readonly rightWC : Cartesian3
获取相机在世界坐标中的正确方向。
以弧度获取相机胶卷。
readonly transform : Matrix4
获取相机的参考帧。这个变换的逆被附加到视图矩阵。
-
Default Value:
Matrix4.IDENTITY
相机的向上方向。
readonly upWC : Cartesian3
获取相机在世界坐标中的向上方向。
readonly viewMatrix : Matrix4
获取视图矩阵。
Methods
cameraToWorldCoordinates (cartesian, result ) → Cartesian4
将矢量或点从相机的参考系转换为世界坐标。
Name | Type | Description |
---|---|---|
cartesian
|
Cartesian4 | 要变换的向量或点。 |
result
|
Cartesian4 | 可选 存储结果的对象。 |
Returns:
转换后的向量或点。
cameraToWorldCoordinatesPoint (cartesian, result ) → Cartesian3
将一个点从相机的参考系转换为世界坐标。
Name | Type | Description |
---|---|---|
cartesian
|
Cartesian3 | 转型的重点。 |
result
|
Cartesian3 | 可选 存储结果的对象。 |
Returns:
变形点。
cameraToWorldCoordinatesVector (cartesian, result ) → Cartesian3
将矢量从相机的参考系转换为世界坐标。
Name | Type | Description |
---|---|---|
cartesian
|
Cartesian3 | 要转换的向量。 |
result
|
Cartesian3 | 可选 存储结果的对象。 |
Returns:
转换后的向量。
取消当前的相机飞行并将相机留在其当前位置。如果没有正在进行的飞行,则此函数不执行任何操作。
完成当前相机飞行并立即将相机移动到最终目的地。如果没有正在进行的飞行,则此函数不执行任何操作。
computeViewRectangle ( ellipsoid , result ) → Rectangle |undefined
计算椭圆体上的近似可见矩形。
Name | Type | Default | Description |
---|---|---|---|
ellipsoid
|
Ellipsoid |
Ellipsoid.WGS84
|
可选 要知道可见区域的椭球体。 |
result
|
Rectangle | 可选 存储结果的矩形 |
Returns:
如果椭圆体根本不可见,则为可见矩形或未定义。
返回从相机到边界球体前面的距离。
Name | Type | Description |
---|---|---|
boundingSphere
|
BoundingSphere | 世界坐标中的边界球体。 |
Returns:
到边界球体的距离。
将相机飞到主视图。使用
Camera#.DEFAULT_VIEW_RECTANGLE
设置 3D 场景的默认视图。 2D 和哥伦布视图的主视图显示整个地图。
Name | Type | Description |
---|---|---|
duration
|
Number |
可选
以秒为单位的飞行持续时间。如果省略,Cesium 会尝试根据飞行的距离计算理想的持续时间。见
Camera#flyTo
|
将相机从当前位置飞到新位置。
Name | Type | Description | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options
|
Object |
具有以下属性的对象:
|
Throws:
-
DeveloperError :如果给出了方向或向上,则两者都是必需的。
Example:
// 1. Fly to a position with a top-down view
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});
// 2. Fly to a Rectangle with a top-down view
viewer.camera.flyTo({
destination : Cesium.Rectangle.fromDegrees(west, south, east, north)
});
// 3. Fly to a position with an orientation using unit vectors.
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
orientation : {
direction : new Cesium.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
up : new Cesium.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)
}
});
// 4. Fly to a position with an orientation using heading, pitch and roll.
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
orientation : {
heading : Cesium.Math.toRadians(175.0),
pitch : Cesium.Math.toRadians(-35.0),
roll : 0.0
}
});
将相机飞到当前视图包含提供的边界球的位置。
偏移量是本地东西北上参考系中的航向/俯仰/范围,以边界球的中心为中心。航向角和俯仰角在当地东西北上参考系中定义。航向是从 y 轴到 x 轴增加的角度。俯仰是从 xy 平面的旋转。正俯仰角在平面下方。负俯仰角在平面上方。范围是到中心的距离。如果范围为零,则将计算范围以使整个边界球体可见。
在 2D 和哥伦布视图中,必须有自上而下的视图。摄像机将放置在目标上方向下看。目标上方的高度将是范围。航向将与当地北方对齐。
Name | Type | Description | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
boundingSphere
|
BoundingSphere | 要查看的边界球体,在世界坐标中。 | |||||||||||||||||||||||||||||||||
options
|
Object |
具有以下属性的
可选
对象:
|
获取相机位置的大小。在 3D 中,这是矢量幅度。在 2D 和哥伦布视图中,这是到地图的距离。
Returns:
位置的大小。
getPickRay (windowPosition, result ) → Ray |undefined
从相机位置通过世界坐标中
windowPosition
处的像素创建一条射线。
Name | Type | Description |
---|---|---|
windowPosition
|
Cartesian2 | 像素的 x 和 y 坐标。 |
result
|
Ray | 可选 存储结果的对象。 |
Returns:
返回
Cartesian3
射线的位置和方向,如果无法确定拾取射线,则返回 undefined。
返回以米为单位的像素大小。
Name | Type | Description |
---|---|---|
boundingSphere
|
BoundingSphere | 世界坐标中的边界球体。 |
drawingBufferWidth
|
Number | 绘图缓冲区宽度。 |
drawingBufferHeight
|
Number | 绘图缓冲区高度。 |
Returns:
以米为单位的像素大小。
getRectangleCameraCoordinates (rectangle, result ) → Cartesian3
获取在椭圆体或地图上查看矩形所需的相机位置
Name | Type | Description |
---|---|---|
rectangle
|
Rectangle | 要查看的矩形。 |
result
|
Cartesian3 | 可选 查看矩形所需的相机位置 |
Returns:
查看矩形所需的相机位置
将相机的每个方向向量绕
axis
angle
Name | Type | Description |
---|---|---|
axis
|
Cartesian3 | 要旋转的轴。 |
angle
|
Number |
可选
要旋转的角度,以弧度为单位。默认为
defaultLookAmount
。
|
使用目标和偏移设置相机位置和方向。目标必须以世界坐标给出。偏移量可以是笛卡尔坐标系或以目标为中心的本地东西北上参考系中的航向/俯仰/范围。如果偏移量是笛卡尔坐标,则它是从由变换矩阵定义的参考系中心的偏移量。如果偏移量是航向/俯仰/范围,则航向和俯仰角在由变换矩阵定义的参考系中定义。航向是从 y 轴到 x 轴增加的角度。俯仰是从 xy 平面的旋转。正俯仰角在平面下方。负俯仰角在平面上方。范围是到中心的距离。在 2D 中,必须有自上而下的视图。摄像机将放置在目标上方向下看。目标上方的高度将是偏移量的大小。航向将根据偏移量确定。如果无法根据偏移量确定航向,则航向将为北。
Name | Type | Description |
---|---|---|
target
|
Cartesian3 | 世界坐标中的目标位置。 |
offset
|
Cartesian3 | HeadingPitchRange | 在以目标为中心的本地东西北上参考系中与目标的偏移。 |
Throws:
-
DeveloperError :变形时不支持lookAt。
Example:
// 1. Using a cartesian offset
const center = Cesium.Cartesian3.fromDegrees(-98.0, 40.0);
viewer.camera.lookAt(center, new Cesium.Cartesian3(0.0, -4790000.0, 3930000.0));
// 2. Using a HeadingPitchRange offset
const center = Cesium.Cartesian3.fromDegrees(-72.0, 40.0);
const heading = Cesium.Math.toRadians(50.0);
const pitch = Cesium.Math.toRadians(-20.0);
const range = 5000.0;
viewer.camera.lookAt(center, new Cesium.HeadingPitchRange(heading, pitch, range));
使用目标和变换矩阵设置相机位置和方向。偏移量可以是笛卡尔坐标或航向/间距/范围。如果偏移量是笛卡尔坐标,则它是从由变换矩阵定义的参考系中心的偏移量。如果偏移量是航向/俯仰/范围,则航向和俯仰角在由变换矩阵定义的参考系中定义。航向是从 y 轴到 x 轴增加的角度。俯仰是从 xy 平面的旋转。正俯仰角在平面下方。负俯仰角在平面上方。范围是到中心的距离。在 2D 中,必须有自上而下的视图。相机将放置在参考框架的中心上方。目标上方的高度将是偏移量的大小。航向将根据偏移量确定。如果无法根据偏移量确定航向,则航向将为北。
Name | Type | Description |
---|---|---|
transform
|
Matrix4 | 定义参考系的变换矩阵。 |
offset
|
Cartesian3 | HeadingPitchRange | 可选 在以目标为中心的参考框架中与目标的偏移量。 |
Throws:
-
DeveloperError :变形时不支持lookAtTransform。
Example:
// 1. Using a cartesian offset
const transform = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(-98.0, 40.0));
viewer.camera.lookAtTransform(transform, new Cesium.Cartesian3(0.0, -4790000.0, 3930000.0));
// 2. Using a HeadingPitchRange offset
const transform = Cesium.Transforms.eastNorthUpToFixedFrame(Cesium.Cartesian3.fromDegrees(-72.0, 40.0));
const heading = Cesium.Math.toRadians(50.0);
const pitch = Cesium.Math.toRadians(-20.0);
const range = 5000.0;
viewer.camera.lookAtTransform(transform, new Cesium.HeadingPitchRange(heading, pitch, range));
如果不在 2D 模式下,则沿其向上矢量的相反方向将相机围绕其右矢量旋转量(以弧度为单位)。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要旋转的量(以弧度为单位)。默认为
defaultLookAmount
。
|
See:
如果不在 2D 模式下,将相机围绕其向上矢量旋转量(以弧度为单位)在其右矢量的相反方向上。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要旋转的量(以弧度为单位)。默认为
defaultLookAmount
。
|
See:
如果不在 2D 模式下,则沿其右矢量的方向将相机围绕其向上矢量旋转量(以弧度为单位)。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要旋转的量(以弧度为单位)。默认为
defaultLookAmount
。
|
See:
如果不在 2D 模式下,则沿其向上矢量的方向将相机围绕其右矢量旋转量(以弧度为单位)。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要旋转的量(以弧度为单位)。默认为
defaultLookAmount
。
|
See:
沿
direction
按
amount
平移相机的位置。
Name | Type | Description |
---|---|---|
direction
|
Cartesian3 | 移动的方向。 |
amount
|
Number |
可选
要移动的量(以米为单位)。默认为
defaultMoveAmount
。
|
See:
沿相机视图矢量的相反方向按
amount
平移相机的位置。在 2D 模式下,这将缩小相机而不是平移相机的位置。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要移动的量(以米为单位)。默认为
defaultMoveAmount
。
|
See:
沿相机向上矢量的相反方向按
amount
平移相机的位置。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要移动的量(以米为单位)。默认为
defaultMoveAmount
。
|
See:
沿相机的视图向量按
amount
平移相机的位置。在 2D 模式下,这将放大相机而不是平移相机的位置。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要移动的量(以米为单位)。默认为
defaultMoveAmount
。
|
See:
沿相机右矢量的相反方向按
amount
平移相机的位置。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要移动的量(以米为单位)。默认为
defaultMoveAmount
。
|
See:
沿相机的右向量按
amount
平移相机的位置。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要移动的量(以米为单位)。默认为
defaultMoveAmount
。
|
See:
沿相机的向上向量按
amount
平移相机的位置。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要移动的量(以米为单位)。默认为
defaultMoveAmount
。
|
See:
pickEllipsoid (windowPosition, ellipsoid , result ) → Cartesian3 |undefined
选择一个椭球体或地图。
Name | Type | Default | Description |
---|---|---|---|
windowPosition
|
Cartesian2 | 像素的 x 和 y 坐标。 | |
ellipsoid
|
Ellipsoid |
Ellipsoid.WGS84
|
可选 要选取的椭球体。 |
result
|
Cartesian3 | 可选 存储结果的对象。 |
Returns:
如果选择了椭球体或地图,则以世界坐标返回椭球体或地图表面上的点。如果未选择椭球体或地图,则返回未定义。
Example:
const canvas = viewer.scene.canvas;
const center = new Cesium.Cartesian2(canvas.clientWidth / 2.0, canvas.clientHeight / 2.0);
const ellipsoid = viewer.scene.globe.ellipsoid;
const result = viewer.camera.pickEllipsoid(center, ellipsoid);
将相机绕
axis
旋转
angle
。相机位置到相机参考系中心的距离保持不变。
Name | Type | Description |
---|---|---|
axis
|
Cartesian3 | 在世界坐标中给定的旋转轴。 |
angle
|
Number |
可选
要旋转的角度,以弧度为单位。默认为
defaultRotateAmount
。
|
将相机围绕相机参考系的中心向下旋转一定角度。
Name | Type | Description |
---|---|---|
angle
|
Number |
可选
要旋转的角度,以弧度为单位。默认为
defaultRotateAmount
。
|
将相机围绕相机参考系的中心向左旋转一定角度。
Name | Type | Description |
---|---|---|
angle
|
Number |
可选
要旋转的角度,以弧度为单位。默认为
defaultRotateAmount
。
|
将相机围绕相机参考系的中心向右旋转一定角度。
Name | Type | Description |
---|---|---|
angle
|
Number |
可选
要旋转的角度,以弧度为单位。默认为
defaultRotateAmount
。
|
围绕相机参考系的中心向上旋转相机一个角度。
Name | Type | Description |
---|---|---|
angle
|
Number |
可选
要旋转的角度,以弧度为单位。默认为
defaultRotateAmount
。
|
设置相机位置、方向和变换。
Name | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options
|
Object |
具有以下属性的对象:
|
Example:
// 1. Set position with a top-down view
viewer.camera.setView({
destination : Cesium.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});
// 2 Set view with heading, pitch and roll
viewer.camera.setView({
destination : cartesianPosition,
orientation: {
heading : Cesium.Math.toRadians(90.0), // east, default value is 0.0 (north)
pitch : Cesium.Math.toRadians(-90), // default value (looking down)
roll : 0.0 // default value
}
});
// 3. Change heading, pitch and roll with the camera position remaining the same.
viewer.camera.setView({
orientation: {
heading : Cesium.Math.toRadians(90.0), // east, default value is 0.0 (north)
pitch : Cesium.Math.toRadians(-90), // default value (looking down)
roll : 0.0 // default value
}
});
// 4. View rectangle with a top-down view
viewer.camera.setView({
destination : Cesium.Rectangle.fromDegrees(west, south, east, north)
});
// 5. Set position with an orientation using unit vectors.
viewer.camera.setView({
destination : Cesium.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
orientation : {
direction : new Cesium.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
up : new Cesium.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)
}
});
将平截头体/投影切换为正交。此函数在 2D 中是无操作的,它将始终是正交的。
将平截头体/投影切换到透视。此函数在 2D 中是无操作的,必须始终是正交的。
以弧度为单位围绕其方向矢量逆时针旋转相机。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要旋转的量(以弧度为单位)。默认为
defaultLookAmount
。
|
See:
以弧度为单位围绕其方向矢量顺时针旋转相机。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要旋转的量(以弧度为单位)。默认为
defaultLookAmount
。
|
See:
设置相机,以便当前视图包含提供的边界球。
偏移量是本地东西北上参考系中的航向/俯仰/范围,以边界球的中心为中心。航向角和俯仰角在当地东西北上参考系中定义。航向是从 y 轴到 x 轴增加的角度。俯仰是从 xy 平面的旋转。正俯仰角在平面下方。负俯仰角在平面上方。范围是到中心的距离。如果范围为零,则将计算范围以使整个边界球体可见。
在 2D 中,必须有自上而下的视图。摄像机将放置在目标上方向下看。目标上方的高度将是范围。航向将根据偏移量确定。如果无法根据偏移量确定航向,则航向将为北。
Name | Type | Description |
---|---|---|
boundingSphere
|
BoundingSphere | 要查看的边界球体,在世界坐标中。 |
offset
|
HeadingPitchRange | 可选 在以目标为中心的本地东西北上参考系中与目标的偏移量。 |
Throws:
-
DeveloperError :变形时不支持 viewBoundingSphere。
worldToCameraCoordinates (cartesian, result ) → Cartesian4
将矢量或点从世界坐标转换为相机的参考系。
Name | Type | Description |
---|---|---|
cartesian
|
Cartesian4 | 要变换的向量或点。 |
result
|
Cartesian4 | 可选 存储结果的对象。 |
Returns:
转换后的向量或点。
worldToCameraCoordinatesPoint (cartesian, result ) → Cartesian3
将一个点从世界坐标转换到相机的参考系。
Name | Type | Description |
---|---|---|
cartesian
|
Cartesian3 | 转型的重点。 |
result
|
Cartesian3 | 可选 存储结果的对象。 |
Returns:
变形点。
worldToCameraCoordinatesVector (cartesian, result ) → Cartesian3
将向量从世界坐标转换为相机的参考系。
Name | Type | Description |
---|---|---|
cartesian
|
Cartesian3 | 要转换的向量。 |
result
|
Cartesian3 | 可选 存储结果的对象。 |
Returns:
转换后的向量。
沿相机的视图矢量缩放
amount
。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要移动的数量。默认为
defaultZoomAmount
。
|
See:
沿相机视图矢量的相反方向缩放
amount
。
Name | Type | Description |
---|---|---|
amount
|
Number |
可选
要移动的数量。默认为
defaultZoomAmount
。
|
See:
Type Definitions
取消航班时将执行的功能。
飞行完成时将执行的函数。