目录

Camera

优质
小牛编辑
140浏览
2023-12-01

new LSGlobe.Camera(scene)

相机类,它由位置、方向和视锥体定义。 视锥体(viewing frustum)由6个(上、下、左、右、近、远)平面限定,每个平面可由Cartesian4对象表示,其中x,y和z分量定义垂直于平面的单位向量,w分量是平面距原点/相机位置的距离。

NameTypeDescription
scene

Scene

场景对象
Example:
// 创建一个相机对象,并设置相机各参数var camera = new LSGlobe.Camera(scene);camera.position = new LSGlobe.Cartesian3();camera.direction = LSGlobe.Cartesian3.negate(LSGlobe.Cartesian3.UNIT_Z, new LSGlobe.Cartesian3());camera.up = LSGlobe.Cartesian3.clone(LSGlobe.Cartesian3.UNIT_Y);camera.frustum.fov = LSGlobe.Math.PI_OVER_THREE;camera.frustum.near = 1.0;camera.frustum.far = 2.0;

Members

staticLSGlobe.Camera.DEFAULT_VIEW_FACTOR : Number

标量乘以像机位置并在设置像机后将其添加回来查看矩形。值为零表示摄像机将查看整个Camera#DEFAULT_VIEW_RECTANGLE值,大于零的值将使其原理范围,并且小于零的值将使其移动到接近范围。

staticLSGlobe.Camera.DEFAULT_VIEW_RECTANGLE : Rectangle

相机的默认可视域矩形

readonlychanged : Event

获取像机更改后将引发的percentageChanged事件

constrainedAxis : Cartesian3

如果设置此属性值,相机沿着任一个坐标轴都不能够旋转

Default Value:
undefined

defaultLookAmount : Number

当没有提供参数给观察方法时,相机观察角度的默认值

Default Value:
Math.PI / 60.0

defaultMoveAmount : Number

当没有提供参数给相机移动方法时,相机移动时的默认值

Default Value:
100000.0;

defaultRotateAmount : Number

当没有提供参数给旋转方法时,相机旋转角度默认值

Default Value:
Math.PI / 3600.0

defaultZoomAmount : Number

当没有提供参数给缩放方法时,相机缩放角度默认值

Default Value:
100000.0;

direction : Cartesian3

像机方向

readonlydirectionWC : Cartesian3

获取相机在世界坐标系中的观察方向

frustum : Frustum

视野中的空间区域,即视锥体

Default Value:
PerspectiveFrustum()

See:
  • PerspectiveFrustum
  • PerspectiveOffCenterFrustum
  • OrthographicFrustum

readonlyheading : Number

获取相机朝向(弧度)

readonlyinverseTransform : Matrix4

获取相机变换的逆变换

Default Value:
Matrix4.IDENTITY

readonlyinverseViewMatrix : Matrix4

视图矩阵的逆矩阵

See:

maximumZoomFactor : Number

系数乘以地图大小,用于确定从表面缩小时获取相机位置的位置。 默认值是1.5。 只对2D有效,地图可旋转

Default Value:
1.5

readonlymoveEnd : Event

相机停止移动时的响应事件

readonlymoveStart : Event

相机开始移动时的响应事件

percentageChanged : number

在更改的事件发生之前摄像机必须更改的数量。 该值是[0,1]范围内的百分比

Default Value:
0.5

readonlypitch : Number

获取相机的俯仰角(弧度)

position : Cartesian3

像机位置

readonlypositionCartographic : Cartographic

获取相机的地理坐标系位置。 在2D地图显示的时候,当相机在地图之外,返回的经纬度的值很有可能在有效的经纬度范围之外

readonlypositionWC : Cartesian3

获取相机在世界坐标系中的位置

right : Cartesian3

相机的右(right)方向

readonlyrightWC : Cartesian3

获取相机在世界坐标系下的right方向

readonlyroll : Number

获取相机的翻滚角(弧度)

readonlytransform : Matrix4

获取相机的坐标系。变换的逆变换被应用于视图矩阵

Default Value:
Matrix4.IDENTITY

up : Cartesian3

相机的上(up)方向

readonlyupWC : Cartesian3

获取相机在世界坐标系下的UP方向

readonlyviewMatrix : Matrix4

