@loaders.gl/terrain 4.0.0-alpha.4 → 4.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/dist/bundle.d.ts +2 -0
  2. package/dist/bundle.d.ts.map +1 -0
  3. package/dist/bundle.js +2 -2
  4. package/dist/dist.min.js +1175 -0
  5. package/dist/es5/bundle.js +6 -0
  6. package/dist/es5/bundle.js.map +1 -0
  7. package/dist/es5/index.js +87 -0
  8. package/dist/es5/index.js.map +1 -0
  9. package/dist/es5/lib/decode-quantized-mesh.js +250 -0
  10. package/dist/es5/lib/decode-quantized-mesh.js.map +1 -0
  11. package/dist/es5/lib/delatin/index.js +408 -0
  12. package/dist/es5/lib/delatin/index.js.map +1 -0
  13. package/dist/es5/lib/helpers/skirt.js +105 -0
  14. package/dist/es5/lib/helpers/skirt.js.map +1 -0
  15. package/dist/es5/lib/parse-quantized-mesh.js +95 -0
  16. package/dist/es5/lib/parse-quantized-mesh.js.map +1 -0
  17. package/dist/es5/lib/parse-terrain.js +152 -0
  18. package/dist/es5/lib/parse-terrain.js.map +1 -0
  19. package/dist/es5/lib/utils/version.js +9 -0
  20. package/dist/es5/lib/utils/version.js.map +1 -0
  21. package/dist/es5/quantized-mesh-loader.js +24 -0
  22. package/dist/es5/quantized-mesh-loader.js.map +1 -0
  23. package/dist/es5/terrain-loader.js +32 -0
  24. package/dist/es5/terrain-loader.js.map +1 -0
  25. package/dist/es5/workers/quantized-mesh-worker.js +6 -0
  26. package/dist/es5/workers/quantized-mesh-worker.js.map +1 -0
  27. package/dist/es5/workers/terrain-worker.js +6 -0
  28. package/dist/es5/workers/terrain-worker.js.map +1 -0
  29. package/dist/esm/bundle.js +4 -0
  30. package/dist/esm/bundle.js.map +1 -0
  31. package/dist/esm/index.js +32 -0
  32. package/dist/esm/index.js.map +1 -0
  33. package/{src → dist/esm}/lib/decode-quantized-mesh.js +76 -165
  34. package/dist/esm/lib/decode-quantized-mesh.js.map +1 -0
  35. package/dist/esm/lib/delatin/index.js +355 -0
  36. package/dist/esm/lib/delatin/index.js.map +1 -0
  37. package/dist/esm/lib/helpers/skirt.js +89 -0
  38. package/dist/esm/lib/helpers/skirt.js.map +1 -0
  39. package/dist/esm/lib/parse-quantized-mesh.js +85 -0
  40. package/dist/esm/lib/parse-quantized-mesh.js.map +1 -0
  41. package/{src → dist/esm}/lib/parse-terrain.js +101 -129
  42. package/dist/esm/lib/parse-terrain.js.map +1 -0
  43. package/dist/esm/lib/utils/version.js +2 -0
  44. package/dist/esm/lib/utils/version.js.map +1 -0
  45. package/dist/esm/quantized-mesh-loader.js +17 -0
  46. package/dist/esm/quantized-mesh-loader.js.map +1 -0
  47. package/dist/esm/terrain-loader.js +25 -0
  48. package/dist/esm/terrain-loader.js.map +1 -0
  49. package/dist/esm/workers/quantized-mesh-worker.js +4 -0
  50. package/dist/esm/workers/quantized-mesh-worker.js.map +1 -0
  51. package/dist/esm/workers/terrain-worker.js +4 -0
  52. package/dist/esm/workers/terrain-worker.js.map +1 -0
  53. package/dist/index.d.ts +35 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +31 -14
  56. package/dist/lib/decode-quantized-mesh.d.ts +59 -0
  57. package/dist/lib/decode-quantized-mesh.d.ts.map +1 -0
  58. package/dist/lib/decode-quantized-mesh.js +200 -241
  59. package/dist/lib/delatin/index.d.ts +24 -0
  60. package/dist/lib/delatin/index.d.ts.map +1 -0
  61. package/dist/lib/delatin/index.js +397 -443
  62. package/dist/lib/helpers/skirt.d.ts +19 -0
  63. package/dist/lib/helpers/skirt.d.ts.map +1 -0
  64. package/dist/lib/helpers/skirt.js +119 -91
  65. package/dist/lib/parse-quantized-mesh.d.ts +7 -0
  66. package/dist/lib/parse-quantized-mesh.d.ts.map +1 -0
  67. package/dist/lib/parse-quantized-mesh.js +94 -93
  68. package/dist/lib/parse-terrain.d.ts +51 -0
  69. package/dist/lib/parse-terrain.d.ts.map +1 -0
  70. package/dist/lib/parse-terrain.js +146 -172
  71. package/dist/lib/utils/version.d.ts +2 -0
  72. package/dist/lib/utils/version.d.ts.map +1 -0
  73. package/dist/lib/utils/version.js +7 -2
  74. package/dist/quantized-mesh-loader.d.ts +12 -0
  75. package/dist/quantized-mesh-loader.d.ts.map +1 -0
  76. package/dist/quantized-mesh-loader.js +20 -16
  77. package/dist/quantized-mesh-worker.js +148 -119
  78. package/dist/terrain-loader.d.ts +12 -0
  79. package/dist/terrain-loader.d.ts.map +1 -0
  80. package/dist/terrain-loader.js +28 -24
  81. package/dist/terrain-worker.js +148 -119
  82. package/dist/workers/quantized-mesh-worker.d.ts +2 -0
  83. package/dist/workers/quantized-mesh-worker.d.ts.map +1 -0
  84. package/dist/workers/quantized-mesh-worker.js +5 -4
  85. package/dist/workers/terrain-worker.d.ts +2 -0
  86. package/dist/workers/terrain-worker.d.ts.map +1 -0
  87. package/dist/workers/terrain-worker.js +5 -4
  88. package/package.json +11 -10
  89. package/src/index.ts +29 -13
  90. package/src/lib/helpers/skirt.ts +7 -7
  91. package/src/lib/parse-quantized-mesh.ts +47 -43
  92. package/src/lib/parse-terrain.ts +84 -89
  93. package/src/quantized-mesh-loader.ts +9 -4
  94. package/src/terrain-loader.ts +14 -11
  95. package/dist/bundle.js.map +0 -1
  96. package/dist/index.js.map +0 -1
  97. package/dist/lib/decode-quantized-mesh.js.map +0 -1
  98. package/dist/lib/delatin/index.js.map +0 -1
  99. package/dist/lib/helpers/skirt.js.map +0 -1
  100. package/dist/lib/parse-quantized-mesh.js.map +0 -1
  101. package/dist/lib/parse-terrain.js.map +0 -1
  102. package/dist/lib/utils/version.js.map +0 -1
  103. package/dist/quantized-mesh-loader.js.map +0 -1
  104. package/dist/terrain-loader.js.map +0 -1
  105. package/dist/workers/quantized-mesh-worker.js.map +0 -1
  106. package/dist/workers/terrain-worker.js.map +0 -1
  107. package/src/lib/helpers/skirt.js +0 -161
  108. package/src/lib/parse-quantized-mesh.js +0 -98
  109. package/src/workers/quantized-mesh-worker.js +0 -4
  110. package/src/workers/terrain-worker.js +0 -4
  111. /package/src/lib/delatin/{index.js → index.ts} +0 -0
  112. /package/src/lib/utils/{version.js → version.ts} +0 -0
