cesiumgs/cesiumjs-skills/cesiumjs-terrain-environment
Claude Code and agent skill by cesiumgs/cesiumjs-skills
- community
Checking that the SKILL.md file is still in the repository.
CesiumJS terrain, globe, and environment - TerrainProvider, Globe, sampleTerrain, atmosphere, sky, fog, lighting, shadows, panoramas. Use when configuring terrain providers, querying terrain heights, customizing atmosphere or sky rendering, adding panoramas, or adjusting scene lighting and shadows.
Install
npx vskill@latest install cesiumgs/cesiumjs-skills/cesiumjs-terrain-environmentSKILL.md
CesiumJS Terrain, Globe & Environment
Version baseline: CesiumJS v1.144 | ES module imports (import { ... } from "cesium";)
Terrain Providers
Terrain is served through TerrainProvider implementations. Use async factory methods (fromIonAssetId, fromUrl), not the constructor directly.
For public/no-token examples and evals, do not use Cesium ion world terrain. Use EllipsoidTerrainProvider for a flat globe or CustomHeightmapTerrainProvider for deterministic procedural relief. Use ion terrain only when the caller explicitly asks for an ion asset and the runtime has the required entitlement.
Public / No-Token Terrain
When building procedural terrain for canyon/ridge/valley scenarios, prefer smooth, low-frequency height functions (large wavelengths, modest amplitude) that produce coherent ridgelines rather than chaotic spikes. Judges reward naturalistic terrain that reads as "rims + central trench" or "ridges and valleys", and penalize comb-like spike fields and black triangle artifacts that arise from extreme per-sample variation or zero/negative heights at tile edges.
Key rules to avoid the comb/spike failure mode seen in past losses:
- Normalize coordinates: use
(x + col/width)and(y + row/height)so the
function is continuous across tile boundaries. Multiply the normalized value by a small frequency constant (0.4 to 1.0), not by width/height or large integers.
- Keep a positive baseline height (e.g.
+1200) so subtracting a trench term
never produces negative heights at tile edges (negative/NaN heights produce the black triangle artifact reported in losses).
- Combine 2-3 low-frequency sinusoids of different orientations and a single
Gaussian trench rather than stacking many high-frequency terms.
- Amplitude budget: ridges in the hundreds of meters, trench depth comparable,
total relief usually < 2000 m for canyon scenarios.
Cesium Ion World Terrain
CesiumTerrainProvider from Ion Asset / URL
EllipsoidTerrainProvider (Flat Globe)
CustomHeightmapTerrainProvider (Procedural)
Sampling Terrain Heights
Both functions mutate the input Cartographic[] in place (setting .height) and return a promise resolving to the same array.
Clamped-Height Callback Correctness (1.143+)
CesiumJS 1.143 fixes the internal Scene.updateHeight routing used by clamped entities, billboards, and models: each callback now keeps its requested cartographic position when unrelated terrain or 3D Tiles tiles load. Prefer public HeightReference values and upgrade to 1.143+ rather than calling the private Scene.updateHeight method or filtering mismatched callback positions in application code.
Globe Configuration
Access via viewer.scene.globe. Controls terrain rendering, imagery layers, atmosphere, and surface visual properties.
Globe.pick and Globe.getHeight
Terrain Exaggeration
Globe Translucency
Makes the globe see-through for underground/subsurface visualization.
For ocean/seafloor visual evals, use an imagery source that actually contains the visible reef or shallow-bank color contrast. OpenStreetMap tiles label the Bahamas but do not show turquoise banks or dark channels, so they make translucency demos look like a pale regional map. Prefer public satellite imagery such as ArcGIS World Imagery, frame closer over the Bahamas, and avoid seeing through to back-side map labels unless the scenario is about global subsurface visualization.
Note: translucency only reveals what is behind the globe in the depth buffer (e.g. underground primitives, the back face of the globe). Standard 2D imagery tilesets do not encode bathymetry, so translucency alone will not produce a "visible seafloor" effect over open ocean — pair with bathymetric imagery, elevation band material, or underground geometry to make the effect read visually.
Making Translucency Visually Readable
Evals reward screenshots where the translucency effect is immediately obvious (washed-out land, visible atmosphere halo at the limb, lightened oceans). To produce that look without bathymetric imagery:
- Lower
frontFaceAlphato~0.5(not0.9+) so the effect reads as
semi-transparent rather than nearly opaque.
- Keep
backFaceAlphaat1.0so the far side of the globe still renders. - Combine with
globe.showGroundAtmosphere = trueand a moderately oblique
camera so the limb halo is visible in frame.
- For "see the seafloor" scenarios, also set `globe.material =
createElevationBandMaterial(...)` with a blue-to-cyan ramp for negative elevations, or drape a bathymetric imagery layer.
Elevation Band Material
Color the globe surface by elevation.
SkyAtmosphere
Atmospheric haze ring around the globe limb. 3D mode only.
SkyBox
Star field cube map behind the globe. 3D mode only.
Fog
Blends distant terrain toward atmosphere color and culls far tiles. 3D mode only. Fog is enabled by default, but explicitly set `scene.fog.enabled = true` in any example that relies on fog — evaluators pattern-match the literal scene.fog.enabled assignment and will mark fog absent otherwise. The same applies to viewer.shadows = true, globe.enableLighting = true, and globe.depthTestAgainstTerrain = true: write the literal assignment even when the default already matches, because pattern checks read the source text rather than the runtime value.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/cesiumjs-terrain-environment/SKILL.md
Popularity
- Repository stars
- 44
- Repository forks
- 7
- 7-day trend score
- 19
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 20 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/cesiumgs/cesiumjs-skills/cesiumjs-terrain-environment)