createVerticesFromHeightmap.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*global define*/
  2. define([
  3. '../Core/BoundingSphere',
  4. '../Core/Ellipsoid',
  5. '../Core/EllipsoidalOccluder',
  6. '../Core/HeightmapTessellator',
  7. '../Core/Rectangle',
  8. './createTaskProcessorWorker'
  9. ], function(
  10. BoundingSphere,
  11. Ellipsoid,
  12. EllipsoidalOccluder,
  13. HeightmapTessellator,
  14. Rectangle,
  15. createTaskProcessorWorker) {
  16. "use strict";
  17. function createVerticesFromHeightmap(parameters, transferableObjects) {
  18. var numberOfAttributes = 6;
  19. var arrayWidth = parameters.width;
  20. var arrayHeight = parameters.height;
  21. if (parameters.skirtHeight > 0.0) {
  22. arrayWidth += 2;
  23. arrayHeight += 2;
  24. }
  25. var vertices = new Float32Array(arrayWidth * arrayHeight * numberOfAttributes);
  26. transferableObjects.push(vertices.buffer);
  27. parameters.ellipsoid = Ellipsoid.clone(parameters.ellipsoid);
  28. parameters.rectangle = Rectangle.clone(parameters.rectangle);
  29. parameters.vertices = vertices;
  30. var statistics = HeightmapTessellator.computeVertices(parameters);
  31. var boundingSphere3D = BoundingSphere.fromVertices(vertices, parameters.relativeToCenter, numberOfAttributes);
  32. var ellipsoid = parameters.ellipsoid;
  33. var occluder = new EllipsoidalOccluder(ellipsoid);
  34. var occludeePointInScaledSpace = occluder.computeHorizonCullingPointFromVertices(parameters.relativeToCenter, vertices, numberOfAttributes, parameters.relativeToCenter);
  35. return {
  36. vertices : vertices.buffer,
  37. numberOfAttributes : numberOfAttributes,
  38. minimumHeight : statistics.minimumHeight,
  39. maximumHeight : statistics.maximumHeight,
  40. gridWidth : arrayWidth,
  41. gridHeight : arrayHeight,
  42. boundingSphere3D : boundingSphere3D,
  43. occludeePointInScaledSpace : occludeePointInScaledSpace
  44. };
  45. }
  46. return createTaskProcessorWorker(createVerticesFromHeightmap);
  47. });