@@ -1,86 +1,18 @@
1
- import {getMeshBoundingBox} from '@loaders.gl/schema';
1
+ import { getMeshBoundingBox } from '@loaders.gl/schema';
2
2
  import Martini from '@mapbox/martini';
3
3
  import Delatin from './delatin';
4
- import {addSkirt} from './helpers/skirt';
5
-
6
- function getTerrain(imageData, width, height, elevationDecoder, tesselator) {
7
- const {rScaler, bScaler, gScaler, offset} = elevationDecoder;
8
-
9
- // From Martini demo
10
- // https://observablehq.com/@mourner/martin-real-time-rtin-terrain-mesh
11
- const terrain = new Float32Array((width + 1) * (height + 1));
12
- // decode terrain values
13
- for (let i = 0, y = 0; y < height; y++) {
14
- for (let x = 0; x < width; x++, i++) {
15
- const k = i * 4;
16
- const r = imageData[k + 0];
17
- const g = imageData[k + 1];
18
- const b = imageData[k + 2];
19
- terrain[i + y] = r * rScaler + g * gScaler + b * bScaler + offset;
20
- }
21
- }
22
-
23
- if (tesselator === 'martini') {
24
- // backfill bottom border
25
- for (let i = (width + 1) * width, x = 0; x < width; x++, i++) {
26
- terrain[i] = terrain[i - width - 1];
27
- }
28
- // backfill right border
29
- for (let i = height, y = 0; y < height + 1; y++, i += height + 1) {
30
- terrain[i] = terrain[i - 1];
31
- }
32
- }
33
-
34
- return terrain;
35
- }
36
-
37
- function getMeshAttributes(vertices, terrain, width, height, bounds) {
38
- const gridSize = width + 1;
39
- const numOfVerticies = vertices.length / 2;
40
- // vec3. x, y in pixels, z in meters
41
- const positions = new Float32Array(numOfVerticies * 3);
42
- // vec2. 1 to 1 relationship with position. represents the uv on the texture image. 0,0 to 1,1.
43
- const texCoords = new Float32Array(numOfVerticies * 2);
44
-
45
- const [minX, minY, maxX, maxY] = bounds || [0, 0, width, height];
46
- const xScale = (maxX - minX) / width;
47
- const yScale = (maxY - minY) / height;
48
-
49
- for (let i = 0; i < numOfVerticies; i++) {
50
- const x = vertices[i * 2];
51
- const y = vertices[i * 2 + 1];
52
- const pixelIdx = y * gridSize + x;
53
-
54
- positions[3 * i + 0] = x * xScale + minX;
55
- positions[3 * i + 1] = -y * yScale + maxY;
56
- positions[3 * i + 2] = terrain[pixelIdx];
57
-
58
- texCoords[2 * i + 0] = x / width;
59
- texCoords[2 * i + 1] = y / height;
60
- }
61
-
62
- return {
63
- POSITION: {value: positions, size: 3},
64
- TEXCOORD_0: {value: texCoords, size: 2}
65
- // NORMAL: {}, - optional, but creates the high poly look with lighting
66
- };
67
- }
68
-
69
- /**
70
- * Returns generated mesh object from image data
71
- *
72
- * @param {object} terrainImage terrain image data
73
- * @param {object} terrainOptions terrain options
74
- * @returns mesh object
75
- */
76
- function getMesh(terrainImage, terrainOptions) {
77
- if (terrainImage === null) {
78
- return null;
79
- }
80
- const {meshMaxError, bounds, elevationDecoder} = terrainOptions;
81
-
82
- const {data, width, height} = terrainImage;
83
-
4
+ import { addSkirt } from './helpers/skirt';
5
+ export function makeTerrainMeshFromImage(terrainImage, terrainOptions) {
6
+ const {
7
+ meshMaxError,
8
+ bounds,
9
+ elevationDecoder
10
+ } = terrainOptions;
11
+ const {
12
+ data,
13
+ width,
14
+ height
15
+ } = terrainImage;
84
16
  let terrain;
85
17
  let mesh;
86
18
  switch (terrainOptions.tesselator) {
@@ -92,9 +24,8 @@ function getMesh(terrainImage, terrainOptions) {
92
24
  terrain = getTerrain(data, width, height, elevationDecoder, terrainOptions.tesselator);
93
25
  mesh = getDelatinTileMesh(meshMaxError, width, height, terrain);
94
26
  break;
95
- // auto
96
27
  default:
97
- if (width === height && !(height & (width - 1))) {
28
+ if (width === height && !(height & width - 1)) {
98
29
  terrain = getTerrain(data, width, height, elevationDecoder, 'martini');
99
30
  mesh = getMartiniTileMesh(meshMaxError, width, terrain);
100
31
  } else {
@@ -103,26 +34,23 @@ function getMesh(terrainImage, terrainOptions) {
103
34
  }
104
35
  break;
105
36
  }
106
-
107
- const {vertices} = mesh;
108
- let {triangles} = mesh;
37
+ const {
38
+ vertices
39
+ } = mesh;
40
+ let {
41
+ triangles
42
+ } = mesh;
109
43
  let attributes = getMeshAttributes(vertices, terrain, width, height, bounds);
110
-
111
- // Compute bounding box before adding skirt so that z values are not skewed
112
44
  const boundingBox = getMeshBoundingBox(attributes);
113
-
114
45
  if (terrainOptions.skirtHeight) {
115
- const {attributes: newAttributes, triangles: newTriangles} = addSkirt(
116
- attributes,
117
- triangles,
118
- terrainOptions.skirtHeight
119
- );
46
+ const {
47
+ attributes: newAttributes,
48
+ triangles: newTriangles
49
+ } = addSkirt(attributes, triangles, terrainOptions.skirtHeight);
120
50
  attributes = newAttributes;
121
51
  triangles = newTriangles;
122
52
  }
123
-
124
53
  return {
125
- // Data return by this loader implementation
126
54
  loaderData: {
127
55
  header: {}
128
56
  },
@@ -130,50 +58,94 @@ function getMesh(terrainImage, terrainOptions) {
130
58
  vertexCount: triangles.length,
131
59
  boundingBox
132
60
  },
133
- mode: 4, // TRIANGLES
134
- indices: {value: Uint32Array.from(triangles), size: 1},
61
+ mode: 4,
62
+ indices: {
63
+ value: Uint32Array.from(triangles),
64
+ size: 1
65
+ },
135
66
  attributes
136
67
  };
137
68
  }
138
-
139
- /**
140
- * Get Martini generated vertices and triangles
141
- *
142
- * @param {number} meshMaxError threshold for simplifying mesh
143
- * @param {number} width width of the input data
144
- * @param {number[] | Float32Array} terrain elevation data
145
- * @returns {{vertices: Uint16Array, triangles: Uint32Array}} vertices and triangles data
146
- */
147
69
  function getMartiniTileMesh(meshMaxError, width, terrain) {
148
70
  const gridSize = width + 1;
149
71
  const martini = new Martini(gridSize);
150
72
  const tile = martini.createTile(terrain);
151
- const {vertices, triangles} = tile.getMesh(meshMaxError);
152
-
153
- return {vertices, triangles};
73
+ const {
74
+ vertices,
75
+ triangles
76
+ } = tile.getMesh(meshMaxError);
77
+ return {
78
+ vertices,
79
+ triangles
80
+ };
154
81
  }
155
-
156
- /**
157
- * Get Delatin generated vertices and triangles
158
- *
159
- * @param {number} meshMaxError threshold for simplifying mesh
160
- * @param {number} width width of the input data array
161
- * @param {number} height height of the input data array
162
- * @param {number[] | Float32Array} terrain elevation data
163
- * @returns {{vertices: number[], triangles: number[]}} vertices and triangles data
164
- */
165
82
  function getDelatinTileMesh(meshMaxError, width, height, terrain) {
166
83
  const tin = new Delatin(terrain, width + 1, height + 1);
167
84
  tin.run(meshMaxError);
168
- const {coords, triangles} = tin;
85
+ const {
86
+ coords,
87
+ triangles
88
+ } = tin;
169
89
  const vertices = coords;
170
- return {vertices, triangles};
90
+ return {
91
+ vertices,
92
+ triangles
93
+ };
94
+ }
95
+ function getTerrain(imageData, width, height, elevationDecoder, tesselator) {
96
+ const {
97
+ rScaler,
98
+ bScaler,
99
+ gScaler,
100
+ offset
101
+ } = elevationDecoder;
102
+ const terrain = new Float32Array((width + 1) * (height + 1));
103
+ for (let i = 0, y = 0; y < height; y++) {
104
+ for (let x = 0; x < width; x++, i++) {
105
+ const k = i * 4;
106
+ const r = imageData[k + 0];
107
+ const g = imageData[k + 1];
108
+ const b = imageData[k + 2];
109
+ terrain[i + y] = r * rScaler + g * gScaler + b * bScaler + offset;
110
+ }
111
+ }
112
+ if (tesselator === 'martini') {
113
+ for (let i = (width + 1) * width, x = 0; x < width; x++, i++) {
114
+ terrain[i] = terrain[i - width - 1];
115
+ }
116
+ for (let i = height, y = 0; y < height + 1; y++, i += height + 1) {
117
+ terrain[i] = terrain[i - 1];
118
+ }
119
+ }
120
+ return terrain;
171
121
  }
172
-
173
- export default async function loadTerrain(arrayBuffer, options, context) {
174
- options.image = options.image || {};
175
- options.image.type = 'data';
176
- const image = await context.parse(arrayBuffer, options, options.baseUri);
177
- // Extend function to support additional mesh generation options (square grid or delatin)
178
- return getMesh(image, options.terrain);
122
+ function getMeshAttributes(vertices, terrain, width, height, bounds) {
123
+ const gridSize = width + 1;
124
+ const numOfVerticies = vertices.length / 2;
125
+ const positions = new Float32Array(numOfVerticies * 3);
126
+ const texCoords = new Float32Array(numOfVerticies * 2);
127
+ const [minX, minY, maxX, maxY] = bounds || [0, 0, width, height];
128
+ const xScale = (maxX - minX) / width;
129
+ const yScale = (maxY - minY) / height;
130
+ for (let i = 0; i < numOfVerticies; i++) {
131
+ const x = vertices[i * 2];
132
+ const y = vertices[i * 2 + 1];
133
+ const pixelIdx = y * gridSize + x;
134
+ positions[3 * i + 0] = x * xScale + minX;
135
+ positions[3 * i + 1] = -y * yScale + maxY;
136
+ positions[3 * i + 2] = terrain[pixelIdx];
137
+ texCoords[2 * i + 0] = x / width;
138
+ texCoords[2 * i + 1] = y / height;
139
+ }
140
+ return {
141
+ POSITION: {
142
+ value: positions,
143
+ size: 3
144
+ },
145
+ TEXCOORD_0: {
146
+ value: texCoords,
147
+ size: 2
148
+ }
149
+ };
179
150
  }
151
+ //# sourceMappingURL=parse-terrain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-terrain.js","names":["getMeshBoundingBox","Martini","Delatin","addSkirt","makeTerrainMeshFromImage","terrainImage","terrainOptions","meshMaxError","bounds","elevationDecoder","data","width","height","terrain","mesh","tesselator","getTerrain","getMartiniTileMesh","getDelatinTileMesh","vertices","triangles","attributes","getMeshAttributes","boundingBox","skirtHeight","newAttributes","newTriangles","loaderData","header","vertexCount","length","mode","indices","value","Uint32Array","from","size","gridSize","martini","tile","createTile","getMesh","tin","run","coords","imageData","rScaler","bScaler","gScaler","offset","Float32Array","i","y","x","k","r","g","b","numOfVerticies","positions","texCoords","minX","minY","maxX","maxY","xScale","yScale","pixelIdx","POSITION","TEXCOORD_0"],"sources":["../../../src/lib/parse-terrain.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {getMeshBoundingBox} from '@loaders.gl/schema';\nimport Martini from '@mapbox/martini';\nimport Delatin from './delatin';\nimport {addSkirt} from './helpers/skirt';\n\nexport type TerrainOptions = {\n meshMaxError: number;\n bounds: number[];\n elevationDecoder: ElevationDecoder;\n tesselator: 'martini' | 'delatin' | 'auto';\n skirtHeight?: number;\n};\n\ntype TerrainImage = {\n data: Uint8Array;\n width: number;\n height: number;\n};\n\ntype ElevationDecoder = {\n rScaler: any;\n bScaler: any;\n gScaler: any;\n offset: number;\n};\n\n/**\n * Returns generated mesh object from image data\n *\n * @param terrainImage terrain image data\n * @param terrainOptions terrain options\n * @returns mesh object\n */\nexport function makeTerrainMeshFromImage(\n terrainImage: TerrainImage,\n terrainOptions: TerrainOptions\n) {\n const {meshMaxError, bounds, elevationDecoder} = terrainOptions;\n\n const {data, width, height} = terrainImage;\n\n let terrain;\n let mesh;\n switch (terrainOptions.tesselator) {\n case 'martini':\n terrain = getTerrain(data, width, height, elevationDecoder, terrainOptions.tesselator);\n mesh = getMartiniTileMesh(meshMaxError, width, terrain);\n break;\n case 'delatin':\n terrain = getTerrain(data, width, height, elevationDecoder, terrainOptions.tesselator);\n mesh = getDelatinTileMesh(meshMaxError, width, height, terrain);\n break;\n // auto\n default:\n if (width === height && !(height & (width - 1))) {\n terrain = getTerrain(data, width, height, elevationDecoder, 'martini');\n mesh = getMartiniTileMesh(meshMaxError, width, terrain);\n } else {\n terrain = getTerrain(data, width, height, elevationDecoder, 'delatin');\n mesh = getDelatinTileMesh(meshMaxError, width, height, terrain);\n }\n break;\n }\n\n const {vertices} = mesh;\n let {triangles} = mesh;\n let attributes = getMeshAttributes(vertices, terrain, width, height, bounds);\n\n // Compute bounding box before adding skirt so that z values are not skewed\n const boundingBox = getMeshBoundingBox(attributes);\n\n if (terrainOptions.skirtHeight) {\n const {attributes: newAttributes, triangles: newTriangles} = addSkirt(\n attributes,\n triangles,\n terrainOptions.skirtHeight\n );\n attributes = newAttributes;\n triangles = newTriangles;\n }\n\n return {\n // Data return by this loader implementation\n loaderData: {\n header: {}\n },\n header: {\n vertexCount: triangles.length,\n boundingBox\n },\n mode: 4, // TRIANGLES\n indices: {value: Uint32Array.from(triangles), size: 1},\n attributes\n };\n}\n\n/**\n * Get Martini generated vertices and triangles\n *\n * @param {number} meshMaxError threshold for simplifying mesh\n * @param {number} width width of the input data\n * @param {number[] | Float32Array} terrain elevation data\n * @returns {{vertices: Uint16Array, triangles: Uint32Array}} vertices and triangles data\n */\nfunction getMartiniTileMesh(meshMaxError, width, terrain) {\n const gridSize = width + 1;\n const martini = new Martini(gridSize);\n const tile = martini.createTile(terrain);\n const {vertices, triangles} = tile.getMesh(meshMaxError);\n\n return {vertices, triangles};\n}\n\n/**\n * Get Delatin generated vertices and triangles\n *\n * @param {number} meshMaxError threshold for simplifying mesh\n * @param {number} width width of the input data array\n * @param {number} height height of the input data array\n * @param {number[] | Float32Array} terrain elevation data\n * @returns {{vertices: number[], triangles: number[]}} vertices and triangles data\n */\nfunction getDelatinTileMesh(meshMaxError, width, height, terrain) {\n const tin = new Delatin(terrain, width + 1, height + 1);\n tin.run(meshMaxError);\n // @ts-expect-error\n const {coords, triangles} = tin;\n const vertices = coords;\n return {vertices, triangles};\n}\n\nfunction getTerrain(\n imageData: Uint8Array,\n width: number,\n height: number,\n elevationDecoder: ElevationDecoder,\n tesselator: 'martini' | 'delatin'\n) {\n const {rScaler, bScaler, gScaler, offset} = elevationDecoder;\n\n // From Martini demo\n // https://observablehq.com/@mourner/martin-real-time-rtin-terrain-mesh\n const terrain = new Float32Array((width + 1) * (height + 1));\n // decode terrain values\n for (let i = 0, y = 0; y < height; y++) {\n for (let x = 0; x < width; x++, i++) {\n const k = i * 4;\n const r = imageData[k + 0];\n const g = imageData[k + 1];\n const b = imageData[k + 2];\n terrain[i + y] = r * rScaler + g * gScaler + b * bScaler + offset;\n }\n }\n\n if (tesselator === 'martini') {\n // backfill bottom border\n for (let i = (width + 1) * width, x = 0; x < width; x++, i++) {\n terrain[i] = terrain[i - width - 1];\n }\n // backfill right border\n for (let i = height, y = 0; y < height + 1; y++, i += height + 1) {\n terrain[i] = terrain[i - 1];\n }\n }\n\n return terrain;\n}\n\nfunction getMeshAttributes(\n vertices,\n terrain: Uint8Array,\n width: number,\n height: number,\n bounds: number[]\n) {\n const gridSize = width + 1;\n const numOfVerticies = vertices.length / 2;\n // vec3. x, y in pixels, z in meters\n const positions = new Float32Array(numOfVerticies * 3);\n // vec2. 1 to 1 relationship with position. represents the uv on the texture image. 0,0 to 1,1.\n const texCoords = new Float32Array(numOfVerticies * 2);\n\n const [minX, minY, maxX, maxY] = bounds || [0, 0, width, height];\n const xScale = (maxX - minX) / width;\n const yScale = (maxY - minY) / height;\n\n for (let i = 0; i < numOfVerticies; i++) {\n const x = vertices[i * 2];\n const y = vertices[i * 2 + 1];\n const pixelIdx = y * gridSize + x;\n\n positions[3 * i + 0] = x * xScale + minX;\n positions[3 * i + 1] = -y * yScale + maxY;\n positions[3 * i + 2] = terrain[pixelIdx];\n\n texCoords[2 * i + 0] = x / width;\n texCoords[2 * i + 1] = y / height;\n }\n\n return {\n POSITION: {value: positions, size: 3},\n TEXCOORD_0: {value: texCoords, size: 2}\n // NORMAL: {}, - optional, but creates the high poly look with lighting\n };\n}\n"],"mappings":"AAEA,SAAQA,kBAAkB,QAAO,oBAAoB;AACrD,OAAOC,OAAO,MAAM,iBAAiB;AACrC,OAAOC,OAAO,MAAM,WAAW;AAC/B,SAAQC,QAAQ,QAAO,iBAAiB;AA8BxC,OAAO,SAASC,wBAAwBA,CACtCC,YAA0B,EAC1BC,cAA8B,EAC9B;EACA,MAAM;IAACC,YAAY;IAAEC,MAAM;IAAEC;EAAgB,CAAC,GAAGH,cAAc;EAE/D,MAAM;IAACI,IAAI;IAAEC,KAAK;IAAEC;EAAM,CAAC,GAAGP,YAAY;EAE1C,IAAIQ,OAAO;EACX,IAAIC,IAAI;EACR,QAAQR,cAAc,CAACS,UAAU;IAC/B,KAAK,SAAS;MACZF,OAAO,GAAGG,UAAU,CAACN,IAAI,EAAEC,KAAK,EAAEC,MAAM,EAAEH,gBAAgB,EAAEH,cAAc,CAACS,UAAU,CAAC;MACtFD,IAAI,GAAGG,kBAAkB,CAACV,YAAY,EAAEI,KAAK,EAAEE,OAAO,CAAC;MACvD;IACF,KAAK,SAAS;MACZA,OAAO,GAAGG,UAAU,CAACN,IAAI,EAAEC,KAAK,EAAEC,MAAM,EAAEH,gBAAgB,EAAEH,cAAc,CAACS,UAAU,CAAC;MACtFD,IAAI,GAAGI,kBAAkB,CAACX,YAAY,EAAEI,KAAK,EAAEC,MAAM,EAAEC,OAAO,CAAC;MAC/D;IAEF;MACE,IAAIF,KAAK,KAAKC,MAAM,IAAI,EAAEA,MAAM,GAAID,KAAK,GAAG,CAAE,CAAC,EAAE;QAC/CE,OAAO,GAAGG,UAAU,CAACN,IAAI,EAAEC,KAAK,EAAEC,MAAM,EAAEH,gBAAgB,EAAE,SAAS,CAAC;QACtEK,IAAI,GAAGG,kBAAkB,CAACV,YAAY,EAAEI,KAAK,EAAEE,OAAO,CAAC;MACzD,CAAC,MAAM;QACLA,OAAO,GAAGG,UAAU,CAACN,IAAI,EAAEC,KAAK,EAAEC,MAAM,EAAEH,gBAAgB,EAAE,SAAS,CAAC;QACtEK,IAAI,GAAGI,kBAAkB,CAACX,YAAY,EAAEI,KAAK,EAAEC,MAAM,EAAEC,OAAO,CAAC;MACjE;MACA;EACJ;EAEA,MAAM;IAACM;EAAQ,CAAC,GAAGL,IAAI;EACvB,IAAI;IAACM;EAAS,CAAC,GAAGN,IAAI;EACtB,IAAIO,UAAU,GAAGC,iBAAiB,CAACH,QAAQ,EAAEN,OAAO,EAAEF,KAAK,EAAEC,MAAM,EAAEJ,MAAM,CAAC;EAG5E,MAAMe,WAAW,GAAGvB,kBAAkB,CAACqB,UAAU,CAAC;EAElD,IAAIf,cAAc,CAACkB,WAAW,EAAE;IAC9B,MAAM;MAACH,UAAU,EAAEI,aAAa;MAAEL,SAAS,EAAEM;IAAY,CAAC,GAAGvB,QAAQ,CACnEkB,UAAU,EACVD,SAAS,EACTd,cAAc,CAACkB,WACjB,CAAC;IACDH,UAAU,GAAGI,aAAa;IAC1BL,SAAS,GAAGM,YAAY;EAC1B;EAEA,OAAO;IAELC,UAAU,EAAE;MACVC,MAAM,EAAE,CAAC;IACX,CAAC;IACDA,MAAM,EAAE;MACNC,WAAW,EAAET,SAAS,CAACU,MAAM;MAC7BP;IACF,CAAC;IACDQ,IAAI,EAAE,CAAC;IACPC,OAAO,EAAE;MAACC,KAAK,EAAEC,WAAW,CAACC,IAAI,CAACf,SAAS,CAAC;MAAEgB,IAAI,EAAE;IAAC,CAAC;IACtDf;EACF,CAAC;AACH;AAUA,SAASJ,kBAAkBA,CAACV,YAAY,EAAEI,KAAK,EAAEE,OAAO,EAAE;EACxD,MAAMwB,QAAQ,GAAG1B,KAAK,GAAG,CAAC;EAC1B,MAAM2B,OAAO,GAAG,IAAIrC,OAAO,CAACoC,QAAQ,CAAC;EACrC,MAAME,IAAI,GAAGD,OAAO,CAACE,UAAU,CAAC3B,OAAO,CAAC;EACxC,MAAM;IAACM,QAAQ;IAAEC;EAAS,CAAC,GAAGmB,IAAI,CAACE,OAAO,CAAClC,YAAY,CAAC;EAExD,OAAO;IAACY,QAAQ;IAAEC;EAAS,CAAC;AAC9B;AAWA,SAASF,kBAAkBA,CAACX,YAAY,EAAEI,KAAK,EAAEC,MAAM,EAAEC,OAAO,EAAE;EAChE,MAAM6B,GAAG,GAAG,IAAIxC,OAAO,CAACW,OAAO,EAAEF,KAAK,GAAG,CAAC,EAAEC,MAAM,GAAG,CAAC,CAAC;EACvD8B,GAAG,CAACC,GAAG,CAACpC,YAAY,CAAC;EAErB,MAAM;IAACqC,MAAM;IAAExB;EAAS,CAAC,GAAGsB,GAAG;EAC/B,MAAMvB,QAAQ,GAAGyB,MAAM;EACvB,OAAO;IAACzB,QAAQ;IAAEC;EAAS,CAAC;AAC9B;AAEA,SAASJ,UAAUA,CACjB6B,SAAqB,EACrBlC,KAAa,EACbC,MAAc,EACdH,gBAAkC,EAClCM,UAAiC,EACjC;EACA,MAAM;IAAC+B,OAAO;IAAEC,OAAO;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGxC,gBAAgB;EAI5D,MAAMI,OAAO,GAAG,IAAIqC,YAAY,CAAC,CAACvC,KAAK,GAAG,CAAC,KAAKC,MAAM,GAAG,CAAC,CAAC,CAAC;EAE5D,KAAK,IAAIuC,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxC,MAAM,EAAEwC,CAAC,EAAE,EAAE;IACtC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1C,KAAK,EAAE0C,CAAC,EAAE,EAAEF,CAAC,EAAE,EAAE;MACnC,MAAMG,CAAC,GAAGH,CAAC,GAAG,CAAC;MACf,MAAMI,CAAC,GAAGV,SAAS,CAACS,CAAC,GAAG,CAAC,CAAC;MAC1B,MAAME,CAAC,GAAGX,SAAS,CAACS,CAAC,GAAG,CAAC,CAAC;MAC1B,MAAMG,CAAC,GAAGZ,SAAS,CAACS,CAAC,GAAG,CAAC,CAAC;MAC1BzC,OAAO,CAACsC,CAAC,GAAGC,CAAC,CAAC,GAAGG,CAAC,GAAGT,OAAO,GAAGU,CAAC,GAAGR,OAAO,GAAGS,CAAC,GAAGV,OAAO,GAAGE,MAAM;IACnE;EACF;EAEA,IAAIlC,UAAU,KAAK,SAAS,EAAE;IAE5B,KAAK,IAAIoC,CAAC,GAAG,CAACxC,KAAK,GAAG,CAAC,IAAIA,KAAK,EAAE0C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1C,KAAK,EAAE0C,CAAC,EAAE,EAAEF,CAAC,EAAE,EAAE;MAC5DtC,OAAO,CAACsC,CAAC,CAAC,GAAGtC,OAAO,CAACsC,CAAC,GAAGxC,KAAK,GAAG,CAAC,CAAC;IACrC;IAEA,KAAK,IAAIwC,CAAC,GAAGvC,MAAM,EAAEwC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxC,MAAM,GAAG,CAAC,EAAEwC,CAAC,EAAE,EAAED,CAAC,IAAIvC,MAAM,GAAG,CAAC,EAAE;MAChEC,OAAO,CAACsC,CAAC,CAAC,GAAGtC,OAAO,CAACsC,CAAC,GAAG,CAAC,CAAC;IAC7B;EACF;EAEA,OAAOtC,OAAO;AAChB;AAEA,SAASS,iBAAiBA,CACxBH,QAAQ,EACRN,OAAmB,EACnBF,KAAa,EACbC,MAAc,EACdJ,MAAgB,EAChB;EACA,MAAM6B,QAAQ,GAAG1B,KAAK,GAAG,CAAC;EAC1B,MAAM+C,cAAc,GAAGvC,QAAQ,CAACW,MAAM,GAAG,CAAC;EAE1C,MAAM6B,SAAS,GAAG,IAAIT,YAAY,CAACQ,cAAc,GAAG,CAAC,CAAC;EAEtD,MAAME,SAAS,GAAG,IAAIV,YAAY,CAACQ,cAAc,GAAG,CAAC,CAAC;EAEtD,MAAM,CAACG,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC,GAAGxD,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,EAAEG,KAAK,EAAEC,MAAM,CAAC;EAChE,MAAMqD,MAAM,GAAG,CAACF,IAAI,GAAGF,IAAI,IAAIlD,KAAK;EACpC,MAAMuD,MAAM,GAAG,CAACF,IAAI,GAAGF,IAAI,IAAIlD,MAAM;EAErC,KAAK,IAAIuC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGO,cAAc,EAAEP,CAAC,EAAE,EAAE;IACvC,MAAME,CAAC,GAAGlC,QAAQ,CAACgC,CAAC,GAAG,CAAC,CAAC;IACzB,MAAMC,CAAC,GAAGjC,QAAQ,CAACgC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAMgB,QAAQ,GAAGf,CAAC,GAAGf,QAAQ,GAAGgB,CAAC;IAEjCM,SAAS,CAAC,CAAC,GAAGR,CAAC,GAAG,CAAC,CAAC,GAAGE,CAAC,GAAGY,MAAM,GAAGJ,IAAI;IACxCF,SAAS,CAAC,CAAC,GAAGR,CAAC,GAAG,CAAC,CAAC,GAAG,CAACC,CAAC,GAAGc,MAAM,GAAGF,IAAI;IACzCL,SAAS,CAAC,CAAC,GAAGR,CAAC,GAAG,CAAC,CAAC,GAAGtC,OAAO,CAACsD,QAAQ,CAAC;IAExCP,SAAS,CAAC,CAAC,GAAGT,CAAC,GAAG,CAAC,CAAC,GAAGE,CAAC,GAAG1C,KAAK;IAChCiD,SAAS,CAAC,CAAC,GAAGT,CAAC,GAAG,CAAC,CAAC,GAAGC,CAAC,GAAGxC,MAAM;EACnC;EAEA,OAAO;IACLwD,QAAQ,EAAE;MAACnC,KAAK,EAAE0B,SAAS;MAAEvB,IAAI,EAAE;IAAC,CAAC;IACrCiC,UAAU,EAAE;MAACpC,KAAK,EAAE2B,SAAS;MAAExB,IAAI,EAAE;IAAC;EAExC,CAAC;AACH"}
@@ -0,0 +1,2 @@
1
+ export const VERSION = typeof "4.0.0-alpha.6" !== 'undefined' ? "4.0.0-alpha.6" : 'latest';
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ"}
@@ -0,0 +1,17 @@
1
+ import { VERSION } from './lib/utils/version';
2
+ export const QuantizedMeshLoader = {
3
+ name: 'Quantized Mesh',
4
+ id: 'quantized-mesh',
5
+ module: 'terrain',
6
+ version: VERSION,
7
+ worker: true,
8
+ extensions: ['terrain'],
9
+ mimeTypes: ['application/vnd.quantized-mesh'],
10
+ options: {
11
+ 'quantized-mesh': {
12
+ bounds: [0, 0, 1, 1],
13
+ skirtHeight: null
14
+ }
15
+ }
16
+ };
17
+ //# sourceMappingURL=quantized-mesh-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quantized-mesh-loader.js","names":["VERSION","QuantizedMeshLoader","name","id","module","version","worker","extensions","mimeTypes","options","bounds","skirtHeight"],"sources":["../../src/quantized-mesh-loader.ts"],"sourcesContent":["import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\n\nexport type QuantizedMeshLoaderOptions = LoaderOptions & {\n 'quantized-mesh'?: {\n bounds?: [number, number, number, number];\n skirtHeight?: number | null;\n };\n};\n\n/**\n * Worker loader for quantized meshes\n */\nexport const QuantizedMeshLoader: Loader<any, never, QuantizedMeshLoaderOptions> = {\n name: 'Quantized Mesh',\n id: 'quantized-mesh',\n module: 'terrain',\n version: VERSION,\n worker: true,\n extensions: ['terrain'],\n mimeTypes: ['application/vnd.quantized-mesh'],\n options: {\n 'quantized-mesh': {\n bounds: [0, 0, 1, 1],\n skirtHeight: null\n }\n }\n};\n"],"mappings":"AACA,SAAQA,OAAO,QAAO,qBAAqB;AAY3C,OAAO,MAAMC,mBAAmE,GAAG;EACjFC,IAAI,EAAE,gBAAgB;EACtBC,EAAE,EAAE,gBAAgB;EACpBC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,gCAAgC,CAAC;EAC7CC,OAAO,EAAE;IACP,gBAAgB,EAAE;MAChBC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MACpBC,WAAW,EAAE;IACf;EACF;AACF,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { VERSION } from './lib/utils/version';
2
+ export const TerrainLoader = {
3
+ name: 'Terrain',
4
+ id: 'terrain',
5
+ module: 'terrain',
6
+ version: VERSION,
7
+ worker: true,
8
+ extensions: ['png', 'pngraw', 'jpg', 'jpeg', 'gif', 'webp', 'bmp'],
9
+ mimeTypes: ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/bmp'],
10
+ options: {
11
+ terrain: {
12
+ tesselator: 'auto',
13
+ bounds: undefined,
14
+ meshMaxError: 10,
15
+ elevationDecoder: {
16
+ rScaler: 1,
17
+ gScaler: 0,
18
+ bScaler: 0,
19
+ offset: 0
20
+ },
21
+ skirtHeight: undefined
22
+ }
23
+ }
24
+ };
25
+ //# sourceMappingURL=terrain-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain-loader.js","names":["VERSION","TerrainLoader","name","id","module","version","worker","extensions","mimeTypes","options","terrain","tesselator","bounds","undefined","meshMaxError","elevationDecoder","rScaler","gScaler","bScaler","offset","skirtHeight"],"sources":["../../src/terrain-loader.ts"],"sourcesContent":["import type {Loader} from '@loaders.gl/loader-utils';\nimport type {ImageLoaderOptions} from '@loaders.gl/images';\nimport {VERSION} from './lib/utils/version';\n\nimport {TerrainOptions} from './lib/parse-terrain';\nimport {Mesh} from '@loaders.gl/schema';\n\nexport type TerrainLoaderOptions = ImageLoaderOptions & {\n terrain?: TerrainOptions;\n};\n\n/**\n * Worker loader for image encoded terrain\n */\nexport const TerrainLoader: Loader<Mesh, never, TerrainLoaderOptions> = {\n name: 'Terrain',\n id: 'terrain',\n module: 'terrain',\n version: VERSION,\n worker: true,\n extensions: ['png', 'pngraw', 'jpg', 'jpeg', 'gif', 'webp', 'bmp'],\n mimeTypes: ['image/png', 'image/jpeg', 'image/gif', 'image/webp', 'image/bmp'],\n options: {\n terrain: {\n tesselator: 'auto',\n bounds: undefined!,\n meshMaxError: 10,\n elevationDecoder: {\n rScaler: 1,\n gScaler: 0,\n bScaler: 0,\n offset: 0\n },\n skirtHeight: undefined\n }\n }\n};\n"],"mappings":"AAEA,SAAQA,OAAO,QAAO,qBAAqB;AAY3C,OAAO,MAAMC,aAAwD,GAAG;EACtEC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;EAClEC,SAAS,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC;EAC9EC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,UAAU,EAAE,MAAM;MAClBC,MAAM,EAAEC,SAAU;MAClBC,YAAY,EAAE,EAAE;MAChBC,gBAAgB,EAAE;QAChBC,OAAO,EAAE,CAAC;QACVC,OAAO,EAAE,CAAC;QACVC,OAAO,EAAE,CAAC;QACVC,MAAM,EAAE;MACV,CAAC;MACDC,WAAW,EAAEP;IACf;EACF;AACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
+ import { QuantizedMeshLoader } from '../index';
3
+ createLoaderWorker(QuantizedMeshLoader);
4
+ //# sourceMappingURL=quantized-mesh-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quantized-mesh-worker.js","names":["createLoaderWorker","QuantizedMeshLoader"],"sources":["../../../src/workers/quantized-mesh-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {QuantizedMeshLoader} from '../index';\n\ncreateLoaderWorker(QuantizedMeshLoader);\n"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,mBAAmB,QAAO,UAAU;AAE5CD,kBAAkB,CAACC,mBAAmB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { createLoaderWorker } from '@loaders.gl/loader-utils';
2
+ import { TerrainLoader } from '../index';
3
+ createLoaderWorker(TerrainLoader);
4
+ //# sourceMappingURL=terrain-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terrain-worker.js","names":["createLoaderWorker","TerrainLoader"],"sources":["../../../src/workers/terrain-worker.ts"],"sourcesContent":["import {createLoaderWorker} from '@loaders.gl/loader-utils';\nimport {TerrainLoader} from '../index';\n\ncreateLoaderWorker(TerrainLoader);\n"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,aAAa,QAAO,UAAU;AAEtCD,kBAAkB,CAACC,aAAa,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { LoaderContext, LoaderWithParser } from '@loaders.gl/loader-utils';
2
+ import { TerrainLoader as TerrainWorkerLoader, TerrainLoaderOptions } from './terrain-loader';
3
+ import { QuantizedMeshLoader as QuantizedMeshWorkerLoader, QuantizedMeshLoaderOptions } from './quantized-mesh-loader';
4
+ export { TerrainWorkerLoader };
5
+ export declare const TerrainLoader: LoaderWithParser<any, never, TerrainLoaderOptions>;
6
+ export declare function parseTerrain(arrayBuffer: ArrayBuffer, options?: TerrainLoaderOptions, context?: LoaderContext): Promise<{
7
+ loaderData: {
8
+ header: {};
9
+ };
10
+ header: {
11
+ vertexCount: any;
12
+ boundingBox: [[number, number, number], [number, number, number]];
13
+ };
14
+ mode: number;
15
+ indices: {
16
+ value: Uint32Array;
17
+ size: number;
18
+ };
19
+ attributes: {
20
+ POSITION: {
21
+ value: Float32Array;
22
+ size: number;
23
+ };
24
+ TEXCOORD_0: {
25
+ value: Float32Array;
26
+ size: number;
27
+ };
28
+ };
29
+ }>;
30
+ export { QuantizedMeshWorkerLoader };
31
+ /**
32
+ * Loader for quantized meshes
33
+ */
34
+ export declare const QuantizedMeshLoader: LoaderWithParser<any, never, QuantizedMeshLoaderOptions>;
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAE,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAI9E,OAAO,EAAC,aAAa,IAAI,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EACL,mBAAmB,IAAI,yBAAyB,EAChD,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAC,mBAAmB,EAAC,CAAC;AAE7B,eAAO,MAAM,aAAa,EAAE,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,oBAAoB,CAG5E,CAAC;AAEF,wBAAsB,YAAY,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,oBAAoB,EAC9B,OAAO,CAAC,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;GAWxB;AAID,OAAO,EAAC,yBAAyB,EAAC,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,0BAA0B,CAKxF,CAAC"}
package/dist/index.js CHANGED
@@ -1,16 +1,33 @@
1
- import parseQuantizedMesh from './lib/parse-quantized-mesh';
2
- import loadTerrain from './lib/parse-terrain';
3
- import { TerrainLoader as TerrainWorkerLoader } from './terrain-loader';
4
- import { QuantizedMeshLoader as QuantizedMeshWorkerLoader } from './quantized-mesh-loader';
5
- export { TerrainWorkerLoader };
6
- export const TerrainLoader = { ...TerrainWorkerLoader,
7
- parse: loadTerrain
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QuantizedMeshLoader = exports.QuantizedMeshWorkerLoader = exports.parseTerrain = exports.TerrainLoader = exports.TerrainWorkerLoader = void 0;
4
+ const parse_quantized_mesh_1 = require("./lib/parse-quantized-mesh");
5
+ const parse_terrain_1 = require("./lib/parse-terrain");
6
+ const terrain_loader_1 = require("./terrain-loader");
7
+ Object.defineProperty(exports, "TerrainWorkerLoader", { enumerable: true, get: function () { return terrain_loader_1.TerrainLoader; } });
8
+ const quantized_mesh_loader_1 = require("./quantized-mesh-loader");
9
+ Object.defineProperty(exports, "QuantizedMeshWorkerLoader", { enumerable: true, get: function () { return quantized_mesh_loader_1.QuantizedMeshLoader; } });
10
+ exports.TerrainLoader = {
11
+ ...terrain_loader_1.TerrainLoader,
12
+ parse: parseTerrain
8
13
  };
9
- export const _typecheckTerrainLoader = TerrainLoader;
10
- export { QuantizedMeshWorkerLoader };
11
- export const QuantizedMeshLoader = { ...QuantizedMeshWorkerLoader,
12
- parseSync: parseQuantizedMesh,
13
- parse: async (arrayBuffer, options) => parseQuantizedMesh(arrayBuffer, options)
14
+ async function parseTerrain(arrayBuffer, options, context) {
15
+ const loadImageOptions = {
16
+ ...options,
17
+ mimeType: 'application/x.image',
18
+ image: { ...options?.image, type: 'data' }
19
+ };
20
+ const image = await context?.parse(arrayBuffer, loadImageOptions);
21
+ // Extend function to support additional mesh generation options (square grid or delatin)
22
+ const terrainOptions = { ...exports.TerrainLoader.options.terrain, ...options?.terrain };
23
+ return (0, parse_terrain_1.makeTerrainMeshFromImage)(image, terrainOptions);
24
+ }
25
+ exports.parseTerrain = parseTerrain;
26
+ /**
27
+ * Loader for quantized meshes
28
+ */
29
+ exports.QuantizedMeshLoader = {
30
+ ...quantized_mesh_loader_1.QuantizedMeshLoader,
31
+ parseSync: (arrayBuffer, options) => (0, parse_quantized_mesh_1.parseQuantizedMesh)(arrayBuffer, options?.['quantized-mesh']),
32
+ parse: async (arrayBuffer, options) => (0, parse_quantized_mesh_1.parseQuantizedMesh)(arrayBuffer, options?.['quantized-mesh'])
14
33
  };
15
- export const _typecheckQuantizedMeshLoader = QuantizedMeshLoader;
16
- //# sourceMappingURL=index.js.map
@@ -0,0 +1,59 @@
1
+ type Extensions = {
2
+ vertexNormals?: any;
3
+ waterMask?: any;
4
+ };
5
+ export declare const DECODING_STEPS: {
6
+ header: number;
7
+ vertices: number;
8
+ triangleIndices: number;
9
+ edgeIndices: number;
10
+ extensions: number;
11
+ };
12
+ export default function decode(data: any, userOptions: any): {
13
+ header: {};
14
+ vertexData?: undefined;
15
+ triangleIndices?: undefined;
16
+ westIndices?: undefined;
17
+ northIndices?: undefined;
18
+ eastIndices?: undefined;
19
+ southIndices?: undefined;
20
+ extensions?: undefined;
21
+ } | {
22
+ header: {};
23
+ vertexData: Uint16Array;
24
+ triangleIndices?: undefined;
25
+ westIndices?: undefined;
26
+ northIndices?: undefined;
27
+ eastIndices?: undefined;
28
+ southIndices?: undefined;
29
+ extensions?: undefined;
30
+ } | {
31
+ header: {};
32
+ vertexData: Uint16Array;
33
+ triangleIndices: any;
34
+ westIndices?: undefined;
35
+ northIndices?: undefined;
36
+ eastIndices?: undefined;
37
+ southIndices?: undefined;
38
+ extensions?: undefined;
39
+ } | {
40
+ header: {};
41
+ vertexData: Uint16Array;
42
+ triangleIndices: any;
43
+ westIndices: any;
44
+ northIndices: any;
45
+ eastIndices: any;
46
+ southIndices: any;
47
+ extensions?: undefined;
48
+ } | {
49
+ header: {};
50
+ vertexData: Uint16Array;
51
+ triangleIndices: any;
52
+ westIndices: any;
53
+ northIndices: any;
54
+ eastIndices: any;
55
+ southIndices: any;
56
+ extensions: Extensions;
57
+ };
58
+ export {};
59
+ //# sourceMappingURL=decode-quantized-mesh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decode-quantized-mesh.d.ts","sourceRoot":"","sources":["../../src/lib/decode-quantized-mesh.ts"],"names":[],"mappings":"AAuNA,KAAK,UAAU,GAAG;IAChB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB,CAAC;AA0CF,eAAO,MAAM,cAAc;;;;;;CAM1B,CAAC;AAMF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,KAAA,EAAE,WAAW,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoD/C"}