Cesium 加载Cesium3DTileset(b3dm)

3 篇文章 0 订阅

  Cesium.Ion.defaultAccessToken= "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyMzc2ZWEzNS01MTUxLTQ4MDctYjA2OC00ZGNlNjVmZmY3MjAiLCJpZCI6MTExNjAsInNjb3BlcyI6WyJhc3IiLCJnYyJdLCJpYXQiOjE1NTgzMjg1MjV9.3F9fSAzbc4yZUOXvXpVhCQcgj49MVO4Cp0Oqrupj2b0";

    var viewer = new Cesium.Viewer('cesiumContainer');

 

    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;

        }

    }

});

 

viewer.scene.globe.depthTestAgainstTerrain = true;

 

// Set the initial camera view to look at Manhattan

var initialPosition = Cesium.Cartesian3.fromDegrees(-21.159436035156205,

        -41.426123046874864, 750);

var initialOrientation = new Cesium.HeadingPitchRoll.fromDegrees(21.27879878293835, -21.34390550872461, 0.0716951918898415);

viewer.scene.camera.setView({

    destination: initialPosition,

    orientation: initialOrientation,

    endTransform: Cesium.Matrix4.IDENTITY

});

 

    var tileset = new Cesium.Cesium3DTileset({ 

  

 

         url: "http://localhost:90/Json/tileset.json" ,

    }); 

 viewer.scene.primitives.add(tileset);

 tileset.readyPromise.then(function(tileset) {

    // Set the camera to view the newly added tileset

    viewer.camera.viewBoundingSphere(tileset.boundingSphere, new Cesium.HeadingPitchRange(0, -0.5, 0));

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值