代码之家  ›  专栏  ›  技术社区  ›  Glory to Russia

当我添加模型时,为什么铯查看器不显示模型?

  •  3
  • Glory to Russia  · 技术社区  · 9 年前

    我有一个应用程序,它显示一个城市的3D地图和“添加建筑”按钮。

    当用户按下该按钮时,必须将建筑模型插入地图中。

    但它没有-我在正确的位置看到了一个选择标记,但没有实际的建筑。

    方法1

    我使用以下代码添加建筑(参见文件 src\main\resources\static\js\myapp.js 源代码):

    function addBuilding() {
      var position = Cesium.Cartesian3.fromDegrees(132.159633, 43.350116, 0.);
      createModel('/models/CesiumAir/Cesium_Air.gltf', position);
    }
    
    function createModel(url, position) {
        var heading = Cesium.Math.toRadians(135);
        var pitch = 0;
        var roll = 0;
        var orientation = Cesium.Transforms.headingPitchRollQuaternion(
            position, heading, pitch, roll);
    
        var entity = viewer.entities.add({
            name : url,
            position : position,
            orientation : orientation,
            model : {
                uri : url,
                minimumPixelSize : 128
            }
        });
        console.log("entity.model = " + entity.model);
        viewer.selectedEntity = entity;
    }
    

    这没用,所以我尝试了另一种方法。

    方法2

    var scene = viewer.scene;
    var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
        Cesium.Cartesian3.fromDegrees(132.159633, 43.350116, 0.0));
    var primitive = Cesium.Model.fromGltf({
                          url : '/models/CesiumAir/Cesium_Air.gltf',
                          modelMatrix : modelMatrix,
                          minimumPixelSize : 128,
                          appearance : new Cesium.DebugAppearance({
                              attributeName : 'normal'
                            })
                      });
    scene.primitives.add(primitive);
    

    这也没用。

    如果我打开URL http://localhost:8080/models/CesiumAir/Cesium_Air.gltf 在浏览器中,我可以看到一些JSON输出,因此断开链接不是原因。

    如果你告诉我,我会很感激,我必须在我的程序中修改哪些内容,以使添加建筑有效。源代码和构建说明可用 here 。该应用程序使用AngularJS,可能Ceium和Angular以某种方式干扰。

    video 显示了如何再现此错误。

    更新1: 当我打开页面时,有时(但并非总是)会出现以下异常(当我启用在未捕获的异常上停止时):

    Error

    1 回复  |  直到 9 年前
        1
  •  3
  •   heenenee    9 年前

    在myapp中创建查看器时。js,更改 Cesium.SceneMode.COLUMBUS_VIEW Cesium.SceneMode.SCENE3D . Model rendering is currently not supported outside of 3D mode .