arcgis-scene-environment
Skill0 starsChanged 7 months agoMITView on GitHub
Configure SceneView environment settings including lighting, weather, shadows, atmosphere, backgrounds, and underground navigation. Use for realistic 3D visualizations.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- geoai-latam/SKILL_JS5_ARCGIStheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- geoai-latam/SKILL_JS5_ARCGIS★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository47 other files it gives its agents.
- AGENTS.mdAGENTS.md
- skills/arcgis-ai-components/AGENTS.mdAGENTS.md
- skills/arcgis-authentication/AGENTS.mdAGENTS.md
- skills/arcgis-charts/AGENTS.mdAGENTS.md
- skills/arcgis-coding-components/AGENTS.mdAGENTS.md
- skills/arcgis-core-maps/AGENTS.mdAGENTS.md
- skills/arcgis-editing/AGENTS.mdAGENTS.md
- skills/arcgis-embeddable-maps/AGENTS.mdAGENTS.md
- skills/arcgis-interaction/AGENTS.mdAGENTS.md
- skills/arcgis-layers/AGENTS.mdAGENTS.md
- skills/arcgis-starter-app/AGENTS.mdAGENTS.md
- skills/arcgis-visualization/AGENTS.mdAGENTS.md
- skills/arcgis-widgets-ui/AGENTS.mdAGENTS.md
- arcgis-3d-layersSkill
- arcgis-advanced-layersSkill
- arcgis-ai-componentsSkill
- arcgis-arcadeSkill
- arcgis-authenticationSkill
- arcgis-chartsSkill
- arcgis-cim-symbolsSkill
- arcgis-coding-componentsSkill
- arcgis-coordinates-projectionSkill
- arcgis-core-mapsSkill
- arcgis-core-utilitiesSkill
- arcgis-custom-renderingSkill
- arcgis-editingSkill
- arcgis-embeddable-mapsSkill
- arcgis-feature-effectsSkill
- arcgis-geometry-operationsSkill
- arcgis-imagerySkill
- arcgis-interactionSkill
- arcgis-knowledge-graphsSkill
- arcgis-layersSkill
- arcgis-map-toolsSkill
- arcgis-performanceSkill
- arcgis-popup-templatesSkill
- arcgis-portal-contentSkill
- arcgis-rest-servicesSkill
- arcgis-smart-mappingSkill
- arcgis-spatial-analysisSkill
- arcgis-starter-appSkill
- arcgis-tables-formsSkill
- arcgis-time-animationSkill
- arcgis-utility-networksSkill
- arcgis-visualizationSkill
- arcgis-widgets-advancedSkill
- arcgis-widgets-uiSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill for configuring SceneView environment: lighting, weather, shadows, atmosphere, backgrounds, underground navigation, and …
- Very specific: line 440
Alpha compositing: Must set alphaCompositingEnabled: true on SceneView for transparent backgrounds.
- Very specific: line 444
Underground navigation: Must set ground.navigationConstraint.type = "none".
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
ArcGIS Scene Environment
Use this skill for configuring SceneView environment: lighting, weather, shadows, atmosphere, backgrounds, underground navigation, and elevation settings.
Import Patterns
ESM (npm)
import Environment from "@arcgis/core/views/3d/environment/Environment.js";
import SunLighting from "@arcgis/core/views/3d/environment/SunLighting.js";
import VirtualLighting from "@arcgis/core/views/3d/environment/VirtualLighting.js";
import SunnyWeather from "@arcgis/core/views/3d/environment/SunnyWeather.js";
import CloudyWeather from "@arcgis/core/views/3d/environment/CloudyWeather.js";
import RainyWeather from "@arcgis/core/views/3d/environment/RainyWeather.js";
import FoggyWeather from "@arcgis/core/views/3d/environment/FoggyWeather.js";
import SnowyWeather from "@arcgis/core/views/3d/environment/SnowyWeather.js";
import ShadowCastAnalysis from "@arcgis/core/analysis/ShadowCastAnalysis.js";CDN (dynamic import)
const SunLighting = await $arcgis.import(
"@arcgis/core/views/3d/environment/SunLighting.js",
);
const RainyWeather = await $arcgis.import(
"@arcgis/core/views/3d/environment/RainyWeather.js",
);
const ShadowCastAnalysis = await $arcgis.import(
"@arcgis/core/analysis/ShadowCastAnalysis.js",
);Environment Settings
Basic Environment Configuration
const view = new SceneView({
container: "viewDiv",
map: scene,
environment: {
lighting: {
date: new Date("Sun Mar 15 2019 16:00:00 GMT+0100"),
},
atmosphereEnabled: true,
starsEnabled: true,
},
});Map Component Environment
<arcgis-scene item-id="YOUR_WEBSCENE_ID">
<arcgis-zoom slot="top-left"></arcgis-zoom>
</arcgis-scene>
<script type="module">
const viewElement = document.querySelector("arcgis-scene");
await viewElement.viewOnReady();
viewElement.environment = {
lighting: {
date: new Date(),
},
atmosphereEnabled: true,
starsEnabled: true,
};
</script>Environment Properties
| Property | Type | Description |
lighting | SunLighting | VirtualLighting | Lighting configuration |
weather | SunnyWeather | CloudyWeather | RainyWeather | FoggyWeather | SnowyWeather | Weather effects |
weatherAvailable | boolean (readonly) | Whether weather effects are supported |
atmosphereEnabled | boolean | Show atmospheric haze |
starsEnabled | boolean | Show stars at night |
background | ColorBackground | null | Scene background color/transparency |
Lighting
Sun Lighting
Realistic lighting based on sun position calculated from date, time, and geographic location.
view.environment = {
lighting: {
date: new Date("2024-06-21T14:00:00"),
directShadowsEnabled: true,
},
};
// Update sun position dynamically
view.environment.lighting.date = new Date("2024-06-21T18:00:00");Virtual Lighting
Consistent directional lighting without sun position calculations.
view.environment = {
lighting: {
type: "virtual",
},
};Shadows
Enable Direct Shadows
view.environment = {
lighting: {
directShadowsEnabled: true,
date: new Date("Sun Mar 15 2019 16:00:00 GMT+0100"),
},
};Toggle Shadows on Symbols
const clone = layer.renderer.clone();
clone.symbol.symbolLayers.getItemAt(0).castShadows = true;
layer.renderer = clone;Shadow Cast Analysis
const shadowAnalysis = new ShadowCastAnalysis({
startTime: new Date("2024-03-21T09:00:00"),
endTime: new Date("2024-03-21T17:00:00"),
});
view.analyses.add(shadowAnalysis);Weather
Weather Types
// Sunny
view.environment.weather = {
type: "sunny",
cloudCover: 0.2,
};
// Cloudy
view.environment.weather = {
type: "cloudy",
cloudCover: 0.8,
};
// Rainy
view.environment.weather = {
type: "rainy",
cloudCover: 0.8,
precipitation: 0.3,
};
// Foggy
view.environment.weather = {
type: "foggy",
visibility: 1000,
};
// Snowy
view.environment.weather = {
type: "snowy",
cloudCover: 0.9,
};Weather Properties
| Weather Type | Key Properties |
sunny | cloudCover (0–1), visibility (meters) |
cloudy | cloudCover (0–1) |
rainy | cloudCover (0–1), precipitation (0–1) |
foggy | visibility (meters) |
snowy | cloudCover (0–1) |
Weather and Daylight Components
Daylight Component
<arcgis-scene item-id="YOUR_WEBSCENE_ID">
<arcgis-daylight slot="top-right"></arcgis-daylight>
</arcgis-scene>| Attribute | Type | Description |
date-or-season | "date" | "season" | Calendar or season selector |
play-speed-multiplier | number | Animation speed multiplier |
hide-timezone | boolean | Hide timezone display |
Events:
arcgis-daylight-change— Date/time changedarcgis-season-change— Season changed
Weather Component
<arcgis-scene item-id="YOUR_WEBSCENE_ID">
<arcgis-weather slot="top-right"></arcgis-weather>
</arcgis-scene>Shadow Cast Component
<arcgis-scene item-id="YOUR_WEBSCENE_ID">
<arcgis-shadow-cast slot="top-right"></arcgis-shadow-cast>
</arcgis-scene>Transparent Background
Configure Transparent Background
const view = new SceneView({
container: "viewDiv",
map: scene,
alphaCompositingEnabled: true,
environment: {
background: {
type: "color",
color: [255, 252, 244, 0],
},
starsEnabled: false,
atmosphereEnabled: false,
},
});Toggle Background Transparency
const backgroundColor = view.environment.background.color.clone();
backgroundColor.a = 0;
view.environment.background.color = backgroundColor;Underground Navigation
Enable Underground Navigation (Map Component)
<arcgis-scene item-id="YOUR_WEBSCENE_ID">
<arcgis-zoom slot="top-left"></arcgis-zoom>
</arcgis-scene>
<script type="module">
const viewElement = document.querySelector("arcgis-scene");
await viewElement.viewOnReady();
viewElement.map.ground.navigationConstraint = { type: "none" };
viewElement.map.ground.opacity = 0.4;
viewElement.map.ground.surfaceColor = "#fff";
</script>Underground Navigation (Core API)
const view = new SceneView({
container: "viewDiv",
map: scene,
});
view.when(() => {
view.map.ground.navigationConstraint = { type: "none" };
view.map.ground.opacity = 0.4;
});
// Navigate underground
view.goTo({
position: {
x: -122.4,
y: 37.8,
z: -500,
spatialReference: { wkid: 4326 },
},
tilt: 80,
});Ground Configuration
// World elevation
map.ground = "world-elevation";
// Custom elevation layer
import ElevationLayer from "@arcgis/core/layers/ElevationLayer.js";
map.ground = {
layers: [
new ElevationLayer({
url: "https://elevation.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer",
}),
],
};
// Underground navigation + semi-transparent ground
map.ground.navigationConstraint = { type: "none" };
map.ground.opacity = 0.5;Local Scene Mode
Create Local Scene
<arcgis-scene basemap="topo-vector" viewing-mode="local">
<arcgis-zoom slot="top-left"></arcgis-zoom>
</arcgis-scene>Local Scene with Clipping Area
const viewElement = document.querySelector("arcgis-scene");
await viewElement.viewOnReady();
const clippingExtent = {
xmax: -10834217,
xmin: -10932882,
ymax: 4493918,
ymin: 4432667,
spatialReference: { wkid: 3857 },
};
viewElement.clippingArea = clippingExtent;
viewElement.extent = clippingExtent;
viewElement.environment = {
atmosphereEnabled: false,
starsEnabled: false,
};Elevation Modes
layer.elevationInfo = {
mode: "on-the-ground", // Draped on ground
// mode: "relative-to-ground" // Offset from ground
// mode: "relative-to-scene" // Offset from scene
// mode: "absolute-height" // Absolute Z values
};
// With offset
layer.elevationInfo = {
mode: "relative-to-ground",
offset: 100,
unit: "meters",
};
// With Arcade expression
layer.elevationInfo = {
mode: "relative-to-ground",
featureExpressionInfo: {
expression: "Geometry($feature).z * 10",
},
unit: "meters",
};Scene Quality
view.qualityProfile = "high"; // "low", "medium", "high"Screenshot Capture
// Full view screenshot
const screenshot = await view.takeScreenshot({ format: "png" });
const img = document.createElement("img");
img.src = screenshot.dataUrl;
document.body.appendChild(img);
// Specific area
const screenshot = await view.takeScreenshot({
area: { x: 100, y: 100, width: 500, height: 400 },
format: "png",
});
// Download
function downloadImage(filename, dataUrl) {
const element = document.createElement("a");
element.href = dataUrl;
element.download = filename;
element.click();
}
downloadImage("scene-screenshot.png", screenshot.dataUrl);View Constraints
const view = new SceneView({
container: "viewDiv",
map: scene,
constraints: {
altitude: {
min: 20000000,
max: 25000000,
},
},
});Common Pitfalls
- Alpha compositing: Must set
alphaCompositingEnabled: trueon SceneView for transparent backgrounds. - Local scenes: Require clipping area and typically disable atmosphere/stars.
- Underground navigation: Must set
ground.navigationConstraint.type = "none". - Shadow performance:
directShadowsEnabledcan impact rendering performance significantly. - Elevation modes:
"on-the-ground"ignoresoffsetandfeatureExpressionInfo. - Weather only in SceneView: Weather effects do not work in MapView.
- Screenshot CORS: External layers may block screenshot capture due to CORS.
Reference Samples
daylight— Daylight widget for sun positionweather— Weather effects in SceneViewscene-shadow— Shadow casting in 3Danalysis-shadow-cast— Shadow cast analysisscene-underground— Underground navigationscene-environment— Environment settings
Related Skills
arcgis-3d-layers— SceneLayer, PointCloudLayer, VoxelLayerarcgis-custom-rendering— RenderNode for custom 3D effectsarcgis-core-maps— SceneView setup and initialization
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

