@loaders.gl/3d-tiles 3.1.3 → 4.0.0-alpha.5

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 (224) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/cesium-ion-loader.js +32 -36
  4. package/dist/cesium-ion-loader.js.map +1 -0
  5. package/dist/dist.min.js +88 -40
  6. package/dist/index.js +9 -26
  7. package/dist/index.js.map +1 -0
  8. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js +89 -106
  9. package/dist/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -0
  10. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js +202 -184
  11. package/dist/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -0
  12. package/dist/lib/classes/tile-3d-batch-table.js +282 -223
  13. package/dist/lib/classes/tile-3d-batch-table.js.map +1 -0
  14. package/dist/lib/classes/tile-3d-feature-table.js +86 -64
  15. package/dist/lib/classes/tile-3d-feature-table.js.map +1 -0
  16. package/dist/lib/constants.js +19 -23
  17. package/dist/lib/constants.js.map +1 -0
  18. package/dist/lib/encoders/encode-3d-tile-batched-model.js +45 -45
  19. package/dist/lib/encoders/encode-3d-tile-batched-model.js.map +1 -0
  20. package/dist/lib/encoders/encode-3d-tile-composite.js +24 -23
  21. package/dist/lib/encoders/encode-3d-tile-composite.js.map +1 -0
  22. package/dist/lib/encoders/encode-3d-tile-instanced-model.js +37 -37
  23. package/dist/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -0
  24. package/dist/lib/encoders/encode-3d-tile-point-cloud.js +38 -36
  25. package/dist/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -0
  26. package/dist/lib/encoders/encode-3d-tile.js +32 -30
  27. package/dist/lib/encoders/encode-3d-tile.js.map +1 -0
  28. package/dist/lib/encoders/helpers/encode-3d-tile-header.js +29 -28
  29. package/dist/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -0
  30. package/dist/lib/ion/ion.js +69 -60
  31. package/dist/lib/ion/ion.js.map +1 -0
  32. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js +62 -60
  33. package/dist/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -0
  34. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js +26 -26
  35. package/dist/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -0
  36. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js +28 -39
  37. package/dist/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -0
  38. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts +18 -11
  39. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
  40. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +203 -170
  41. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -0
  42. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js +63 -82
  43. package/dist/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -0
  44. package/dist/lib/parsers/helpers/parse-3d-tile-header.js +15 -26
  45. package/dist/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -0
  46. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +57 -68
  47. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -0
  48. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js +80 -84
  49. package/dist/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -0
  50. package/dist/lib/parsers/helpers/parse-utils.js +16 -29
  51. package/dist/lib/parsers/helpers/parse-utils.js.map +1 -0
  52. package/dist/lib/parsers/parse-3d-tile-batched-model.js +26 -30
  53. package/dist/lib/parsers/parse-3d-tile-batched-model.js.map +1 -0
  54. package/dist/lib/parsers/parse-3d-tile-composite.js +16 -25
  55. package/dist/lib/parsers/parse-3d-tile-composite.js.map +1 -0
  56. package/dist/lib/parsers/parse-3d-tile-gltf.js +9 -17
  57. package/dist/lib/parsers/parse-3d-tile-gltf.js.map +1 -0
  58. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  59. package/dist/lib/parsers/parse-3d-tile-header.js +139 -122
  60. package/dist/lib/parsers/parse-3d-tile-header.js.map +1 -0
  61. package/dist/lib/parsers/parse-3d-tile-instanced-model.js +170 -179
  62. package/dist/{es5/lib → lib}/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  63. package/dist/lib/parsers/parse-3d-tile-point-cloud.js +184 -350
  64. package/dist/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -0
  65. package/dist/lib/parsers/parse-3d-tile.js +31 -36
  66. package/dist/lib/parsers/parse-3d-tile.js.map +1 -0
  67. package/dist/lib/utils/version.js +2 -7
  68. package/dist/lib/utils/version.js.map +1 -0
  69. package/dist/tile-3d-subtree-loader.js +13 -22
  70. package/dist/tile-3d-subtree-loader.js.map +1 -0
  71. package/dist/tile-3d-writer.js +17 -24
  72. package/dist/tile-3d-writer.js.map +1 -0
  73. package/dist/tiles-3d-loader.js +66 -67
  74. package/dist/tiles-3d-loader.js.map +1 -0
  75. package/dist/types.d.ts +2 -1
  76. package/dist/types.d.ts.map +1 -1
  77. package/dist/types.js +2 -2
  78. package/dist/{es5/types.js.map → types.js.map} +0 -0
  79. package/package.json +10 -10
  80. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +95 -31
  81. package/src/lib/parsers/parse-3d-tile-header.ts +3 -1
  82. package/src/types.ts +2 -1
  83. package/dist/es5/bundle.js +0 -7
  84. package/dist/es5/bundle.js.map +0 -1
  85. package/dist/es5/cesium-ion-loader.js +0 -100
  86. package/dist/es5/cesium-ion-loader.js.map +0 -1
  87. package/dist/es5/index.js +0 -72
  88. package/dist/es5/index.js.map +0 -1
  89. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +0 -120
  90. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
  91. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +0 -225
  92. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
  93. package/dist/es5/lib/classes/tile-3d-batch-table.js +0 -349
  94. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +0 -1
  95. package/dist/es5/lib/classes/tile-3d-feature-table.js +0 -119
  96. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +0 -1
  97. package/dist/es5/lib/constants.js +0 -32
  98. package/dist/es5/lib/constants.js.map +0 -1
  99. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +0 -63
  100. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
  101. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +0 -41
  102. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +0 -1
  103. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +0 -57
  104. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
  105. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +0 -59
  106. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
  107. package/dist/es5/lib/encoders/encode-3d-tile.js +0 -48
  108. package/dist/es5/lib/encoders/encode-3d-tile.js.map +0 -1
  109. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +0 -41
  110. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
  111. package/dist/es5/lib/ion/ion.js +0 -219
  112. package/dist/es5/lib/ion/ion.js.map +0 -1
  113. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +0 -76
  114. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
  115. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -40
  116. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
  117. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -40
  118. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
  119. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +0 -270
  120. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +0 -1
  121. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +0 -123
  122. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
  123. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +0 -25
  124. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
  125. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +0 -161
  126. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +0 -1
  127. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +0 -98
  128. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
  129. package/dist/es5/lib/parsers/helpers/parse-utils.js +0 -32
  130. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +0 -1
  131. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -69
  132. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
  133. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +0 -61
  134. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +0 -1
  135. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -45
  136. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +0 -1
  137. package/dist/es5/lib/parsers/parse-3d-tile-header.js +0 -233
  138. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +0 -1
  139. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +0 -220
  140. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +0 -346
  141. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
  142. package/dist/es5/lib/parsers/parse-3d-tile.js +0 -100
  143. package/dist/es5/lib/parsers/parse-3d-tile.js.map +0 -1
  144. package/dist/es5/lib/utils/version.js +0 -9
  145. package/dist/es5/lib/utils/version.js.map +0 -1
  146. package/dist/es5/tile-3d-subtree-loader.js +0 -26
  147. package/dist/es5/tile-3d-subtree-loader.js.map +0 -1
  148. package/dist/es5/tile-3d-writer.js +0 -32
  149. package/dist/es5/tile-3d-writer.js.map +0 -1
  150. package/dist/es5/tiles-3d-loader.js +0 -190
  151. package/dist/es5/tiles-3d-loader.js.map +0 -1
  152. package/dist/es5/types.js +0 -2
  153. package/dist/esm/bundle.js +0 -5
  154. package/dist/esm/bundle.js.map +0 -1
  155. package/dist/esm/cesium-ion-loader.js +0 -36
  156. package/dist/esm/cesium-ion-loader.js.map +0 -1
  157. package/dist/esm/index.js +0 -9
  158. package/dist/esm/index.js.map +0 -1
  159. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +0 -96
  160. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +0 -1
  161. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +0 -215
  162. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +0 -1
  163. package/dist/esm/lib/classes/tile-3d-batch-table.js +0 -304
  164. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +0 -1
  165. package/dist/esm/lib/classes/tile-3d-feature-table.js +0 -94
  166. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +0 -1
  167. package/dist/esm/lib/constants.js +0 -22
  168. package/dist/esm/lib/constants.js.map +0 -1
  169. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +0 -46
  170. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +0 -1
  171. package/dist/esm/lib/encoders/encode-3d-tile-composite.js +0 -25
  172. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +0 -1
  173. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +0 -38
  174. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +0 -1
  175. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +0 -41
  176. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +0 -1
  177. package/dist/esm/lib/encoders/encode-3d-tile.js +0 -35
  178. package/dist/esm/lib/encoders/encode-3d-tile.js.map +0 -1
  179. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +0 -31
  180. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +0 -1
  181. package/dist/esm/lib/ion/ion.js +0 -77
  182. package/dist/esm/lib/ion/ion.js.map +0 -1
  183. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +0 -67
  184. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +0 -1
  185. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -30
  186. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +0 -1
  187. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -31
  188. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +0 -1
  189. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +0 -173
  190. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +0 -1
  191. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +0 -69
  192. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +0 -1
  193. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +0 -17
  194. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +0 -1
  195. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +0 -64
  196. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +0 -1
  197. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +0 -89
  198. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +0 -1
  199. package/dist/esm/lib/parsers/helpers/parse-utils.js +0 -19
  200. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +0 -1
  201. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +0 -29
  202. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +0 -1
  203. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +0 -17
  204. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +0 -1
  205. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js +0 -10
  206. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +0 -1
  207. package/dist/esm/lib/parsers/parse-3d-tile-header.js +0 -144
  208. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +0 -1
  209. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +0 -177
  210. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +0 -1
  211. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +0 -245
  212. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +0 -1
  213. package/dist/esm/lib/parsers/parse-3d-tile.js +0 -32
  214. package/dist/esm/lib/parsers/parse-3d-tile.js.map +0 -1
  215. package/dist/esm/lib/utils/version.js +0 -2
  216. package/dist/esm/lib/utils/version.js.map +0 -1
  217. package/dist/esm/tile-3d-subtree-loader.js +0 -14
  218. package/dist/esm/tile-3d-subtree-loader.js.map +0 -1
  219. package/dist/esm/tile-3d-writer.js +0 -20
  220. package/dist/esm/tile-3d-writer.js.map +0 -1
  221. package/dist/esm/tiles-3d-loader.js +0 -79
  222. package/dist/esm/tiles-3d-loader.js.map +0 -1
  223. package/dist/esm/types.js +0 -2
  224. package/dist/esm/types.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import type {Availability, Subtree} from '../../../types';
