ArcGIS Scene Environment 是 ArcGIS Maps SDK for JavaScript 中用于配置 SceneView 场景环境的技能,涵盖照明、天气、阴影、大气、背景、地下导航与高程设置。
用途 用于为三维场景(SceneView)配置环境效果,使 3D 地图呈现更真实的光照、天气与地形表现,并支持地下导航等特殊浏览方式。
主要能力
- 照明:支持 SunLighting(根据日期、时间与地理位置计算太阳位置的真实光照)与 VirtualLighting(不计算太阳位置的一致方向光照)。
- 天气:支持 sunny、cloudy、rainy、foggy、snowy 五种天气类型,可设置 cloudCover、precipitation、visibility 等属性。
- 阴影:可启用 directShadowsEnabled 直接阴影,切换符号投射阴影,并使用 ShadowCastAnalysis 进行阴影投射分析。
- 大气与星空:通过 atmosphereEnabled 显示大气雾霾,starsEnabled 显示夜间星空。
- 背景:支持 ColorBackground 设置场景背景颜色与透明度,透明背景需开启 alphaCompositingEnabled。
- 地下导航:通过设置 ground.navigationConstraint = { type: "none" } 并调整地面透明度实现地下浏览。
- 地面与高程:支持 world-elevation 或自定义 ElevationLayer,以及 on-the-ground、relative-to-ground、relative-to-scene、absolute-height 等高程模式。
- 局部场景:支持 viewing-mode="local" 的局部场景模式,可设置裁剪区域(clippingArea)。
- 场景质量与截图:可设置 qualityProfile(low/medium/high),并通过 takeScreenshot 捕获全视图或指定区域截图。
使用方式 提供两种导入模式:ESM(npm)方式从 @arcgis/core 导入 Environment、SunLighting、VirtualLighting、各类 Weather、ShadowCastAnalysis 等模块;CDN 方式通过 $arcgis.import 动态导入。 可通过核心 API 直接创建 SceneView 并设置 environment 属性,也可使用地图组件(arcgis-scene)配合 arcgis-daylight、arcgis-weather、arcgis-shadow-cast 等组件。
适用场景 适用于需要真实三维地理可视化的场景,如日照与阴影分析、天气效果展示、地下管线或地质浏览、局部场景展示、场景截图导出等。
限制与注意事项
- 透明背景必须在 SceneView 上设置 alphaCompositingEnabled: true。
- 局部场景需要裁剪区域,通常需禁用大气与星空。
- 地下导航必须设置 ground.navigationConstraint.type = "none"。
- directShadowsEnabled 可能显著影响渲染性能。
- "on-the-ground" 高程模式会忽略 offset 与 featureExpressionInfo。
- 天气效果仅在 SceneView 中有效,MapView 不支持。
- 截图可能因外部图层的 CORS 限制而失败。
相关技能包括 arcgis-3d-layers、arcgis-custom-rendering、arcgis-core-maps。