2015-09-16 6 views
1

Я создаю файл CZML, у меня есть путь, по которому я хочу, чтобы мой объект следовал этому пути и перемещал его по местоположению (я определял позиции на основе временной эпохи.)с использованием 3D-моделей в CZML-файле для перемещения объекта

Он отлично работает с билбордом с изображением, но когда я меняю свой код на модель, например, одну из трехмерных моделей в sandcastle, вместо рекламного щита он не работает. Он даже не показывает модель. У меня просто есть ярлык, движущийся по пути, но никаких признаков модели.

В чем проблема? Я очень хочу использовать 3D-модель в CZML-файлах, а не в javaScript. Я буду рад, если кто-то сможет мне помочь.

я сохранил мои данные в .czml файл, а затем я буду загружать их в HTML с помощью JavaScript следующим образом:

viewer.dataSources.add(Cesium.CzmlDataSource.load('../../SampleData/fstsp_solution.czml')); 

и копию моего файла czml является:

[ 
    { 
    "id":"document", 
    "version":"1.0" 
    }, 
    { 
    "id":"Vehicle", 
    "availability":"2012-08-04T16:00:00Z/2012-08-04T17:04:54.9962195740191Z", 
    "model":{ 
    "show":true, 
     "gltf":"../../SampleData/models/CesiumMilkTruck/CesiumMilkTruck.bgltf", 
     "scale":2, 
     "minimumPixelSize":25 
    }, 
    "oriantation":{ 
     "interpolationAlgorithm":"LAGRANGE", 
     "interpolationDegree":1, 
     "epoch":"2012-08-04T16:00:00Z", 
     "unitQuaternion":[some numbers, I am working on it] 
    }, 
    "position":{ 
     "interpolationAlgorithm":"LAGRANGE", 
     "interpolationDegree":1, 
     "epoch":"2012-08-04T16:00:00Z", 
     "cartographicDegrees":[time,long,lat,height,time,long,lat,height,time,long,lat,height] 
    } 
    } 
] 

Спасибо

+0

Можете ли вы обновить вопрос, чтобы указать, как вы определяете модель в CZML? –

ответ

0

Я нашел проблему, я не дал ему правильное место, чтобы найти модель на моем компьютере, когда я использую мой локальный хост, я на самом деле должен дать ему полный адрес сформировать свой Localhost или цезий адрес, поэтому я должен ввести его как "gltf":"../../Apps/SampleData/models/CesiumMilkTruck/CesiumMilkTruck.bgltf", , а не просто дать ему адрес "../../SampleData/models/CesiumMilkTruck/CesiumMilkTruck.bgltf", так что он работает сейчас, спасибо всем, кто помог!

1

Есть странность, когда ModelGraphics вызывает параметр uri, но загрузчик CzmlDataSource ищет это свойство по имени gltf в th e CZML-файл. Не уверен, что это/было намеренно. В любом случае, если вы используете правильное имя, вы можете заставить модель отображаться в файле CZML. В моем примере ниже отсутствует правильная ориентация модели, но показывается, что модель загружена.

Попробуйте загрузить Sandcastle и вставьте в редактор кода следующее: затем нажмите Run (F8).

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

var builtInCzml = [{ 
    "id" : "document", 
    "version" : "1.0", 
    "clock" : { 
     "interval" : "2012-08-04T16:00:00Z/2012-08-04T16:02:00Z", 
     "currentTime" : "2012-08-04T16:00:00Z", 
     "multiplier" : 1, 
     "range" : "LOOP_STOP", 
     "step" : "SYSTEM_CLOCK_MULTIPLIER" 
    } 
}, { 
    "id" : "Vehicle", 
    "availability" : "2012-08-04T16:00:00Z/2012-08-04T16:02:00Z", 
    "model" : { 
     "show" : true, 
     "gltf" : "../../SampleData/models/CesiumGround/Cesium_Ground.bgltf" 
    }, 
    "billboard" : { 
     "eyeOffset" : { 
      "cartesian" : [0.0, 0.0, 0.0] 
     }, 
     "horizontalOrigin" : "CENTER", 
     "image" : "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEISURBVEhLvVXBDYQwDOuojHKj8LhBbpTbpBCEkZsmIVTXq1RVQGrHiWlLmTTqPiZBlyLgy/KSZQ5JSHDQ/mCYCsC8106kDU0AdwRnvYZArWRcAl0dcYJq1hWCb3hBrumbDAVMwAC82WoRvgMnVMDBnB0nYZFTbE6BBvdUGqVqCbjBIk3PyFFR/NU7EKzru+qZsau3ryPwwCRLKYOzutZuCL6fUmWeJGzNzL/RxAMrUmASSCkkAayk2IxPlwhAAYGpsiHQjbLccfdOY5gKkCXAMi7SscAwbQpAnKyctWyUZ6z8ja3OGMepwD8asz+9FnSvbhU8uVOHFIwQsI3/p0CfhuqCSQuxLqsN6mu8SS+N42MAAAAASUVORK5CYII=", 
     "pixelOffset" : { 
      "cartesian2" : [0.0, 0.0] 
     }, 
     "scale" : 0.8, 
     "show" : true, 
     "verticalOrigin" : "BOTTOM" 
    }, 
    "label" : { 
     "fillColor" : { 
      "rgba" : [255, 255, 0, 255] 
     }, 
     "font" : "bold 10pt Segoe UI Semibold", 
     "horizontalOrigin" : "LEFT", 
     "outlineColor" : { 
      "rgba" : [0, 0, 0, 255] 
     }, 
     "pixelOffset" : { 
      "cartesian2" : [10.0, 0.0] 
     }, 
     "scale" : 1.0, 
     "show" : true, 
     "style" : "FILL", 
     "text" : "Vehicle", 
     "verticalOrigin" : "CENTER" 
    }, 
    "path" : { 
     "material" : { 
      "solidColor" : { 
       "color" : { 
        "rgba" : [255, 255, 0, 255] 
       } 
      } 
     }, 
     "width" : 5.0, 
     "show" : true 
    }, 
    "position" : { 
     "interpolationAlgorithm" : "LAGRANGE", 
     "interpolationDegree" : 1, 
     "epoch" : "2012-08-04T16:00:00Z", 
     "cartesian" : [0.0, 1254962.0093268978, -4732330.528380746, 4074172.505865612, 
         120.0, 1256995.7322857284, -4732095.2154790815, 4073821.2249589274] 
    } 
}]; 

var czmlDataSource = new Cesium.CzmlDataSource(); 
czmlDataSource.load(builtInCzml, 'Sample CZML with 3D model'); 
viewer.dataSources.add(czmlDataSource); 
viewer.trackedEntity = czmlDataSource.entities.getById('Vehicle'); 
+0

Спасибо, я думаю, проблема в том, что у меня есть .czml-файл, и я хочу загрузить этот файл в свой код Java-скрипта, но gltf не может быть загружен, для двухмерных изображений я мог бы легко преобразовать изображение в uri и использовали их uri, но когда я даю ему адрес в «gltf» в czml-файле и пытаюсь загрузить с помощью команды: 'viewer.dataSources.add (Cesium.CzmlDataSource.load ('../../ SampleData/mycode. czml ')); эти модели не могут быть загружены – azar