addTree.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. ; (function (Cesium) {
  2. checkSkyScenery(Cesium);
  3. function addTree(jsonUrl, gltfUrl) {
  4. return new Promise((resolve, reject) => {
  5. $.getJSON(jsonUrl, function (obj) {
  6. let keyArr = Object.keys(obj);
  7. let objectArr = Object.values(obj);
  8. let primitiveArr = keyArr.map(function (key, index) {
  9. return loadBigDataGltf(objectArr[index].positions, key, gltfUrl);
  10. });
  11. resolve(primitiveArr);
  12. });
  13. });
  14. }
  15. // 加载大批量gltf文件
  16. function loadBigDataGltf(array, gltfName, gltfUrl) {
  17. let instances = [];
  18. for (let i = 0; i < array.length; i++) {
  19. let modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(
  20. Cesium.Cartesian3.fromRadians(array[i], array[i + 1], 5),
  21. new Cesium.HeadingPitchRoll(0, 0, 0)
  22. );
  23. Cesium.Matrix4.multiplyByUniformScale(modelMatrix, 1, modelMatrix); // 缩放
  24. instances.push({
  25. modelMatrix: modelMatrix,
  26. });
  27. }
  28. let primitive = new Cesium.ModelInstanceCollection({
  29. // url: "./static/gltf/" + gltfName + ".gltf",
  30. url: gltfUrl + gltfName + ".gltf",
  31. instances: instances,
  32. });
  33. return primitive
  34. // globalVariable.viewer.scene.primitives.add(primitive);
  35. }
  36. Cesium.addTree = addTree;
  37. }(SkyScenery))