Atlaslog / Field Notes / Services & tile access
Field note · Services & tile access
3D Tiles never appear although tileset.json returns 200
Quick answer
The promise resolves and nothing is thrown, yet the scene stays empty. The usual causes are a missing transform in tileset.json, an oversized geometricError, a camera aimed elsewhere, or missing CORS and MIME types for the binary tiles.
Symptom
- tileset.json returns 200 but no .b3dm or .pnts request ever follows.
- The root bounding sphere centre has a height tens of thousands of metres below the ellipsoid.
- tileset.json succeeds while every binary tile returns 404 or is blocked by CORS.
Checklist
- Check whether tileset.json is requested at all; if not, the loader code never ran or the promise was swallowed.
- Log Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center): a large negative height means the placement transform is missing.
- Lower maximumScreenSpaceError to 8 to force subdivision.
- Call await viewer.zoomTo(tileset) instead of computing a camera position by hand.
- Check CORS headers and MIME types for b3dm, pnts, i3dm, cmpt and glb.
- Check whether terrain covers the model, since terrain sits tens to hundreds of metres above the ellipsoid.
Fix
Add an explicit modelMatrix or a root transform in tileset.json, load with Cesium3DTileset.fromUrl(url, { maximumScreenSpaceError: 8 }), and serve the tile directory with application/octet-stream for b3dm, pnts and glb plus Access-Control-Allow-Origin.
Code
var tileset = await Cesium.Cesium3DTileset.fromUrl('/data/tileset.json');
viewer.scene.primitives.add(tileset);
var center = tileset.boundingSphere.center;
var carto = Cesium.Cartographic.fromCartesian(center);
console.log(
'经度', Cesium.Math.toDegrees(carto.longitude),
'纬度', Cesium.Math.toDegrees(carto.latitude),
'高度', carto.height
);var tileset = await Cesium.Cesium3DTileset.fromUrl(url, {
maximumScreenSpaceError: 8 // 越小越精细
});
Watch out
- Adding the tileset to viewer.entities instead of viewer.scene.primitives, since a Cesium3DTileset is a primitive.
- Tuning maximumScreenSpaceError before checking the bounding sphere; if the box sits inside the earth no subdivision setting helps.
English edition written for Atlaslog from the original Chinese field note. Code is unchanged and runs as-is.
Atlaslog (2026). 3D Tiles never appear although tileset.json returns 200. https://www.jingweizhi.com/en/cookbook/tileset-load-fail.html (accessed 2026-11-03).