# Scene

#### new Cesium.Scene(options)
Scene/Scene.js 182

The container for all 3D graphical objects and state in a Cesium virtual scene. Generally, a scene is not created directly; instead, it is implicitly created by `CesiumWidget`.

`contextOptions` parameter details:

The default values are: `{ webgl : { alpha : false, depth : true, stencil : false, antialias : true, powerPreference: 'high-performance', premultipliedAlpha : true, preserveDrawingBuffer : false, failIfMajorPerformanceCaveat : false }, allowTextureFilterAnisotropic : true }`

The `webgl` property corresponds to the WebGLContextAttributes object used to create the WebGL context.

`webgl.alpha` defaults to false, which can improve performance compared to the standard WebGL default of true. If an application needs to composite Cesium above other HTML elements using alpha-blending, set `webgl.alpha` to true.

The other `webgl` properties match the WebGL defaults for WebGLContextAttributes.

`allowTextureFilterAnisotropic` defaults to true, which enables anisotropic texture filtering when the WebGL extension is supported. Setting this to false will improve performance, but hurt visual quality, especially for horizon views.

Name | Type | Description
--- | --- | ---
`options` | Object | optional Object with the following properties:
Name | Type | Default | Description
--- | --- | --- | ---
`canvas` | HTMLCanvasElement |  | The HTML canvas element to create the scene for.
`contextOptions` | Object |  | optional Context and WebGL creation properties. See details above.
`creditContainer` | Element |  | optional The HTML element in which the credits will be displayed.
`creditViewport` | Element |  | optional The HTML element in which to display the credit popup. If not specified, the viewport will be a added as a sibling of the canvas.
`mapProjection` | MapProjection | `new GeographicProjection()` | optional The map projection to use in 2D and Columbus View modes.
`orderIndependentTranslucency` | Boolean | `true` | optional If true and the configuration supports it, use order independent translucency.
`scene3DOnly` | Boolean | `false` | optional If true, optimizes memory use and performance for 3D mode but disables the ability to use 2D or Columbus View.
`shadows` | Boolean | `false` | optional Determines if shadows are cast by light sources.
`mapMode2D` | MapMode2D | `MapMode2D.INFINITE_SCROLL` | optional Determines if the 2D map is rotatable or can be scrolled infinitely in the horizontal direction.
`requestRenderMode` | Boolean | `false` | optional If true, rendering a frame will only occur when needed as determined by changes within the scene. Enabling improves performance of the application, but requires using `Scene#requestRender` to render a new frame explicitly in this mode. This will be necessary in many cases after making changes to the scene in other parts of the API. See Improving Performance with Explicit Rendering.
`maximumRenderTimeChange` | Number | `0.0` | optional If requestRenderMode is true, this value defines the maximum change in simulation time allowed before a render is requested. See Improving Performance with Explicit Rendering.

##### Throws:

- DeveloperError : options and options.canvas are required.

##### Example:

    // Create scene without anisotropic texture filtering
    var scene = new Cesium.Scene({
      canvas : canvas,
      contextOptions : {
        allowTextureFilterAnisotropic : false
      }
    });

##### See:

- CesiumWidget
- WebGLContextAttributes

### Members

#### _useMultiViewports
Scene/Scene.js 800

修改说明：feat:2266 多视图漫游 修改人：夏琨 2023年12月12日

#### backgroundColor : Color
Scene/Scene.js 376

The background color, which is only visible if there is no sky box, i.e., `Scene#skyBox` is undefined.

Default Value: ``Color.BLACK``

##### See:

- Scene#skyBox

#### brightness : Number
Scene/Scene.js 2008

场景亮度
当`Scene#colorCorrection`开启时有效 取值范围[-1, 1]

Default Value: `0`

##### See:

- Scene#colorCorrection

#### readonly camera : Camera
Scene/Scene.js 1104

Gets or sets the camera.

#### readonly cameraUnderground : Boolean
Scene/Scene.js 1854

Whether or not the camera is underneath the globe.

Default Value: `false`

#### readonly canvas : HTMLCanvasElement
Scene/Scene.js 897

Gets the canvas element to which this scene is bound.

#### readonly clampToHeightSupported : Boolean
Scene/Scene.js 1004

Returns `true` if the `Scene#clampToHeight` and `Scene#clampToHeightMostDetailed` functions are supported.

##### See:

- Scene#clampToHeight
- Scene#clampToHeightMostDetailed

#### readonly colorCorrection : Object
Scene/Scene.js 1990

颜色校正

##### Example:

    // 开启场景颜色校正
    viewer.scene.colorCorrection.enabled = true;

#### completeMorphOnUserInput : Boolean
Scene/Scene.js 309

Determines whether or not to instantly complete the scene transition animation on user input.

Default Value: `true`

#### contrast : Number
Scene/Scene.js 2048

场景对比度
当`Scene#colorCorrection`开启时有效 值要求大于0

Default Value: `1`

##### See:

- Scene#colorCorrection

#### debugCommandFilter : function
Scene/Scene.js 454

This property is for debugging only; it is not for production use.

A function that determines what commands are executed. As shown in the examples below, the function receives the command's `owner` as an argument, and returns a boolean indicating if the command should be executed.

The default is `undefined`, indicating that all commands are executed.

Default Value: `undefined`