获取视图矩阵

See:

workingFrustums : Array.<Frustum>

当前使用的视景体;场景绘制使用的是调整后的视景体

Methods

flyTo(options)

相机从当前位置飞行到新的空间位置

NameTypeDescription
options

Object

对象具有以下属性:

NameTypeDescription
destination

Cartesian3
|
Rectangle

相机在WGS84世界坐标系中的最终位置,或是自顶向下视图中可见的矩形区域
orientation

Object

optional
包含了方位(direction)、上方向(up)以及方位角(heading)、俯仰角(pitch)、滚动角(roll)属性的对象。 默认情况下,3D中方位(direction)指向框架中心,在Columbus视图中指向负z方向。在3D中上方向(up)指向本地北方向,而在Columbus视图中指向正y方向。在无限滚动模式下,二维视图不使用方向(orientation)
duration

Number

optional
飞行持续时间(以秒为单位)。如果省略,由飞行距离计算合理的持续时间
complete

Camera~FlightCompleteCallback

optional
飞行完成时执行的功能
cancel

Camera~FlightCancelledCallback

optional
飞行取消时执行的功能
endTransform

Matrix4

optional
飞行完成时相机将处于的参考系的变换矩阵
maximumHeight

Number

optional
飞行中的最大高度
easingFunction

EasingFunction
|
EasingFunction~Callback

optional
释放时调用功能
Throws:
  • DeveloperError
    : 若提供了方向(direction )、上方向(up)两者之一,则两者都需要提供

Example:
// 1. 飞向通过top-down视图表示的位置viewer.camera.flyTo({    destination : LSGlobe.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)});// 2. 飞向通过top-down视图表示的矩形viewer.camera.flyTo({    destination : LSGlobe.Rectangle.fromDegrees(west, south, east, north)});// 3. 飞向利用单位向量表示方向(orientatin)的位置viewer.camera.flyTo({    destination : LSGlobe.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),    orientation : {        direction : new LSGlobe.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),        up : new LSGlobe.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)    }});// 4. 飞向利用方位角(heading)、俯仰角(pitch)、滚动角(roll)表示方向(orientatin)的位置viewer.camera.flyTo({    destination : LSGlobe.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),    orientation : {        heading : LSGlobe.Math.toRadians(175.0),        pitch : LSGlobe.Math.toRadians(-35.0),        roll : 0.0    }});

lookAt(axis, offset)

通过目标(target)和偏移(offset)设置相机位置、方向。 目标(target)以世界坐标方式表示;偏移(offset)是在以目标为中心的本地“东-北-上”参考系中的笛卡尔坐标或“方位角/俯仰角/范围(heading/pitch/range)”。如果偏移(offset)由笛卡尔坐标表示,它表示距离由变换矩阵定义的参考系中心的偏移量。 如果偏移(offset)由“heading/pitch/range”表示,方位角(heading)和俯仰角(pitch)的角度由根据变换矩阵定义的参考系确定,方位角(heading)从y轴开始朝向x轴增加,俯仰角(pitch)为从xy平面的旋转角度,正的俯仰角位于平面下方,负的俯仰角位于平面上方。 范围(range)为距中心点的距离。在2D中必须为自上而下视图,相机位于俯视目标的上方,目标上方的高度值是偏移量的大小。方位角根据偏移确定,如果不能从偏移确定方位角,则方位角为北方向

NameTypeDescription
axis

Cartesian3

目标在世界坐标中的空间位置
offset

Cartesian3
|
HeadingPitchRange

距以目标为中心的本地“东-北-上”参考系的偏移
Throws:
  • DeveloperError
    : 变形时不支持lookAt方法

Example:
// 1. 利用笛卡尔坐标设置偏移var center = LSGlobe.Cartesian3.fromDegrees(-98.0, 40.0);viewer.camera.lookAt(center, new LSGlobe.Cartesian3(0.0, -4790000.0, 3930000.0));// 2. 利用HeadingPitchRange设置偏移var center = LSGlobe.Cartesian3.fromDegrees(-72.0, 40.0);var heading = LSGlobe.Math.toRadians(50.0);var pitch = LSGlobe.Math.toRadians(-20.0);var range = 5000.0;viewer.camera.lookAt(center, new LSGlobe.HeadingPitchRange(heading, pitch, range));

