| | |
| | | //兼容不同版本cesium,补充官方删除更改的方法或类名 by mars3d.cn |
| | | |
| | | //兼容1.73(2020-9-1)删除的方法 |
| | | Cesium.BingMapsApi = { defaultKey: "" } |
| | | Cesium.MapboxApi = { defaultAccessToken: "" } |
| | | Cesium.BingMapsApi = { defaultKey: "" }; |
| | | Cesium.MapboxApi = { defaultAccessToken: "" }; |
| | | |
| | | //兼容1.67(2020-3-3)删除的方法 |
| | | if (!Cesium.defineProperties) |
| | | Cesium.defineProperties = Object.defineProperties; |
| | | if (!Cesium.isArray) |
| | | Cesium.isArray = Array.isArray; |
| | | |
| | | if (!Cesium.defineProperties) Cesium.defineProperties = Object.defineProperties; |
| | | if (!Cesium.isArray) Cesium.isArray = Array.isArray; |
| | | |
| | | //兼容1.62(2019-10-01)改名的方法 |
| | | if (!Cesium.Matrix4.getMatrix3) |
| | | Cesium.Matrix4.getMatrix3 = Cesium.Matrix4.getRotation; |
| | | Cesium.Matrix4.getMatrix3 = Cesium.Matrix4.getRotation; |
| | | if (!Cesium.TileMapServiceImageryProvider) |
| | | Cesium.TileMapServiceImageryProvider = Cesium.createTileMapServiceImageryProvider; |
| | | Cesium.TileMapServiceImageryProvider = |
| | | Cesium.createTileMapServiceImageryProvider; |
| | | |
| | | if (!Cesium.createTileMapServiceImageryProvider) { |
| | | Cesium.createTileMapServiceImageryProvider = function (options) { |
| | | return new Cesium.TileMapServiceImageryProvider(options); |
| | | } |
| | | Cesium.createTileMapServiceImageryProvider = function (options) { |
| | | return new Cesium.TileMapServiceImageryProvider(options); |
| | | }; |
| | | } |
| | | |
| | | |
| | | //兼容1.50 (2018-10-01)版本更改了名称,造成部分3dtiles可能会出现加载不上导致渲染停止的错误。 |
| | | //错误说明为:RuntimeError: Unsupported glTF Extension: KHR_technique_webgl |
| | | //原因:KHR_technique_webgl扩展新版Cesium已经不支持的缘故,需要升级一下gltf数据,使用KHR_techniques_webgl扩展即可(注意多了一个s)。 |
| | | try { |
| | | // var fixGltf = function (gltf) { |
| | | // if (!gltf.extensionsUsed || !gltf.extensionsUsed.indexOf || !gltf.extensionsRequired) { |
| | | // return; |
| | | // } |
| | | |
| | | // var v = gltf.extensionsUsed.indexOf('KHR_technique_webgl'); |
| | | // if (v == -1) return; |
| | | |
| | | // // 中招了。。 |
| | | // var t = gltf.extensionsRequired.indexOf('KHR_technique_webgl'); |
| | | |
| | | // 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 || (gltf.materials[index].extensions = { KHR_technique_webgl: {} }); |
| | | // 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 myMaterialExtension = gltf.materials[index].extensions['KHR_techniques_webgl']; |
| | | // myMaterialExtension.technique || (myMaterialExtension.technique = gltf.materials[index].technique); |
| | | |
| | | // for (var value in myMaterialExtension.values) { |
| | | // var us = techniques[myMaterialExtension.technique].uniforms; |
| | | // for (var key in us) { |
| | | // if (us[key] === value) { |
| | | // myMaterialExtension.values[key] = myMaterialExtension.values[value]; |
| | | // delete myMaterialExtension.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._my_cachedGltf = value; |
| | | // if (this._my_cachedGltf && this._my_cachedGltf._gltf) { |
| | | // fixGltf(this._my_cachedGltf._gltf); |
| | | // } |
| | | // }, |
| | | // get: function () { |
| | | // return this._my_cachedGltf; |
| | | // } |
| | | // } |
| | | // }); |
| | | // var fixGltf = function (gltf) { |
| | | // if (!gltf.extensionsUsed || !gltf.extensionsUsed.indexOf || !gltf.extensionsRequired) { |
| | | // return; |
| | | // } |
| | | // var v = gltf.extensionsUsed.indexOf('KHR_technique_webgl'); |
| | | // if (v == -1) return; |
| | | // // 中招了。。 |
| | | // var t = gltf.extensionsRequired.indexOf('KHR_technique_webgl'); |
| | | // 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 || (gltf.materials[index].extensions = { KHR_technique_webgl: {} }); |
| | | // 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 myMaterialExtension = gltf.materials[index].extensions['KHR_techniques_webgl']; |
| | | // myMaterialExtension.technique || (myMaterialExtension.technique = gltf.materials[index].technique); |
| | | // for (var value in myMaterialExtension.values) { |
| | | // var us = techniques[myMaterialExtension.technique].uniforms; |
| | | // for (var key in us) { |
| | | // if (us[key] === value) { |
| | | // myMaterialExtension.values[key] = myMaterialExtension.values[value]; |
| | | // delete myMaterialExtension.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._my_cachedGltf = value; |
| | | // if (this._my_cachedGltf && this._my_cachedGltf._gltf) { |
| | | // fixGltf(this._my_cachedGltf._gltf); |
| | | // } |
| | | // }, |
| | | // get: function () { |
| | | // return this._my_cachedGltf; |
| | | // } |
| | | // } |
| | | // }); |
| | | } catch (e) { |
| | | console.log(e); |
| | | } |
| | | catch (e) { |
| | | console.log(e) |
| | | } |