##### Example:

    // Do not execute any commands.
    scene.debugCommandFilter = function(command) {
        return false;
    };

    // Execute only the billboard's commands.  That is, only draw the billboard.
    var billboards = new Cesium.BillboardCollection();
    scene.debugCommandFilter = function(command) {
        return command.owner === billboards;
    };

#### readonly debugFrustumStatistics : Object
Scene/Scene.js 1443

This property is for debugging only; it is not for production use.

When `Scene.debugShowFrustums` is `true`, this contains properties with statistics about the number of command execute per frustum. `totalCommands` is the total number of commands executed, ignoring overlap. `commandsInFrustums` is an array with the number of times commands are executed redundantly, e.g., how many commands overlap two or three frustums.

Default Value: `undefined`

#### debugShowCommands : Boolean
Scene/Scene.js 468

This property is for debugging only; it is not for production use.

When `true`, commands are randomly shaded. This is useful for performance analysis to see what parts of a scene or model are command-dense and could benefit from batching.

Default Value: `false`

#### debugShowDepthFrustum : Number
Scene/Scene.js 521

This property is for debugging only; it is not for production use.

Indicates which frustum will have depth information displayed.

Default Value: `1`

#### debugShowFramesPerSecond : Boolean
Scene/Scene.js 497

This property is for debugging only; it is not for production use.

Displays frames per second and time between frames.

Default Value: `false`

#### debugShowFrustumPlanes : Boolean
Scene/Scene.js 533

This property is for debugging only; it is not for production use.

When `true`, draws outlines to show the boundaries of the camera frustums

Default Value: `false`

#### debugShowFrustums : Boolean
Scene/Scene.js 485

This property is for debugging only; it is not for production use.

When `true`, commands are shaded based on the frustums they overlap. Commands in the closest frustum are tinted red, commands in the next closest are green, and commands in the farthest frustum are blue. If a command overlaps more than one frustum, the color components are combined, e.g., a command overlapping the first two frustums is tinted yellow.

Default Value: `false`

#### debugShowGlobeDepth : Boolean
Scene/Scene.js 509

This property is for debugging only; it is not for production use.

Displays depth information for the indicated frustum.

Default Value: `false`

#### readonly drawingBufferHeight : Number
Scene/Scene.js 912

The drawingBufferHeight of the underlying GL context.

##### See:

- drawingBufferHeight

#### readonly drawingBufferWidth : Number
Scene/Scene.js 927

The drawingBufferHeight of the underlying GL context.

##### See:

- drawingBufferHeight

#### exposure : Number
Scene/Scene.js 2028

场景曝光度
当`Scene#colorCorrection`开启时有效 取值范围[-1, +∞]

Default Value: `0`

##### See:

- Scene#colorCorrection

#### eyeSeparation : Number
Scene/Scene.js 628

The eye separation distance in meters for use with cardboard or WebVR.

#### farToNearRatio : Number
Scene/Scene.js 402

The far-to-near ratio of the multi-frustum when using a normal depth buffer.

This value is used to create the near and far values for each frustum of the multi-frustum. It is only used when `Scene#logarithmicDepthBuffer` is `false`. When `logarithmicDepthBuffer` is `true`, use `Scene#logarithmicDepthFarToNearRatio`.

Default Value: `1000.0`

#### focalLength : Number
Scene/Scene.js 622

The focal length for use when with cardboard or WebVR.

#### fog : Fog
Scene/Scene.js 584

Blends the atmosphere to geometry far from the camera for horizon views. Allows for additional performance improvements by rendering less geometry and dispatching less terrain requests.

#### gamma : Number
Scene/Scene.js 1806

The value used for gamma correction. This is only used when rendering with high dynamic range.

Default Value: `2.2`

#### globe : Globe
Scene/Scene.js 1046

Gets or sets the depth-test ellipsoid.

#### readonly groundPrimitives : PrimitiveCollection
Scene/Scene.js 1091

Gets the collection of ground primitives.

#### highDynamicRange : Boolean
Scene/Scene.js 1821

Whether or not to use high dynamic range rendering.

Default Value: `true`

#### readonly highDynamicRangeSupported : Boolean
Scene/Scene.js 1840

Whether or not high dynamic range rendering is supported.

Default Value: `true`

#### hue : Number
Scene/Scene.js 2088

场景色调
当`Scene#colorCorrection`开启时有效 取值要求大于0

Default Value: `0`

##### See:

- Scene#colorCorrection

#### readonly id : String
Scene/Scene.js 1481

Gets the unique identifier for this scene.

#### readonly imageryLayers : ImageryLayerCollection
Scene/Scene.js 1258

Gets the collection of image layers that will be rendered on the globe.

#### imagerySplitPosition : Number
Scene/Scene.js 1622

Gets or sets the position of the Imagery splitter within the viewport. Valid values are between 0.0 and 1.0.

#### invertClassification : Boolean
Scene/Scene.js 604

When `false`, 3D Tiles will render normally. When `true`, classified 3D Tile geometry will render normally and unclassified 3D Tile geometry will render with the color multiplied by `Scene#invertClassificationColor`.

Default Value: `false`

#### invertClassificationColor : Color
Scene/Scene.js 613

The highlight color of unclassified 3D Tile geometry when `Scene#invertClassification` is `true`.

When the color's alpha is less than 1.0, the unclassified portions of the 3D Tiles will not blend correctly with the classified positions of the 3D Tiles.