1
+ import type {Availability, BoundingVolume, Subtree} from '../../../types';
2
2
  import {Tile3DSubtreeLoader} from '../../../tile-3d-subtree-loader';
3
3
  import {load} from '@loaders.gl/core';
4
4
 
@@ -22,27 +22,33 @@ const SUBDIVISION_COUNT_MAP = {
22
22
  * @param level
23
23
  * @param globalData
24
24
  */
25
- // eslint-disable-next-line max-params
26
25
  // eslint-disable-next-line max-statements
27
- export async function parseImplicitTiles(
28
- subtree: Subtree,
29
- options: any,
30
- parentData: {mortonIndex: number; x: number; y: number; z: number} = {
31
- mortonIndex: 0,
32
- x: 0,
33
- y: 0,
34
- z: 0
35
- },
36
- childIndex: number = 0,
37
- level: number = 0,
38
- globalData: {level: number; mortonIndex: number; x: number; y: number; z: number} = {
39
- level: 0,
40
- mortonIndex: 0,
41
- x: 0,
42
- y: 0,
43
- z: 0
44
- }
45
- ) {
26
+ export async function parseImplicitTiles(params: {
27
+ subtree: Subtree;
28
+ options: any;
29
+ parentData?: {mortonIndex: number; x: number; y: number; z: number};
30
+ childIndex?: number;
31
+ level?: number;
32
+ globalData?: {level: number; mortonIndex: number; x: number; y: number; z: number};
33
+ }) {
34
+ const {
35
+ options,
36
+ parentData = {
37
+ mortonIndex: 0,
38
+ x: 0,
39
+ y: 0,
40
+ z: 0
41
+ },
42
+ childIndex = 0,
43
+ globalData = {
44
+ level: 0,
45
+ mortonIndex: 0,
46
+ x: 0,
47
+ y: 0,
48
+ z: 0
49
+ }
50
+ } = params;
51
+ let {subtree, level = 0} = params;
46
52
  const {
47
53
  subdivisionScheme,
48
54
  subtreeLevels,
@@ -132,18 +138,19 @@ export async function parseImplicitTiles(
132
138
  const pData = {mortonIndex: childTileMortonIndex, x: childTileX, y: childTileY, z: childTileZ};
133
139
 
134
140
  for (let index = 0; index < childrenPerTile; index++) {
135
- const currentTile = await parseImplicitTiles(
141
+ const currentTile = await parseImplicitTiles({
136
142
  subtree,
137
143
  options,
138
- pData,
139
- index,
140
- childTileLevel,
144
+ parentData: pData,
145
+ childIndex: index,
146
+ level: childTileLevel,
141
147
  globalData
142
- );
148
+ });
143
149
 
144
150
  if (currentTile.contentUrl || currentTile.children.length) {
145
151
  const globalLevel = lev + 1;
146
- const formattedTile = formatTileData(currentTile, globalLevel, options);
152
+ const childCoordinates = {childTileX, childTileY, childTileZ};
153
+ const formattedTile = formatTileData(currentTile, globalLevel, childCoordinates, options);
147
154
  // @ts-ignore
148
155
  tile.children.push(formattedTile);
149
156
  }
@@ -172,11 +179,29 @@ function getAvailabilityResult(availabilityData: Availability, index: number): b
172
179
  * @param options
173
180
  * @returns
174
181
  */
175
- function formatTileData(tile, level: number, options: any) {
176
- const {basePath, refine, getRefine, lodMetricType, getTileType, rootLodMetricValue} = options;
182
+ function formatTileData(
183
+ tile,
184
+ level: number,
185
+ childCoordinates: {childTileX: number; childTileY: number; childTileZ: number},
186
+ options: any
187
+ ) {
188
+ const {
189
+ basePath,
190
+ refine,
191
+ getRefine,
192
+ lodMetricType,
193
+ getTileType,
194
+ rootLodMetricValue,
195
+ rootBoundingVolume
196
+ } = options;
177
197
  const uri = tile.contentUrl && tile.contentUrl.replace(`${basePath}/`, '');
178
198
  const lodMetricValue = rootLodMetricValue / 2 ** level;
179
- // TODO handle bounding volume
199
+ const boundingVolume = calculateBoundingVolumeForChildTile(
200
+ level,
201
+ rootBoundingVolume,
202
+ childCoordinates
203
+ );
204
+
180
205
  return {
181
206
  children: tile.children,
182
207
  contentUrl: tile.contentUrl,
@@ -185,7 +210,8 @@ function formatTileData(tile, level: number, options: any) {
185
210
  refine: getRefine(refine),
186
211
  type: getTileType(tile),
187
212
  lodMetricType,
188
- lodMetricValue
213
+ lodMetricValue,
214
+ boundingVolume
189
215
  // Temp debug values. Remove when real implicit tileset will be tested.
190
216
  // x: tile.x,
191
217
  // y: tile.y,
@@ -194,6 +220,44 @@ function formatTileData(tile, level: number, options: any) {
194
220
  };
195
221
  }
196
222
 
223
+ /**
224
+ * Calculate child bounding volume.
225
+ * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-rules
226
+ * @param level
227
+ * @param rootBoundingVolume
228
+ * @param childCoordinates
229
+ */
230
+ function calculateBoundingVolumeForChildTile(
231
+ level: number,
232
+ rootBoundingVolume: BoundingVolume,
233
+ childCoordinates: {childTileX: number; childTileY: number; childTileZ: number}
234
+ ): BoundingVolume | null {
235
+ if (rootBoundingVolume.region) {
236
+ const {childTileX, childTileY, childTileZ} = childCoordinates;
237
+ const [west, south, east, north, minimumHeight, maximumHeight] = rootBoundingVolume.region;
238
+ const boundingVolumesCount = 2 ** level;
239
+
240
+ const sizeX = (east - west) / boundingVolumesCount;
241
+ const sizeY = (north - south) / boundingVolumesCount;
242
+ const sizeZ = (maximumHeight - minimumHeight) / boundingVolumesCount;
243
+
244
+ const [childWest, childEast] = [west + sizeX * childTileX, west + sizeX * (childTileX + 1)];
245
+ const [childSouth, childNorth] = [south + sizeY * childTileY, south + sizeY * (childTileY + 1)];
246
+ const [childMinimumHeight, childMaximumHeight] = [
247
+ minimumHeight + sizeZ * childTileZ,
248
+ minimumHeight + sizeZ * (childTileZ + 1)
249
+ ];
250
+
251
+ return {
252
+ region: [childWest, childSouth, childEast, childNorth, childMinimumHeight, childMaximumHeight]
253
+ };
254
+ }
255
+
256
+ // eslint-disable-next-line no-console
257
+ console.warn('Unsupported bounding volume type: ', rootBoundingVolume);
258
+ return null;
259
+ }
260
+
197
261
  /**
198
262
  * Do binary concatenation
199
263
  * @param first
@@ -100,6 +100,7 @@ export async function normalizeImplicitTileHeaders(tileset: Tileset3D) {
100
100
  const refine = tileset.root.refine;
101
101
  // @ts-ignore
102
102
  const rootLodMetricValue = tileset.root.geometricError;
103
+ const rootBoundingVolume = tileset.root.boundingVolume;
103
104
 
104
105
  const options = {
105
106
  contentUrlTemplate,
@@ -111,6 +112,7 @@ export async function normalizeImplicitTileHeaders(tileset: Tileset3D) {
111
112
  basePath,
112
113
  lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,
113
114
  rootLodMetricValue,
115
+ rootBoundingVolume,
114
116
  getTileType,
115
117
  getRefine
116
118
  };
@@ -134,7 +136,7 @@ export async function normalizeImplicitTileData(tile, rootSubtree: Subtree, opti
134
136
  tile.lodMetricValue = tile.geometricError;
135
137
  tile.transformMatrix = tile.transform;
136
138
 
137
- const {children, contentUrl} = await parseImplicitTiles(rootSubtree, options);
139
+ const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});
138
140
 
139
141
  if (contentUrl) {
140
142
  tile.contentUrl = contentUrl;
package/src/types.ts CHANGED
@@ -45,9 +45,10 @@ export type Node3D = {
45
45
  };
46
46
  };
47
47
 
48
- type BoundingVolume = {
48
+ export type BoundingVolume = {
49
49
  box?: number[];
50
50
  sphere?: number[];
51
+ region?: number[];
51
52
  };
52
53
 
53
54
  /**
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- var moduleExports = require('./index');
4
-
5
- globalThis.loaders = globalThis.loaders || {};
6
- module.exports = Object.assign(globalThis.loaders, moduleExports);
7
- //# sourceMappingURL=bundle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/bundle.ts"],"names":["moduleExports","require","globalThis","loaders","module","exports","Object","assign"],"mappings":";;AACA,IAAMA,aAAa,GAAGC,OAAO,CAAC,SAAD,CAA7B;;AACAC,UAAU,CAACC,OAAX,GAAqBD,UAAU,CAACC,OAAX,IAAsB,EAA3C;AACAC,MAAM,CAACC,OAAP,GAAiBC,MAAM,CAACC,MAAP,CAAcL,UAAU,CAACC,OAAzB,EAAkCH,aAAlC,CAAjB","sourcesContent":["// @ts-nocheck\nconst moduleExports = require('./index');\nglobalThis.loaders = globalThis.loaders || {};\nmodule.exports = Object.assign(globalThis.loaders, moduleExports);\n"],"file":"bundle.js"}
@@ -1,100 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.CesiumIonLoader = void 0;
9
-
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
-
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
- var _tiles3dLoader = require("./tiles-3d-loader");
17
-
18
- var _ion = require("./lib/ion/ion");
19
-
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
-
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
-
24
- function preload(_x) {
25
- return _preload.apply(this, arguments);
26
- }
27
-
28
- function _preload() {
29
- _preload = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(url) {
30
- var options,
31
- _options,
32
- accessToken,
33
- assetId,
34
- matched,
35
- _args2 = arguments;
36
-
37
- return _regenerator.default.wrap(function _callee2$(_context2) {
38
- while (1) {
39
- switch (_context2.prev = _context2.next) {
40
- case 0:
41
- options = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};
42
- options = options['cesium-ion'] || {};
43
- _options = options, accessToken = _options.accessToken;
44
- assetId = options.assetId;
45
-
46
- if (!Number.isFinite(assetId)) {
47
- matched = url.match(/\/([0-9]+)\/tileset.json/);
48
- assetId = matched && matched[1];
49
- }
50
-
51
- return _context2.abrupt("return", (0, _ion.getIonTilesetMetadata)(accessToken, assetId));
52
-
53
- case 6:
54
- case "end":
55
- return _context2.stop();
56
- }
57
- }
58
- }, _callee2);
59
- }));
60
- return _preload.apply(this, arguments);
61
- }
62
-
63
- var CesiumIonLoader = _objectSpread(_objectSpread({}, _tiles3dLoader.Tiles3DLoader), {}, {
64
- id: 'cesium-ion',
65
- name: 'Cesium Ion',
66
- preload: preload,
67
- parse: function () {
68
- var _parse = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(data, options, context) {
69
- return _regenerator.default.wrap(function _callee$(_context) {
70
- while (1) {
71
- switch (_context.prev = _context.next) {
72
- case 0:
73
- options = _objectSpread({}, options);
74
- options['3d-tiles'] = options['cesium-ion'];
75
- options.loader = CesiumIonLoader;
76
- return _context.abrupt("return", _tiles3dLoader.Tiles3DLoader.parse(data, options, context));
77
-
78
- case 4:
79
- case "end":
80
- return _context.stop();
81
- }
82
- }
83
- }, _callee);
84
- }));
85
-
86
- function parse(_x2, _x3, _x4) {
87
- return _parse.apply(this, arguments);
88
- }
89
-
90
- return parse;
91
- }(),
92
- options: {
93
- 'cesium-ion': _objectSpread(_objectSpread({}, _tiles3dLoader.Tiles3DLoader.options['3d-tiles']), {}, {
94
- accessToken: null
95
- })
96
- }
97
- });
98
-
99
- exports.CesiumIonLoader = CesiumIonLoader;
100
- //# sourceMappingURL=cesium-ion-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/cesium-ion-loader.ts"],"names":["preload","url","options","accessToken","assetId","Number","isFinite","matched","match","CesiumIonLoader","Tiles3DLoader","id","name","parse","data","context","loader"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;;;;;SAEeA,O;;;;;uEAAf,kBAAuBC,GAAvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAA4BC,YAAAA,OAA5B,8DAAsC,EAAtC;AACEA,YAAAA,OAAO,GAAGA,OAAO,CAAC,YAAD,CAAP,IAAyB,EAAnC;AADF,uBAGwBA,OAHxB,EAGSC,WAHT,YAGSA,WAHT;AAKMC,YAAAA,OALN,GAKgBF,OAAO,CAACE,OALxB;;AAME,gBAAI,CAACC,MAAM,CAACC,QAAP,CAAgBF,OAAhB,CAAL,EAA+B;AACvBG,cAAAA,OADuB,GACbN,GAAG,CAACO,KAAJ,CAAU,0BAAV,CADa;AAE7BJ,cAAAA,OAAO,GAAGG,OAAO,IAAIA,OAAO,CAAC,CAAD,CAA5B;AACD;;AATH,8CAUS,gCAAsBJ,WAAtB,EAAmCC,OAAnC,CAVT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAgBO,IAAMK,eAAiC,mCACzCC,4BADyC;AAE5CC,EAAAA,EAAE,EAAE,YAFwC;AAG5CC,EAAAA,IAAI,EAAE,YAHsC;AAK5CZ,EAAAA,OAAO,EAAPA,OAL4C;AAM5Ca,EAAAA,KAAK;AAAA,2EAAE,iBAAOC,IAAP,EAAaZ,OAAb,EAAuBa,OAAvB;AAAA;AAAA;AAAA;AAAA;AACLb,cAAAA,OAAO,qBAAOA,OAAP,CAAP;AACAA,cAAAA,OAAO,CAAC,UAAD,CAAP,GAAsBA,OAAO,CAAC,YAAD,CAA7B;AAEAA,cAAAA,OAAO,CAACc,MAAR,GAAiBP,eAAjB;AAJK,+CAKEC,6BAAcG,KAAd,CAAoBC,IAApB,EAA0BZ,OAA1B,EAAmCa,OAAnC,CALF;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,KANuC;AAa5Cb,EAAAA,OAAO,EAAE;AACP,kDACKQ,6BAAcR,OAAd,CAAsB,UAAtB,CADL;AAEEC,MAAAA,WAAW,EAAE;AAFf;AADO;AAbmC,EAAvC","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {Tiles3DLoader} from './tiles-3d-loader';\nimport {getIonTilesetMetadata} from './lib/ion/ion';\n\nasync function preload(url, options = {}) {\n options = options['cesium-ion'] || {};\n // @ts-ignore\n const {accessToken} = options;\n // @ts-ignore\n let assetId = options.assetId;\n if (!Number.isFinite(assetId)) {\n const matched = url.match(/\\/([0-9]+)\\/tileset.json/);\n assetId = matched && matched[1];\n }\n return getIonTilesetMetadata(accessToken, assetId);\n}\n\n/**\n * Loader for 3D tiles from Cesium ION\n */\nexport const CesiumIonLoader: LoaderWithParser = {\n ...Tiles3DLoader,\n id: 'cesium-ion',\n name: 'Cesium Ion',\n // @ts-ignore\n preload,\n parse: async (data, options?, context?) => {\n options = {...options};\n options['3d-tiles'] = options['cesium-ion'];\n // @ts-ignore\n options.loader = CesiumIonLoader;\n return Tiles3DLoader.parse(data, options, context); // , loader);\n },\n options: {\n 'cesium-ion': {\n ...Tiles3DLoader.options['3d-tiles'],\n accessToken: null\n }\n }\n};\n"],"file":"cesium-ion-loader.js"}
package/dist/es5/index.js DELETED
@@ -1,72 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- Object.defineProperty(exports, "Tiles3DLoader", {
9
- enumerable: true,
10
- get: function get() {
11
- return _tiles3dLoader.Tiles3DLoader;
12
- }
13
- });
14
- Object.defineProperty(exports, "CesiumIonLoader", {
15
- enumerable: true,
16
- get: function get() {
17
- return _cesiumIonLoader.CesiumIonLoader;
18
- }
19
- });
20
- Object.defineProperty(exports, "Tile3DSubtreeLoader", {
21
- enumerable: true,
22
- get: function get() {
23
- return _tile3dSubtreeLoader.Tile3DSubtreeLoader;
24
- }
25
- });
26
- Object.defineProperty(exports, "Tile3DWriter", {
27
- enumerable: true,
28
- get: function get() {
29
- return _tile3dWriter.Tile3DWriter;
30
- }
31
- });
32
- Object.defineProperty(exports, "Tile3DFeatureTable", {
33
- enumerable: true,
34
- get: function get() {
35
- return _tile3dFeatureTable.default;
36
- }
37
- });
38
- Object.defineProperty(exports, "Tile3DBatchTable", {
39
- enumerable: true,
40
- get: function get() {
41
- return _tile3dBatchTable.default;
42
- }
43
- });
44
- Object.defineProperty(exports, "TILE3D_TYPE", {
45
- enumerable: true,
46
- get: function get() {
47
- return _constants.TILE3D_TYPE;
48
- }
49
- });
50
- Object.defineProperty(exports, "_getIonTilesetMetadata", {
51
- enumerable: true,
52
- get: function get() {
53
- return _ion.getIonTilesetMetadata;
54
- }
55
- });
56
-
57
- var _tiles3dLoader = require("./tiles-3d-loader");
58
-
59
- var _cesiumIonLoader = require("./cesium-ion-loader");
60
-
61
- var _tile3dSubtreeLoader = require("./tile-3d-subtree-loader");
62
-
63
- var _tile3dWriter = require("./tile-3d-writer");
64
-
65
- var _tile3dFeatureTable = _interopRequireDefault(require("./lib/classes/tile-3d-feature-table"));
66
-
67
- var _tile3dBatchTable = _interopRequireDefault(require("./lib/classes/tile-3d-batch-table"));
68
-
69
- var _constants = require("./lib/constants");
70
-
71
- var _ion = require("./lib/ion/ion");
72
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAGA;;AAGA;;AACA;;AAGA;;AACA","sourcesContent":["// LOADERS\nexport {Tiles3DLoader} from './tiles-3d-loader';\nexport {CesiumIonLoader} from './cesium-ion-loader';\nexport {Tile3DSubtreeLoader} from './tile-3d-subtree-loader';\n\n// WRITERS\nexport {Tile3DWriter} from './tile-3d-writer';\n\n// CLASSES\nexport {default as Tile3DFeatureTable} from './lib/classes/tile-3d-feature-table';\nexport {default as Tile3DBatchTable} from './lib/classes/tile-3d-batch-table';\n\n// EXPERIMENTAL\nexport {TILE3D_TYPE} from './lib/constants';\nexport {getIonTilesetMetadata as _getIonTilesetMetadata} from './lib/ion/ion';\nexport type {BatchTableJson, B3DMContent, Node3D} from './types';\n"],"file":"index.js"}
@@ -1,120 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createTypedArrayFromAccessor = createTypedArrayFromAccessor;
7
-
8
- var _math = require("@loaders.gl/math");
9
-
10
- var _loaderUtils = require("@loaders.gl/loader-utils");
11
-
12
- var COMPONENTS_PER_ATTRIBUTE = {
13
- SCALAR: 1,
14
- VEC2: 2,
15
- VEC3: 3,
16
- VEC4: 4,
17
- MAT2: 4,
18
- MAT3: 9,
19
- MAT4: 16
20
- };
21
- var UNPACKER = {
22
- SCALAR: function SCALAR(values, i) {
23
- return values[i];
24
- },
25
- VEC2: function VEC2(values, i) {
26
- return [values[2 * i + 0], values[2 * i + 1]];
27
- },
28
- VEC3: function VEC3(values, i) {
29
- return [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]];
30
- },
31
- VEC4: function VEC4(values, i) {
32
- return [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]];
33
- },
34
- MAT2: function MAT2(values, i) {
35
- return [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]];
36
- },
37
- MAT3: function MAT3(values, i) {
38
- return [values[9 * i + 0], values[9 * i + 1], values[9 * i + 2], values[9 * i + 3], values[9 * i + 4], values[9 * i + 5], values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]];
39
- },
40
- MAT4: function MAT4(values, i) {
41
- return [values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3], values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7], values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11], values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]];
42
- }
43
- };
44
- var PACKER = {
45
- SCALAR: function SCALAR(x, values, i) {
46
- values[i] = x;
47
- },
48
- VEC2: function VEC2(x, values, i) {
49
- values[2 * i + 0] = x[0];
50
- values[2 * i + 1] = x[1];
51
- },
52
- VEC3: function VEC3(x, values, i) {
53
- values[3 * i + 0] = x[0];
54
- values[3 * i + 1] = x[1];
55
- values[3 * i + 2] = x[2];
56
- },
57
- VEC4: function VEC4(x, values, i) {
58
- values[4 * i + 0] = x[0];
59
- values[4 * i + 1] = x[1];
60
- values[4 * i + 2] = x[2];
61
- values[4 * i + 3] = x[3];
62
- },
63
- MAT2: function MAT2(x, values, i) {
64
- values[4 * i + 0] = x[0];
65
- values[4 * i + 1] = x[1];
66
- values[4 * i + 2] = x[2];
67
- values[4 * i + 3] = x[3];
68
- },
69
- MAT3: function MAT3(x, values, i) {
70
- values[9 * i + 0] = x[0];
71
- values[9 * i + 1] = x[1];
72
- values[9 * i + 2] = x[2];
73
- values[9 * i + 3] = x[3];
74
- values[9 * i + 4] = x[4];
75
- values[9 * i + 5] = x[5];
76
- values[9 * i + 6] = x[6];
77
- values[9 * i + 7] = x[7];
78
- values[9 * i + 8] = x[8];
79
- values[9 * i + 9] = x[9];
80
- },
81
- MAT4: function MAT4(x, values, i) {
82
- values[16 * i + 0] = x[0];
83
- values[16 * i + 1] = x[1];
84
- values[16 * i + 2] = x[2];
85
- values[16 * i + 3] = x[3];
86
- values[16 * i + 4] = x[4];
87
- values[16 * i + 5] = x[5];
88
- values[16 * i + 6] = x[6];
89
- values[16 * i + 7] = x[7];
90
- values[16 * i + 8] = x[8];
91
- values[16 * i + 9] = x[9];
92
- values[16 * i + 10] = x[10];
93
- values[16 * i + 11] = x[11];
94
- values[16 * i + 12] = x[12];
95
- values[16 * i + 13] = x[13];
96
- values[16 * i + 14] = x[14];
97
- values[16 * i + 15] = x[15];
98
- }
99
- };
100
-
101
- function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {
102
- var componentType = tile3DAccessor.componentType;
103
- (0, _loaderUtils.assert)(tile3DAccessor.componentType);
104
- var type = typeof componentType === 'string' ? _math.GLType.fromName(componentType) : componentType;
105
- var size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];
106
- var unpacker = UNPACKER[tile3DAccessor.type];
107
- var packer = PACKER[tile3DAccessor.type];
108
- byteOffset += tile3DAccessor.byteOffset;
109
-
110
- var values = _math.GLType.createTypedArray(type, buffer, byteOffset, size * length);
111
-
112
- return {
113
- values: values,
114
- type: type,
115
- size: size,
116
- unpacker: unpacker,
117
- packer: packer
118
- };
119
- }
120
- //# sourceMappingURL=tile-3d-accessor-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/lib/classes/helpers/tile-3d-accessor-utils.ts"],"names":["COMPONENTS_PER_ATTRIBUTE","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","UNPACKER","values","i","PACKER","x","createTypedArrayFromAccessor","tile3DAccessor","buffer","byteOffset","length","componentType","type","GLType","fromName","size","unpacker","packer","createTypedArray"],"mappings":"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","sourcesContent":["import {GLType} from '@loaders.gl/math'; // '@math.gl/geometry';\nimport {assert} from '@loaders.gl/loader-utils';\n\nconst COMPONENTS_PER_ATTRIBUTE = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\n// TODO - could just return typed array views...\n// prettier-ignore\nconst UNPACKER = {\n SCALAR: (values, i) => values[i],\n VEC2: (values, i) => [values[2 * i + 0], values[2 * i + 1]],\n VEC3: (values, i) => [values[3 * i + 0], values[3 * i + 1], values[3 * i + 2]],\n VEC4: (values, i) => [values[4 * i + 0], values[4 * i + 1], values[4 * i + 2], values[4 * i + 3]],\n // TODO: check column major\n MAT2: (values, i) => [\n values[4 * i + 0], values[4 * i + 1],\n values[4 * i + 2], values[4 * i + 3]\n ],\n MAT3: (values, i) => [\n values[9 * i + 0], values[9 * i + 1], values[9 * i + 2],\n values[9 * i + 3], values[9 * i + 4], values[9 * i + 5],\n values[9 * i + 6], values[9 * i + 7], values[9 * i + 8]\n ],\n MAT4: (values, i) => [\n values[16 * i + 0], values[16 * i + 1], values[16 * i + 2], values[16 * i + 3],\n values[16 * i + 4], values[16 * i + 5], values[16 * i + 6], values[16 * i + 7],\n values[16 * i + 8], values[16 * i + 9], values[16 * i + 10], values[16 * i + 11],\n values[16 * i + 12], values[16 * i + 13], values[16 * i + 14], values[16 * i + 15]\n ]\n};\n\nconst PACKER = {\n SCALAR: (x, values, i) => {\n values[i] = x;\n },\n VEC2: (x, values, i) => {\n values[2 * i + 0] = x[0];\n values[2 * i + 1] = x[1];\n },\n VEC3: (x, values, i) => {\n values[3 * i + 0] = x[0];\n values[3 * i + 1] = x[1];\n values[3 * i + 2] = x[2];\n },\n VEC4: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n // TODO: check column major correctness\n MAT2: (x, values, i) => {\n values[4 * i + 0] = x[0];\n values[4 * i + 1] = x[1];\n values[4 * i + 2] = x[2];\n values[4 * i + 3] = x[3];\n },\n MAT3: (x, values, i) => {\n values[9 * i + 0] = x[0];\n values[9 * i + 1] = x[1];\n values[9 * i + 2] = x[2];\n values[9 * i + 3] = x[3];\n values[9 * i + 4] = x[4];\n values[9 * i + 5] = x[5];\n values[9 * i + 6] = x[6];\n values[9 * i + 7] = x[7];\n values[9 * i + 8] = x[8];\n values[9 * i + 9] = x[9];\n },\n MAT4: (x, values, i) => {\n values[16 * i + 0] = x[0];\n values[16 * i + 1] = x[1];\n values[16 * i + 2] = x[2];\n values[16 * i + 3] = x[3];\n values[16 * i + 4] = x[4];\n values[16 * i + 5] = x[5];\n values[16 * i + 6] = x[6];\n values[16 * i + 7] = x[7];\n values[16 * i + 8] = x[8];\n values[16 * i + 9] = x[9];\n values[16 * i + 10] = x[10];\n values[16 * i + 11] = x[11];\n values[16 * i + 12] = x[12];\n values[16 * i + 13] = x[13];\n values[16 * i + 14] = x[14];\n values[16 * i + 15] = x[15];\n }\n};\n\nexport function createTypedArrayFromAccessor(tile3DAccessor, buffer, byteOffset, length) {\n const {componentType} = tile3DAccessor;\n assert(tile3DAccessor.componentType);\n const type = typeof componentType === 'string' ? GLType.fromName(componentType) : componentType;\n const size = COMPONENTS_PER_ATTRIBUTE[tile3DAccessor.type];\n const unpacker = UNPACKER[tile3DAccessor.type];\n const packer = PACKER[tile3DAccessor.type];\n\n byteOffset += tile3DAccessor.byteOffset;\n const values = GLType.createTypedArray(type, buffer, byteOffset, size * length);\n\n return {\n values,\n type,\n size,\n unpacker,\n packer\n };\n}\n"],"file":"tile-3d-accessor-utils.js"}