SuperAPI AI 工具集

arcgis-scene-effects

前端与建站

查看项目

更新于 10-16 06:58

技能介绍

用途

arcgis-scene-effects 用于配置 ArcGIS Maps SDK for JavaScript 中 SceneView 的场景环境(environment),涵盖阴影、光照、背景、地下导航与高程等设置,面向需要精细控制三维场景视觉表现的开发场景。

主要能力

环境设置

可在 SceneView 或 arcgis-scene 组件上通过 environment 配置 lighting(directShadowsEnabled、date)、atmosphereEnabled、starsEnabled。

阴影与光照

  • 启用直接阴影并设置日期,例如: view.environment = { lighting: { directShadowsEnabled: true, date: new Date("Sun Mar 15 2019 16:00:00 GMT+0100") } };
  • 可动态更新光照时间:view.environment.lighting.date = new Date(dateString)。
  • 切换符号阴影:通过克隆 renderer 并设置 clone.symbol.symbolLayers.getItemAt(0).castShadows = true。
  • 高亮阴影颜色:使用 HighlightOptions(name、color、shadowColor),并可动态修改 shadowColor。
  • 虚拟光照:lighting.type = "virtual",用于不依赖太阳位置的一致光照。

透明背景

  • 需设置 alphaCompositingEnabled: true。
  • 通过 background 使用 RGBA 颜色,如 color: [255, 252, 244, 0];也可克隆背景色并将 a 设为 0 实现透明。

地下导航

  • 设置 ground.navigationConstraint = { type: "none" } 允许镜头进入地下。
  • 设置 ground.opacity(如 0.4)让地面半透明。
  • 可在无底图时设置 ground.surfaceColor。
  • 可通过 goTo 的 position.z 为负值导航到地下视点。

局部场景模式

  • 使用 viewing-mode="local",并配合裁剪范围(clippingArea 与 extent)。
  • 局部场景通常禁用 atmosphereEnabled 与 starsEnabled。

高程信息

支持 elevationInfo 的多种模式:on-the-ground、relative-to-ground、relative-to-scene、absolute-height。可设置 offset 与 unit(如 meters),也可通过 featureExpressionInfo.expression 使用表达式调整 Z 值。注意 on-the-ground 会忽略 offset 与表达式设置。

截图

  • viewElement.takeScreenshot({ format: "png" }) 获取整图或指定 area 区域截图。
  • 可配合 arcgisViewDrag 事件实现拖拽选区截图。
  • 提供 downloadImage 函数将 dataUrl 下载为文件。

大气与星空

在同一 environment 中控制 atmosphereEnabled 与 starsEnabled,可关闭以实现干净可视化。

视角约束与焦点区域

  • 通过 constraints.altitude 设置相机最小/最大高度。
  • 使用 FocusArea 定义关注区域几何、outline 颜色、id 与 title,并可设置 style 为 "bright" 或 "dark",也可通过 enabled 开关或 SketchViewModel 更新几何。

使用方式

该技能以示例代码为主,示例中同时演示了核心 API(SceneView 类)与 Map 组件(arcgis-scene 自定义元素)两种用法。Map 组件通过 viewOnReady() 等待视图就绪后访问 viewElement.environment、viewElement.map、viewElement.clippingArea 等属性。TypeScript 场景中使用 autocasting,建议配合 as const 以获得类型安全。

适用场景

适用于需要在三维场景中做精细化视觉控制的开发,例如:阴影与光照随时间变化的表达、透明背景叠加、地下与地面以下视角浏览、局部场景裁剪展示、基于属性表达式的高程夸张、以及带框选的场景截图导出。

限制与注意事项

  • 透明背景必须设置 alphaCompositingEnabled: true。
  • 局部场景需要裁剪范围,且通常需禁用大气与星空。
  • 地下导航必须设置 ground.navigationConstraint.type = "none"。
  • directShadowsEnabled 可能影响性能。
  • on-the-ground 模式下 offset 与表达式设置会被忽略。
  • 外部图层可能因跨域(CORS)原因导致截图失败。

暂未提供

该技能的收费、价格、具体平台支持范围、许可方式等信息暂未提供。