Also, when the color's alpha is less than 1.0, the WEBGL_depth_texture and EXT_frag_depth WebGL extensions must be supported.

Default Value: `Color.WHITE`

#### readonly invertClassificationSupported : Boolean
Scene/Scene.js 1019

Returns `true` if the `Scene#invertClassification` is supported.

##### See:

- Scene#invertClassification

#### readonly lastRenderTime : JulianDate
Scene/Scene.js 1408

Gets the simulation time when the scene was last rendered. Returns undefined if the scene has not yet been rendered.

#### layers : Layers
Scene/Scene.js 1900

图层管理对象

#### light : Light
Scene/Scene.js 771

The light source for shading. Defaults to a directional light from the Sun.

#### logarithmicDepthBuffer : Boolean
Scene/Scene.js 1787

Whether or not to use a logarithmic depth buffer. Enabling this option will allow for less frustums in the multi-frustum, increasing performance. This property relies on fragmentDepth being supported.

#### logarithmicDepthFarToNearRatio : Number
Scene/Scene.js 415

The far-to-near ratio of the multi-frustum when using a logarithmic depth buffer.

This value is used to create the near and far values for each frustum of the multi-frustum. It is only used when `Scene#logarithmicDepthBuffer` is `true`. When `logarithmicDepthBuffer` is `false`, use `Scene#farToNearRatio`.

Default Value: `1e9`

#### readonly mapMode2D : MapMode2D
Scene/Scene.js 1610

Determines if the 2D map is rotatable or can be scrolled infinitely in the horizontal direction.

#### readonly mapProjection : MapProjection
Scene/Scene.js 1185

Get the map projection to use in 2D and Columbus View modes.

Default Value: `new GeographicProjection()`

#### readonly maximumAliasedLineWidth : Number
Scene/Scene.js 942

The maximum aliased line width, in pixels, supported by this WebGL implementation. It will be at least one.

##### See:

- glGet with `ALIASED_LINE_WIDTH_RANGE`.

#### readonly maximumCubeMapSize : Number
Scene/Scene.js 957

The maximum length in pixels of one edge of a cube map, supported by this WebGL implementation. It will be at least 16.

##### See:

- glGet with `GL_MAX_CUBE_MAP_TEXTURE_SIZE`.

#### maximumRenderTimeChange : Number
Scene/Scene.js 715

If `Scene#requestRenderMode` is `true`, this value defines the maximum change in simulation time allowed before a render is requested. Lower values increase the number of frames rendered and higher values decrease the number of frames rendered. If `undefined`, changes to the simulation time will never request a render. This value impacts the rate of rendering for changes in the scene like lighting, entity property updates, and animations.

Default Value: `0.0`

##### See:

- Improving Performance with Explicit Rendering
- Scene#requestRenderMode

#### minimumDisableDepthTestDistance : Number
Scene/Scene.js 1767

The distance from the camera at which to disable the depth test of billboards, labels and points to, for example, prevent clipping against terrain. When set to zero, the depth test should always be applied. When less than zero, the depth test should never be applied. Setting the disableDepthTestDistance property of a billboard, label or point will override this value.

Default Value: `0.0`

#### mode : SceneMode
Scene/Scene.js 1493

Gets or sets the current mode of the scene.

Default Value: ``SceneMode.SCENE3D``

#### moon : Moon
Scene/Scene.js 366

The `Moon`

Default Value: `undefined`

#### morphComplete : Event
Scene/Scene.js 323

The event fired at the completion of a scene transition.

Default Value: `Event()`

#### morphStart : Event
Scene/Scene.js 316

The event fired at the beginning of a scene transition.

Default Value: `Event()`

#### morphTime : Number
Scene/Scene.js 389

The current morph transition time between 2D/Columbus View and 3D, with 0.0 being 2D or Columbus View and 1.0 being 3D.

Default Value: `1.0`

#### multiViewports : Array
Scene/Scene.js 1956

多视图参数数组

##### Example:

    viewer.scene.useMultiViewports=true;
    viewer.scene.multiViewports = [
      {
          //视图一
          //设置视图左下角的x坐标
          x: 0,
          //设置视图左下角的y坐标
          y: 0,
          //设置视口相对屏幕的宽度比
          w: 0.5,
          //设置视口相对屏幕的高度比
          h: 0.5,
          //相机控制 设置当前视图的camera参数，参考地址:https://cesium.com/learn/cesiumjs/ref-doc/Camera.html
          cameraControl: function (camera) {
              camera.moveUp(0);
              var backDirection = Cesium.Cartesian3.negate(viewer.scene.camera.direction, new Cesium.Cartesian3());
              camera.lookDown(Cesium.Math.toRadians(10));
              camera.lookRight(Cesium.Math.toRadians(-60));
              camera.move(backDirection, 200 / Math.tan(20));
              camera.moveBackward(470);
          }
          cameraControl: function () {}
      },
      {
          //视图二
          x: 0,
          y: 0.5,
          w: 0.5,
          h: 0.5,
          cameraControl: function () {}
      },
      {
          //视图三
          x: 0.5,
          y: 0,
          w: 0.5,
          h: 1.0,
          cameraControl: function (camera) {
              camera.moveUp(2000);
              var backDirection = Cesium.Cartesian3.negate(viewer.scene.camera.direction, new Cesium.Cartesian3());
              camera.lookDown(Cesium.Math.toRadians(90));
              camera.move(backDirection, 50 / Math.tan(20));
          }
      }
     ];

