Hi everyone,
I’ve been building Cesium for Blender — an open-source Blender addon that streams Cesium data directly into the Blender viewport with camera-driven LOD. Think CesiumJS-style streaming, but pure Python inside Blender: move the viewport camera and tiles fetch, refine, coarsen, and unload automatically.
What works today
- Quantized-mesh terrain — Cesium World Terrain via ion (or any self-hosted
layer.jsonstack): SSE-driven quadtree refinement, replacement refinement, frustum + ellipsoid horizon culling - Imagery draping — ion-hosted TMS (geodetic and web-mercator) and Bing aerial via quadkeys, with per-vertex mercator reprojection and stitched tile covers
- Upsampled tiles past a terrain dataset’s resolution limit (CesiumJS-style), so imagery keeps sharpening on subdivided tiles
- 3D Tiles — OSM Buildings and Google Photorealistic 3D Tiles: b3dm / glb / cmpt content, external tilesets, and dynamic screen-space error so detail concentrates near the camera
- Extras: hypsometric relief-map styling and procedural volumetric clouds for quick dioramas
Repo (MIT): GitHub - CognitoBit/CesiumForBlender · GitHub
On AI: I want to be transparent that a large part of this codebase was developed with AI assistance (Anthropic’s Claude working alongside me) — the design, implementation, and testing were an iterative human + AI effort.
Known issue: viewing very large areas of 3D Tiles (wide horizon views over dense photogrammetry) still gets heavy in Blender — many small meshes plus main-thread glTF imports drop viewport performance. I’m actively working on it; this post is mainly to show progress, not a polished release.
Feedback, ideas, and testing are very welcome!
PS: used to work earlier on cesium js, lost account for a long time, and i don’t recall my credentials so created a new account.

