123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*global define*/
- define([
- '../Core/BoundingSphere',
- '../Core/Ellipsoid',
- '../Core/EllipsoidalOccluder',
- '../Core/HeightmapTessellator',
- '../Core/Rectangle',
- './createTaskProcessorWorker'
- ], function(
- BoundingSphere,
- Ellipsoid,
- EllipsoidalOccluder,
- HeightmapTessellator,
- Rectangle,
- createTaskProcessorWorker) {
- "use strict";
- function createVerticesFromHeightmap(parameters, transferableObjects) {
- var numberOfAttributes = 6;
- var arrayWidth = parameters.width;
- var arrayHeight = parameters.height;
- if (parameters.skirtHeight > 0.0) {
- arrayWidth += 2;
- arrayHeight += 2;
- }
- var vertices = new Float32Array(arrayWidth * arrayHeight * numberOfAttributes);
- transferableObjects.push(vertices.buffer);
- parameters.ellipsoid = Ellipsoid.clone(parameters.ellipsoid);
- parameters.rectangle = Rectangle.clone(parameters.rectangle);
- parameters.vertices = vertices;
- var statistics = HeightmapTessellator.computeVertices(parameters);
- var boundingSphere3D = BoundingSphere.fromVertices(vertices, parameters.relativeToCenter, numberOfAttributes);
- var ellipsoid = parameters.ellipsoid;
- var occluder = new EllipsoidalOccluder(ellipsoid);
- var occludeePointInScaledSpace = occluder.computeHorizonCullingPointFromVertices(parameters.relativeToCenter, vertices, numberOfAttributes, parameters.relativeToCenter);
- return {
- vertices : vertices.buffer,
- numberOfAttributes : numberOfAttributes,
- minimumHeight : statistics.minimumHeight,
- maximumHeight : statistics.maximumHeight,
- gridWidth : arrayWidth,
- gridHeight : arrayHeight,
- boundingSphere3D : boundingSphere3D,
- occludeePointInScaledSpace : occludeePointInScaledSpace
- };
- }
- return createTaskProcessorWorker(createVerticesFromHeightmap);
- });
|