#### nearToFarDistance2D : Number
Scene/Scene.js 425

Determines the uniform depth size in meters of each frustum of the multifrustum in 2D. If a primitive or model close to the surface shows z-fighting, decreasing this will eliminate the artifact, but decrease performance. On the other hand, increasing this will increase performance but may cause z-fighting among primitives close to the surface.

Default Value: `1.75e6`

#### readonly orderIndependentTranslucency : Boolean
Scene/Scene.js 1469

Gets whether or not the scene has order independent translucency enabled. Note that this only reflects the original construction option, and there are other factors that could prevent OIT from functioning on a given system configuration.

#### readonly pickPositionSupported : Boolean
Scene/Scene.js 972

Returns `true` if the `Scene#pickPosition` function is supported.

##### See:

- Scene#pickPosition

#### pickTranslucentDepth : Boolean
Scene/Scene.js 569

When `true`, enables picking translucent geometry using the depth buffer. Note that `Scene#useDepthPicking` must also be true for enabling this to work.

Render must be called between picks.
There is a decrease in performance when enabled. There are extra draw calls to write depth for translucent geometry.

Default Value: `false`

##### Example:

    // picking the position of a translucent primitive
    viewer.screenSpaceEventHandler.setInputAction(function onLeftClick(movement) {
         var pickedFeature = viewer.scene.pick(movement.position);
         if (!Cesium.defined(pickedFeature)) {
             // nothing picked
             return;
         }
         viewer.scene.render();
         var worldPosition = viewer.scene.pickPosition(movement.position);
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

#### postProcessStages : PostProcessStageCollection
Scene/Scene.js 634

Post processing effects applied to the final render.

#### readonly postRender : Event
Scene/Scene.js 1394

Gets the event that will be raised immediately after the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.

##### See:

- Improving Performance with Explicit Rendering
- Scene#preUpdate
- Scene#postUpdate
- Scene#postRender

#### readonly postUpdate : Event
Scene/Scene.js 1339

Gets the event that will be raised immediately after the scene is updated and before the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.

##### See:

- Improving Performance with Explicit Rendering
- Scene#preUpdate
- Scene#preRender
- Scene#postRender

#### readonly preRender : Event
Scene/Scene.js 1375

Gets the event that will be raised after the scene is updated and immediately before the scene is rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.

##### See:

- Improving Performance with Explicit Rendering
- Scene#preUpdate
- Scene#postUpdate
- Scene#postRender

#### readonly preUpdate : Event
Scene/Scene.js 1319

Gets the event that will be raised before the scene is updated or rendered. Subscribers to the event receive the Scene instance as the first parameter and the current time as the second parameter.

##### See:

- Improving Performance with Explicit Rendering
- Scene#postUpdate
- Scene#preRender
- Scene#postRender

#### readonly primitives : PrimitiveCollection
Scene/Scene.js 1066

Gets the collection of primitives.

#### readonly renderError : Event
Scene/Scene.js 1355

Gets the event that will be raised when an error is thrown inside the `render` function. The Scene instance and the thrown error are the only two parameters passed to the event handler. By default, errors are not rethrown after this event is raised, but that can be changed by setting the `rethrowRenderErrors` property.

#### requestRenderMode : Boolean
Scene/Scene.js 698

When `true`, rendering a frame will only occur when needed as determined by changes within the scene. Enabling improves performance of the application, but requires using `Scene#requestRender` to render a new frame explicitly in this mode. This will be necessary in many cases after making changes to the scene in other parts of the API.

Default Value: `false`

##### See:

- Improving Performance with Explicit Rendering
- Scene#maximumRenderTimeChange
- Scene#requestRender

#### rethrowRenderErrors : Boolean
Scene/Scene.js 300

Exceptions occurring in `render` are always caught in order to raise the `renderError` event. If this property is true, the error is rethrown after the event is raised. If this property is false, the `render` function returns normally after raising the event.

Default Value: `false`

#### readonly sampleHeightSupported : Boolean
Scene/Scene.js 988

Returns `true` if the `Scene#sampleHeight` and `Scene#sampleHeightMostDetailed` functions are supported.

##### See:

- Scene#sampleHeight
- Scene#sampleHeightMostDetailed

#### saturation : Number
Scene/Scene.js 2068

场景饱和度
当`Scene#colorCorrection`开启时有效 取值范围[-1, +1]

Default Value: `0`

##### See:

- Scene#colorCorrection

#### readonly scene3DOnly : Boolean
Scene/Scene.js 1455

Gets whether or not the scene is optimized for 3D only viewing.

#### readonly screenSpaceCameraController : ScreenSpaceCameraController
Scene/Scene.js 1170

Gets the controller for camera input handling.

#### shadowMap : ShadowMap
Scene/Scene.js 592

The shadow map for the scene's light source. When enabled, models, primitives, and the globe may cast and receive shadows.

#### skyAtmosphere : SkyAtmosphere
Scene/Scene.js 341

The sky atmosphere drawn around the globe.

Default Value: `undefined`

#### skyBox : SkyBox
Scene/Scene.js 333

The `SkyBox` used to draw the stars.

Default Value: `undefined`

##### See:

- Scene#backgroundColor

#### specularEnvironmentMaps : String
Scene/Scene.js 764

The url to the KTX2 file containing the specular environment map and convoluted mipmaps for image-based lighting of PBR models.

#### readonly specularEnvironmentMapsSupported : Boolean
Scene/Scene.js 1034

Returns `true` if specular environment maps are supported.

##### See:

- Scene#specularEnvironmentMaps

#### sphericalHarmonicCoefficients : Array.<Cartesian3>
Scene/Scene.js 758

The spherical harmonic coefficients for image-based lighting of PBR models.

#### sun : Sun
Scene/Scene.js 349

The `Sun`.

Default Value: `undefined`

#### sunBloom : Boolean
Scene/Scene.js 357

Uses a bloom filter on the sun when enabled.

Default Value: `true`

#### swipeController : SwiperController
Scene/Scene.js 1727

卷帘对比分析控制器

##### Example:

    const baiduProvider = viewer.imageryLayers.addImageryProvider(
        new Cesium.BaiduMapImagerProvider({
            ptype: 'tile',
        })
    );
    baiduProvider.swipeEnabled = true;
    // 若开启图层自身的反转控制属性，则scene.swipeController中的inverse属性将对其无效。
    baiduProvider.swipeInverse = false;

    // 1. 屏蔽左侧
    viewer.scene.swipeController = {
       region: 0.3,
       type: Cesium.SwipeModeType.HORIZONTAL,
       inverse: false
    }

    // 2. 屏蔽右侧
    viewer.scene.swipeController = {
       region: 0.3,
       type: Cesium.SwipeModeType.HORIZONTAL,
       inverse: true
    }

    // 3. 屏蔽上方
    viewer.scene.swipeController = {
       region: 0.3,
       type: Cesium.SwipeModeType.VERTICAL,
       inverse: false
    }

    // 4. 屏蔽下方
    viewer.scene.swipeController = {
       region: 0.3,
       type: Cesium.SwipeModeType.VERTICAL,
       inverse: true
    }

    // 5. 矩形屏蔽
    viewer.scene.swipeController = {
       region: new Cesium.Cartesian4(0.3, 0.1, 0.8, 1),
       type: Cesium.SwipeModeType.RECTANGLE,
       inverse: false
    }

    // 6. 矩形屏蔽反转
    viewer.scene.swipeController = {
       region: new Cesium.Cartesian4(0.3, 0.1, 0.8, 1),
       type: Cesium.SwipeModeType.RECTANGLE,
       inverse: true
    }

    // 7. 小望远镜模式
    viewer.scene.swipeController = {
        region: {
            center: new Cesium.Cartesian2(0.5, 0.5),
            radius: 0.5,
        },
        type: Cesium.SwipeModeType.SPYGLASS,
        inverse: false
    }

    // 8. 多边形模式
    viewer.scene.swipeController = {
        region: [
            new Cesium.Cartesian2(0.3, 0.5),
            new Cesium.Cartesian2(0.5, 0.75),
            new Cesium.Cartesian2(0.7, 0.5),
            new Cesium.Cartesian2(0.6, 0.2),
            new Cesium.Cartesian2(0.4, 0.2)
        ],
        type: Cesium.SwipeModeType.POLYGON,
        inverse: false
    }

##### See:

- 卷帘对比分析图层支持情况 https://shimo.im/docs/vVqRM7x15wfjZn3y/

#### terrainExaggeration : Number
Scene/Scene.js 1549

Gets or sets the scalar used to exaggerate the terrain.

#### terrainProvider : TerrainProvider
Scene/Scene.js 1274

The terrain provider providing surface geometry for the globe.

#### readonly terrainProviderChanged : Event
Scene/Scene.js 1296

Gets an event that's raised when the terrain provider is changed

#### useDepthPicking : Boolean
Scene/Scene.js 543

When `true`, enables picking using the depth buffer.

Default Value: `true`

#### useMultiViewports : Boolean
Scene/Scene.js 1972

是否使用多视图功能

##### Example:

    viewer.scene.useMultiViewports=true;

#### useWebVR : Boolean
Scene/Scene.js 1573

When `true`, splits the scene into two viewports with steroscopic views for the left and right eyes. Used for cardboard and WebVR.

Default Value: `false`

#### readonly visualAnalysisManager : VisualAnalysisManager
Scene/Scene.js 1078

分析功能管理器

### Methods

#### addLight(light)
Scene/Scene.js 5570

添加光源

Name | Type | Description
--- | --- | ---
`light` | * |

#### cartesianToCanvasCoordinates(position, result) → Cartesian2
Scene/Scene.js 5075

Transforms a position in cartesian coordinates to canvas coordinates. This is commonly used to place an HTML element at the same screen position as an object in the scene.

Name | Type | Description
--- | --- | ---
`position` | Cartesian3 | The position in cartesian coordinates.
`result` | Cartesian2 | optional An optional object to return the input position transformed to canvas coordinates.

##### Returns:

The modified result parameter or a new Cartesian2 instance if one was not provided. This may be `undefined` if the input position is near the center of the ellipsoid.

##### Example:

    // Output the canvas position of longitude/latitude (0, 0) every time the mouse moves.
    var scene = widget.scene;
    var ellipsoid = scene.globe.ellipsoid;
    var position = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
    var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
    handler.setInputAction(function(movement) {
        console.log(scene.cartesianToCanvasCoordinates(position));
    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

#### clampToHeight(cartesian, objectsToExclude, width, result) → Cartesian3
Scene/Scene.js 4990

Clamps the given cartesian position to the scene geometry along the geodetic surface normal. Returns the clamped position or `undefined` if there was no scene geometry to clamp to. May be used to clamp objects to the globe, 3D Tiles, or primitives in the scene.

This function only clamps to globe tiles and 3D Tiles that are rendered in the current view. Clamps to all other primitives regardless of their visibility.

Name | Type | Default | Description
--- | --- | --- | ---
`cartesian` | Cartesian3 |  | The cartesian position.
`objectsToExclude` | Array.<Object> |  | optional A list of primitives, entities, or 3D Tiles features to not clamp to.
`width` | Number | `0.1` | optional Width of the intersection volume in meters.
`result` | Cartesian3 |  | optional An optional object to return the clamped position.

##### Returns:

The modified result parameter or a new Cartesian3 instance if one was not provided. This may be `undefined` if there was no scene geometry to clamp to.

##### Throws:

- DeveloperError : clampToHeight is only supported in 3D mode.
- DeveloperError : clampToHeight requires depth texture support. Check clampToHeightSupported.

##### Example:

    // Clamp an entity to the underlying scene geometry
    var position = entity.position.getValue(Cesium.JulianDate.now());
    entity.position = viewer.scene.clampToHeight(position);

##### See:

- Scene#sampleHeight
- Scene#sampleHeightMostDetailed
- Scene#clampToHeightMostDetailed

#### clampToHeightMostDetailed(cartesians, objectsToExclude, width) → Promise.<Array.<Cartesian3>>
Scene/Scene.js 5053

Initiates an asynchronous `Scene#clampToHeight` query for an array of `Cartesian3` positions using the maximum level of detail for 3D Tilesets in the scene. Returns a promise that is resolved when the query completes. Each position is modified in place. If a position cannot be clamped because no geometry can be sampled at that location, or another error occurs, the element in the array is set to undefined.

Name | Type | Default | Description
--- | --- | --- | ---
`cartesians` | Array.<Cartesian3> |  | The cartesian positions to update with clamped positions.
`objectsToExclude` | Array.<Object> |  | optional A list of primitives, entities, or 3D Tiles features to not clamp to.
`width` | Number | `0.1` | optional Width of the intersection volume in meters.

##### Returns:

A promise that resolves to the provided list of positions when the query has completed.

##### Throws:

- DeveloperError : clampToHeightMostDetailed is only supported in 3D mode.
- DeveloperError : clampToHeightMostDetailed requires depth texture support. Check clampToHeightSupported.

##### Example:

    var cartesians = [
        entities[0].position.getValue(Cesium.JulianDate.now()),
        entities[1].position.getValue(Cesium.JulianDate.now())
    ];
    var promise = viewer.scene.clampToHeightMostDetailed(cartesians);
    promise.then(function(updatedCartesians) {
        entities[0].position = updatedCartesians[0];
        entities[1].position = updatedCartesians[1];
    }

##### See:

- Scene#clampToHeight

#### completeMorph()
Scene/Scene.js 5082

Instantly completes an active transition.

#### destroy()
Scene/Scene.js 5164

Destroys the WebGL resources held by this object. Destroying an object allows for deterministic release of WebGL resources, instead of relying on the garbage collector to destroy this object.
Once an object is destroyed, it should not be used; calling any function other than `isDestroyed` will result in a `DeveloperError` exception. Therefore, assign the return value (`undefined`) to the object as done in the example.

##### Throws:

- DeveloperError : This object was destroyed, i.e., destroy() was called.

##### Example:

    scene = scene && scene.destroy();

##### See:

- Scene#isDestroyed

#### drillPick(windowPosition, limit, width, height) → Array.<*>
Scene/Scene.js 4818

Returns a list of objects, each containing a `primitive` property, for all primitives at a particular window coordinate position. Other properties may also be set depending on the type of primitive and may be used to further identify the picked object. The primitives in the list are ordered by their visual order in the scene (front to back).

Name | Type | Default | Description
--- | --- | --- | ---
`windowPosition` | Cartesian2 |  | Window coordinates to perform picking on.
`limit` | Number |  | optional If supplied, stop drilling after collecting this many picks.
`width` | Number | `3` | optional Width of the pick rectangle.
`height` | Number | `3` | optional Height of the pick rectangle.

##### Returns:

Array of objects, each containing 1 picked primitives.

##### Throws:

- DeveloperError : windowPosition is undefined.

##### Example:

    var pickedObjects = scene.drillPick(new Cesium.Cartesian2(100.0, 200.0));

##### See:

- Scene#pick

#### getCartesian3Position(screePosition, cartesian) → Cartesian3
Scene/Scene.js 5344

根据屏幕坐标返回对应的世界坐标，支持拾取模型缓存、实体（Entity），图元（Primitive）、地形上的点坐标
请注意如下几种情况无法返回世界坐标：
1、当 `Scene#useDepthPicking` 设置为false时，无法拾取模型缓存、实体（Entity），图元（Primitive）上的点坐标，会返回undefined
2、当 `Scene#pickTranslucentDepth` 设置为false，且实体（Entity），图元（Primitive）设置为半透明时，在鼠标移动事件中无法拾取点坐标，会返回undefined
3、当 `Scene#mode` 设置为 `SceneMode#SCENE2D` 时 ，无法拾取实体（Entity），图元（Primitive）上点坐标的高程

Name | Type | Description
--- | --- | ---
`screePosition` | Cartesian2 | 屏幕坐标
`cartesian` | Cartesian3 | 返回的世界坐标

##### Returns:

返回的世界坐标，当没有拾取到点坐标时，返回Cartesian3.ZERO

Author:
  - 杨琨

#### getCompressedTextureFormatSupported(format) → boolean
Scene/Scene.js 2105

Determines if a compressed texture format is supported.

Name | Type | Description
--- | --- | ---
`format` | String | The texture format. May be the name of the format or the WebGL extension name, e.g. s3tc or WEBGL_compressed_texture_s3tc.

##### Returns:

Whether or not the format is supported.

#### isDestroyed() → Boolean
Scene/Scene.js 5144

Returns true if this object was destroyed; otherwise, false.
If this object was destroyed, it should not be used; calling any function other than `isDestroyed` will result in a `DeveloperError` exception.

##### Returns:

`true` if this object was destroyed; otherwise, `false`.

##### See:

- Scene#destroy

#### morphTo2D(duration)
Scene/Scene.js 5090

Asynchronously transitions the scene to 2D.

Name | Type | Default | Description
--- | --- | --- | ---
`duration` | Number | `2.0` | optional The amount of time, in seconds, for transition animations to complete.

#### morphTo3D(duration)
Scene/Scene.js 5122

Asynchronously transitions the scene to 3D.

Name | Type | Default | Description
--- | --- | --- | ---
`duration` | Number | `2.0` | optional The amount of time, in seconds, for transition animations to complete.

#### morphToColumbusView(duration)
Scene/Scene.js 5106

Asynchronously transitions the scene to Columbus View.

Name | Type | Default | Description
--- | --- | --- | ---
`duration` | Number | `2.0` | optional The amount of time, in seconds, for transition animations to complete.

#### pick(windowPosition, width, height) → Object
Scene/Scene.js 4508

Returns an object with a `primitive` property that contains the first (top) primitive in the scene at a particular window coordinate or undefined if nothing is at the location. Other properties may potentially be set depending on the type of primitive and may be used to further identify the picked object.

When a feature of a 3D Tiles tileset is picked, `pick` returns a `Cesium3DTileFeature` object.

Name | Type | Default | Description
--- | --- | --- | ---
`windowPosition` | Cartesian2 |  | Window coordinates to perform picking on.
`width` | Number | `3` | optional Width of the pick rectangle.
`height` | Number | `3` | optional Height of the pick rectangle.

##### Returns:

Object containing the picked primitive.

##### Example:

    // On mouse over, color the feature yellow.
    handler.setInputAction(function(movement) {
        var feature = scene.pick(movement.endPosition);
        if (feature instanceof Cesium.Cesium3DTileFeature) {
            feature.color = Cesium.Color.YELLOW;
        }
    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

#### pickByRectangle(rectangle) → Array.<Object>
Scene/Scene.js 4588

获取矩形范围

Name | Type | Description
--- | --- | ---
`rectangle` | BoundingRectangle | 矩形范围

##### Returns:

返回对象列表

Author:
  - 韩彦生

#### pickIdsInRange(worldPositions, tileSetList) → Object
Scene/Scene.js 4525

范围拾取

Name | Type | Default | Description
--- | --- | --- | ---
`worldPositions` | Array.<Cartesian3> |  | 世界坐标系下的范围点
`tileSetList` | Array.<MapGISM3DSet> | `[]` | optional 参与范围拾取的图层

##### Returns:

被选中的要素的pickID

##### Example:

    var result = scene.pickIdsInRange(positionArray, tileSetList);
    tileSetList.forEach(tileSet => {
     // 获取对应图层的id
     var ids = result.get(tileSet);
    })

#### pickOid(windowPosition, width, height) → Number
Scene/Scene.js 4577

Name | Type | Default | Description
--- | --- | --- | ---
`windowPosition` | Cartesian2 |  | Window coordinates to perform picking on.
`width` | Number | `3` | optional Width of the pick rectangle.
`height` | Number | `3` | optional Height of the pick rectangle.

##### Returns:

OId值

Author:
  - 冯桂英

#### pickPosition(windowPosition, result) → Cartesian3
Scene/Scene.js 4793

Returns the cartesian position reconstructed from the depth buffer and window position.

The position reconstructed from the depth buffer in 2D may be slightly different from those reconstructed in 3D and Columbus view. This is caused by the difference in the distribution of depth values of perspective and orthographic projection.

Set `Scene#pickTranslucentDepth` to `true` to include the depth of translucent primitives; otherwise, this essentially picks through translucent primitives.

Name | Type | Description
--- | --- | ---
`windowPosition` | Cartesian2 | Window coordinates to perform picking on. windowPosition中x取值范围为[0,viewer.canvas.width-1],y取值范围为[0,viewer.canvas.height-1]。
`result` | Cartesian3 | optional The object on which to restore the result.

##### Returns:

The cartesian position.

##### Throws:

- DeveloperError : Picking from the depth buffer is not supported. Check pickPositionSupported.

#### pickTextureCoordinate(windowPosition, width, height) → Color
Scene/Scene.js 4563

Name | Type | Default | Description
--- | --- | --- | ---
`windowPosition` | Cartesian2 |  | Window coordinates to perform picking on.
`width` | Number | `3` | optional Width of the pick rectangle.
`height` | Number | `3` | optional Height of the pick rectangle.

##### Returns:

color RGB form framBuffer

Author:
  - 冯桂英

#### removeLight(light)
Scene/Scene.js 5578

移除光源

Name | Type | Description
--- | --- | ---
`light` | * |

#### render(time)
Scene/Scene.js 4381

Update and render the scene. It is usually not necessary to call this function directly because `CesiumWidget` or `Viewer` do it automatically.

Name | Type | Description
--- | --- | ---
`time` | JulianDate | optional The simulation time at which to render.

#### requestRender()
Scene/Scene.js 4475

Requests a new rendered frame when `Scene#requestRenderMode` is set to `true`. The render rate will not exceed the `CesiumWidget#targetFrameRate`.

##### See:

- Scene#requestRenderMode

#### sampleHeight(position, objectsToExclude, width) → Number
Scene/Scene.js 4959

Returns the height of scene geometry at the given cartographic position or `undefined` if there was no scene geometry to sample height from. The height of the input position is ignored. May be used to clamp objects to the globe, 3D Tiles, or primitives in the scene.

This function only samples height from globe tiles and 3D Tiles that are rendered in the current view. Samples height from all other primitives regardless of their visibility.

Name | Type | Default | Description
--- | --- | --- | ---
`position` | Cartographic |  | The cartographic position to sample height from.
`objectsToExclude` | Array.<Object> |  | optional A list of primitives, entities, or 3D Tiles features to not sample height from.
`width` | Number | `0.1` | optional Width of the intersection volume in meters.

##### Returns:

The height. This may be `undefined` if there was no scene geometry to sample height from.

##### Throws:

- DeveloperError : sampleHeight is only supported in 3D mode.
- DeveloperError : sampleHeight requires depth texture support. Check sampleHeightSupported.

##### Example:

    var position = new Cesium.Cartographic(-1.31968, 0.698874);
    var height = viewer.scene.sampleHeight(position);
    console.log(height);

##### See:

- Scene#clampToHeight
- Scene#clampToHeightMostDetailed
- Scene#sampleHeightMostDetailed

#### sampleHeightMostDetailed(positions, objectsToExclude, width) → Promise.<Array.<Cartographic>>
Scene/Scene.js 5022

Initiates an asynchronous `Scene#sampleHeight` query for an array of `Cartographic` positions using the maximum level of detail for 3D Tilesets in the scene. The height of the input positions is ignored. Returns a promise that is resolved when the query completes. Each point height is modified in place. If a height cannot be determined because no geometry can be sampled at that location, or another error occurs, the height is set to undefined.

Name | Type | Default | Description
--- | --- | --- | ---
`positions` | Array.<Cartographic> |  | The cartographic positions to update with sampled heights.
`objectsToExclude` | Array.<Object> |  | optional A list of primitives, entities, or 3D Tiles features to not sample height from.
`width` | Number | `0.1` | optional Width of the intersection volume in meters.

##### Returns:

A promise that resolves to the provided list of positions when the query has completed.

##### Throws:

- DeveloperError : sampleHeightMostDetailed is only supported in 3D mode.
- DeveloperError : sampleHeightMostDetailed requires depth texture support. Check sampleHeightSupported.

##### Example:

    var positions = [
        new Cesium.Cartographic(-1.31968, 0.69887),
        new Cesium.Cartographic(-1.10489, 0.83923)
    ];
    var promise = viewer.scene.sampleHeightMostDetailed(positions);
    promise.then(function(updatedPosition) {
        // positions[0].height and positions[1].height have been updated.
        // updatedPositions is just a reference to positions.
    }

##### See:

- Scene#sampleHeight

#### startCustomDisplay(layerList, idList, options)
Scene/Scene.js 5422

设置单体要素高亮

Name | Type | Description
--- | --- | ---
`layerList` | Array.<MapGISM3DSet> | 图层列表
`idList` | Array.<Number> | id列表
`options` | Object | 扩展属性
Name | Type | Default | Description
--- | --- | --- | ---
`color` | Color | `new Cesium.Color(1.0, 0, 0, 0.5)` | optional 高亮颜色
`colorBlendMode` | Cesium3DTileColorBlendMode | `Cesium.Cesium3DTileColorBlendMode.HIGHLIGHT` | optional 高亮模式
`colorBlendAmount` | Number | `0.5` | optional 混合系数
`applyForLayer` | Boolean | `false` | optional 是否应用至图层
`negate` | Color | `true` | optional 是否取反 ——意思是除了id列表中的要素应用color
`negateColor` | Color | `new Cesium.Color.WHITE` | optional 取反的颜色,只有在negate=true 的时候才起作用
`style` | String | `'Edge'` | optional 高亮模式,'Edge':描边;'EdgeHighlight':高亮+描边
`edgeColor` | Color | `new Cesium.Color(0, 0, 1, 1.0)` | optional 描边颜色 默认红色
`isReset` | Boolean | `true` | optional 重置单体数据的颜色

#### stopCustomDisplay(图层列表)
Scene/Scene.js 5505

停止全部高亮

Name | Type | Description
--- | --- | ---
`图层列表` | Array.<MapGISM3DSet> |

#### stopCustomDisplayByIds(layerList, idList)
Scene/Scene.js 5530

根据id停止高亮

Name | Type | Description
--- | --- | ---
`layerList` | Array.<MapGISM3DSet> | 图层列表
`idList` | Array.<Number> | id列表