Have you loaded 3GB 3dtiles in cesium? Chrome crashed

I have osgb files for a city, and converted to 3dtiles with a tool: https://github.com/fanvanzh/3dtiles .

When I load it in cesium, I can see Chrome loads some tiles and soon crashed, is it too big for memory?

I use this in an offline environment, so IO is not a choice.

I used these codes to fix a KHR_technique_webgl issue, is that the problem?

var fixGltf = function(gltf) {

if (!gltf.extensionsUsed) {

return;

}

var v = gltf.extensionsUsed.indexOf(“KHR_technique_webgl”);

var t = gltf.extensionsRequired.indexOf(“KHR_technique_webgl”);

// 中招了。。

if (v !== -1) {

gltf.extensionsRequired.splice(t, 1, “KHR_techniques_webgl”);

gltf.extensionsUsed.splice(v, 1, “KHR_techniques_webgl”);

gltf.extensions = gltf.extensions || {};

gltf.extensions[“KHR_techniques_webgl”] = {};

gltf.extensions[“KHR_techniques_webgl”].programs = gltf.programs;

gltf.extensions[“KHR_techniques_webgl”].shaders = gltf.shaders;

gltf.extensions[“KHR_techniques_webgl”].techniques = gltf.techniques;

var techniques = gltf.extensions[“KHR_techniques_webgl”].techniques;

gltf.materials.forEach(function(mat, index) {

gltf.materials[index].extensions[“KHR_technique_webgl”].values =

gltf.materials[index].values;

gltf.materials[index].extensions[“KHR_techniques_webgl”] =

gltf.materials[index].extensions[“KHR_technique_webgl”];

var vtxfMaterialExtension =

gltf.materials[index].extensions[“KHR_techniques_webgl”];

for (var value in vtxfMaterialExtension.values) {

var us = techniques[vtxfMaterialExtension.technique].uniforms;

for (var key in us) {

if (us[key] === value) {

vtxfMaterialExtension.values[key] =

vtxfMaterialExtension.values[value];

delete vtxfMaterialExtension.values[value];

break;

}

}

}

});

techniques.forEach(function(t) {

for (var attribute in t.attributes) {

var name = t.attributes[attribute];

t.attributes[attribute] = t.parameters[name];

}

for (var uniform in t.uniforms) {

var name = t.uniforms[uniform];

t.uniforms[uniform] = t.parameters[name];

}

});

}

};

Object.defineProperties(Cesium.Model.prototype, {

_cachedGltf: {

set: function(value) {

this._vtxf_cachedGltf = value;

if (this._vtxf_cachedGltf && this._vtxf_cachedGltf._gltf) {

fixGltf(this._vtxf_cachedGltf._gltf);

}

},

get: function() {

return this._vtxf_cachedGltf;

}

}

});

When I reduce the 3dtiles data, cesium worked well

在 2019年1月4日星期五 UTC+8下午4:48:34,Yang写道:

I’ve seen tilesets much larger than that load fine, since lower levels of detail and only loading what’s in view ensure there’s never too much loaded at any given time.

I know you said you need this for an offline environment, but just to confirm my suspicion, can you try tiling it with Cesium ion (https://cesium.com/ion/) and see if that tileset works fine? If it does, there are offline versions of ion’s tools (https://cesium.com/docs/on-prem/). If it doesn’t, then it’s definitely an issue on our end and something we can look into and fix.

You might also try to increase the amount of memory for chrome.

Scott