lookDown(amount)

沿着相机的up反方向把相机旋转一定的角度

NameTypeDescription
amount

Number

optional
旋转量,弧度为单位,默认值是defaultLookAmount
See:

lookLeft(amount)

沿着相机的left方向把相机旋转一定的角度

NameTypeDescription
amount

Number

optional
旋转量,弧度为单位,默认值是defaultLookAmount
See:

lookRight(amount)

沿着相机的right方向把相机旋转一定的角度

NameTypeDescription
amount

Number

optional
旋转量,弧度为单位,默认值是defaultLookAmount
See:

lookUp(amount)

沿着相机的up方向把相机旋转一定的角度

NameTypeDescription
amount

Number

optional
旋转量,弧度为单位,默认值是defaultLookAmount
See:

move(direction, amount)

通过在一定方向上进行平移,改变相机的位置

NameTypeDescription
direction

Cartesian3

移动的方向
amount

Number

optional
平移量,米为单位,默认值是defaultMoveAmount
See:

moveBackward(amount)

沿着与相机观察相反的方向平移,改变相机位置

NameTypeDescription
amount

Number

optional
平移量,米为单位,默认值是defaultMoveAmount
See:

moveDown(amount)

沿着与UP相反的方向平移,改变相机位置

NameTypeDescription
amount

Number

optional
平移量,米为单位,默认值是defaultMoveAmount
See:

moveForward(amount)

沿着相机的观察方向平移,改变相机的位置

NameTypeDescription
amount

Number

optional
平移量,米为单位,默认值是defaultMoveAmount
See:

moveLeft(amount)

沿着相机的right方向的反方向平移,改变相机位置

NameTypeDescription
amount

Number

optional
平移量,米为单位,默认值是defaultMoveAmount
See:

moveRight(amount)

沿着相机的right方向平移,改变相机位置

NameTypeDescription
amount

Number

optional
平移量,米为单位,默认值是defaultMoveAmount
See:

moveUp(amount)

沿着相机的UP方向平移,改变相机位置

NameTypeDescription
amount

Number

optional
平移量,米为单位,默认值是defaultMoveAmount
See:

setView(options)

设置相机位置、方向和变换

NameTypeDescription
options

Object

对象具有以下属性:

NameTypeDescription
destination

Cartesian3
|
Rectangle

optional
相机在WGS84世界坐标系中的最终位置,或是自顶向下视图中可见的矩形区域
orientation

Object

optional
包含了方位(direction)、上方向(up)以及方位角(heading)、俯仰角(pitch)、滚动角(roll)属性的对象。 默认情况下,3D中方位(direction)指向框架中心,在Columbus视图中指向负z方向。在3D中上方向(up)指向本地北方向,而在Columbus视图中指向正y方向。在无限滚动模式下,二维视图不使用方向(orientation)
endTransform

Matrix4

optional
表示相机参考坐标系的变换矩阵
Example:
// 1.通过top-down视图设置位置viewer.camera.setView({    destination : LSGlobe.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)});// 2. 通过方位角、俯仰角、滚动角设置视图viewer.camera.setView({    destination : cartesianPosition,    orientation: {        heading : LSGlobe.Math.toRadians(90.0), // east, default value is 0.0 (north)        pitch : LSGlobe.Math.toRadians(-90),    // default value (looking down)        roll : 0.0                             // default value    }});// 3. 相机空间位置不变,改变方位角、俯仰角和滚动角viewer.camera.setView({    orientation: {        heading : LSGlobe.Math.toRadians(90.0), // east, default value is 0.0 (north)        pitch : LSGlobe.Math.toRadians(-90),    // default value (looking down)        roll : 0.0                             // default value    }});// 4. 通过自顶向下视图查看矩形viewer.camera.setView({    destination : LSGlobe.Rectangle.fromDegrees(west, south, east, north)});// 5. 通过使用单位向量的方向(orientation)设置相机位置viewer.camera.setView({    destination : LSGlobe.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),    orientation : {        direction : new LSGlobe.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),        up : new LSGlobe.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)    }});

Type Definitions

FlightCancelledCallback()

飞行取消时将执行的功能

FlightCompleteCallback()

飞行完成时将执行的功能