@loaders.gl/3d-tiles 3.3.0-alpha.1 → 3.3.0-alpha.11

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 (166) hide show
  1. package/dist/dist.min.js +1103 -1457
  2. package/dist/es5/bundle.js +0 -1
  3. package/dist/es5/bundle.js.map +1 -1
  4. package/dist/es5/cesium-ion-loader.js +7 -26
  5. package/dist/es5/cesium-ion-loader.js.map +1 -1
  6. package/dist/es5/index.js +14 -23
  7. package/dist/es5/index.js.map +1 -1
  8. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js +1 -5
  9. package/dist/es5/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  10. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js +1 -40
  11. package/dist/es5/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  12. package/dist/es5/lib/classes/tile-3d-batch-table.js +12 -59
  13. package/dist/es5/lib/classes/tile-3d-batch-table.js.map +1 -1
  14. package/dist/es5/lib/classes/tile-3d-feature-table.js +4 -23
  15. package/dist/es5/lib/classes/tile-3d-feature-table.js.map +1 -1
  16. package/dist/es5/lib/constants.js +3 -1
  17. package/dist/es5/lib/constants.js.map +1 -1
  18. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js +7 -16
  19. package/dist/es5/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  20. package/dist/es5/lib/encoders/encode-3d-tile-composite.js +2 -11
  21. package/dist/es5/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  22. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js +10 -17
  23. package/dist/es5/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  24. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js +8 -16
  25. package/dist/es5/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  26. package/dist/es5/lib/encoders/encode-3d-tile.js +0 -12
  27. package/dist/es5/lib/encoders/encode-3d-tile.js.map +1 -1
  28. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js +6 -9
  29. package/dist/es5/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  30. package/dist/es5/lib/ion/ion.js +5 -46
  31. package/dist/es5/lib/ion/ion.js.map +1 -1
  32. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js +2 -11
  33. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  34. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -8
  35. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  36. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js +0 -5
  37. package/dist/es5/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  38. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js +19 -51
  39. package/dist/es5/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  40. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -25
  41. package/dist/es5/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  42. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js +1 -1
  43. package/dist/es5/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  44. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js +40 -49
  45. package/dist/es5/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  46. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js +6 -14
  47. package/dist/es5/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  48. package/dist/es5/lib/parsers/helpers/parse-utils.js +1 -3
  49. package/dist/es5/lib/parsers/helpers/parse-utils.js.map +1 -1
  50. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js +0 -16
  51. package/dist/es5/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  52. package/dist/es5/lib/parsers/parse-3d-tile-composite.js +1 -11
  53. package/dist/es5/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  54. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js +0 -8
  55. package/dist/es5/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  56. package/dist/es5/lib/parsers/parse-3d-tile-header.js +127 -111
  57. package/dist/es5/lib/parsers/parse-3d-tile-header.js.map +1 -1
  58. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js +5 -41
  59. package/dist/es5/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  60. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js +4 -71
  61. package/dist/es5/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  62. package/dist/es5/lib/parsers/parse-3d-tile.js +5 -28
  63. package/dist/es5/lib/parsers/parse-3d-tile.js.map +1 -1
  64. package/dist/es5/lib/utils/version.js +1 -1
  65. package/dist/es5/lib/utils/version.js.map +1 -1
  66. package/dist/es5/tile-3d-subtree-loader.js +0 -4
  67. package/dist/es5/tile-3d-subtree-loader.js.map +1 -1
  68. package/dist/es5/tile-3d-writer.js +0 -6
  69. package/dist/es5/tile-3d-writer.js.map +1 -1
  70. package/dist/es5/tiles-3d-loader.js +5 -55
  71. package/dist/es5/tiles-3d-loader.js.map +1 -1
  72. package/dist/es5/types.js.map +1 -1
  73. package/dist/esm/bundle.js +1 -1
  74. package/dist/esm/bundle.js.map +1 -1
  75. package/dist/esm/cesium-ion-loader.js +9 -7
  76. package/dist/esm/cesium-ion-loader.js.map +1 -1
  77. package/dist/esm/index.js +4 -0
  78. package/dist/esm/index.js.map +1 -1
  79. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js +1 -0
  80. package/dist/esm/lib/classes/helpers/tile-3d-accessor-utils.js.map +1 -1
  81. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js +3 -40
  82. package/dist/esm/lib/classes/tile-3d-batch-table-hierarchy.js.map +1 -1
  83. package/dist/esm/lib/classes/tile-3d-batch-table.js +7 -67
  84. package/dist/esm/lib/classes/tile-3d-batch-table.js.map +1 -1
  85. package/dist/esm/lib/classes/tile-3d-feature-table.js +5 -26
  86. package/dist/esm/lib/classes/tile-3d-feature-table.js.map +1 -1
  87. package/dist/esm/lib/constants.js +3 -0
  88. package/dist/esm/lib/constants.js.map +1 -1
  89. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js +5 -3
  90. package/dist/esm/lib/encoders/encode-3d-tile-batched-model.js.map +1 -1
  91. package/dist/esm/lib/encoders/encode-3d-tile-composite.js +2 -2
  92. package/dist/esm/lib/encoders/encode-3d-tile-composite.js.map +1 -1
  93. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js +5 -1
  94. package/dist/esm/lib/encoders/encode-3d-tile-instanced-model.js.map +1 -1
  95. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js +4 -1
  96. package/dist/esm/lib/encoders/encode-3d-tile-point-cloud.js.map +1 -1
  97. package/dist/esm/lib/encoders/encode-3d-tile.js +2 -6
  98. package/dist/esm/lib/encoders/encode-3d-tile.js.map +1 -1
  99. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js +3 -3
  100. package/dist/esm/lib/encoders/helpers/encode-3d-tile-header.js.map +1 -1
  101. package/dist/esm/lib/ion/ion.js +10 -8
  102. package/dist/esm/lib/ion/ion.js.map +1 -1
  103. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js +1 -6
  104. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-colors.js.map +1 -1
  105. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js +0 -4
  106. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-normals.js.map +1 -1
  107. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js +1 -2
  108. package/dist/esm/lib/parsers/helpers/normalize-3d-tile-positions.js.map +1 -1
  109. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js +4 -16
  110. package/dist/esm/lib/parsers/helpers/parse-3d-implicit-tiles.js.map +1 -1
  111. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js +6 -9
  112. package/dist/esm/lib/parsers/helpers/parse-3d-tile-gltf-view.js.map +1 -1
  113. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js +5 -2
  114. package/dist/esm/lib/parsers/helpers/parse-3d-tile-header.js.map +1 -1
  115. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js +26 -17
  116. package/dist/esm/lib/parsers/helpers/parse-3d-tile-subtree.js.map +1 -1
  117. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js +4 -7
  118. package/dist/esm/lib/parsers/helpers/parse-3d-tile-tables.js.map +1 -1
  119. package/dist/esm/lib/parsers/helpers/parse-utils.js +6 -1
  120. package/dist/esm/lib/parsers/helpers/parse-utils.js.map +1 -1
  121. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js +3 -4
  122. package/dist/esm/lib/parsers/parse-3d-tile-batched-model.js.map +1 -1
  123. package/dist/esm/lib/parsers/parse-3d-tile-composite.js +5 -1
  124. package/dist/esm/lib/parsers/parse-3d-tile-composite.js.map +1 -1
  125. package/dist/esm/lib/parsers/parse-3d-tile-gltf.js.map +1 -1
  126. package/dist/esm/lib/parsers/parse-3d-tile-header.js +35 -40
  127. package/dist/esm/lib/parsers/parse-3d-tile-header.js.map +1 -1
  128. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js +7 -25
  129. package/dist/esm/lib/parsers/parse-3d-tile-instanced-model.js.map +1 -1
  130. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js +9 -37
  131. package/dist/esm/lib/parsers/parse-3d-tile-point-cloud.js.map +1 -1
  132. package/dist/esm/lib/parsers/parse-3d-tile.js +8 -6
  133. package/dist/esm/lib/parsers/parse-3d-tile.js.map +1 -1
  134. package/dist/esm/lib/utils/version.js +2 -1
  135. package/dist/esm/lib/utils/version.js.map +1 -1
  136. package/dist/esm/tile-3d-subtree-loader.js +1 -0
  137. package/dist/esm/tile-3d-subtree-loader.js.map +1 -1
  138. package/dist/esm/tile-3d-writer.js +1 -1
  139. package/dist/esm/tile-3d-writer.js.map +1 -1
  140. package/dist/esm/tiles-3d-loader.js +3 -17
  141. package/dist/esm/tiles-3d-loader.js.map +1 -1
  142. package/dist/esm/types.js.map +1 -1
  143. package/dist/index.d.ts +1 -1
  144. package/dist/index.d.ts.map +1 -1
  145. package/dist/lib/classes/helpers/tile-3d-accessor-utils.d.ts +1 -1
  146. package/dist/lib/classes/tile-3d-batch-table.d.ts +1 -1
  147. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.d.ts.map +1 -1
  148. package/dist/lib/parsers/helpers/parse-3d-implicit-tiles.js +2 -13
  149. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts +2 -1
  150. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.d.ts.map +1 -1
  151. package/dist/lib/parsers/helpers/parse-3d-tile-subtree.js +36 -7
  152. package/dist/lib/parsers/parse-3d-tile-batched-model.js +1 -1
  153. package/dist/lib/parsers/parse-3d-tile-header.d.ts +5 -4
  154. package/dist/lib/parsers/parse-3d-tile-header.d.ts.map +1 -1
  155. package/dist/lib/parsers/parse-3d-tile-header.js +37 -18
  156. package/dist/tiles-3d-loader.d.ts.map +1 -1
  157. package/dist/tiles-3d-loader.js +1 -8
  158. package/dist/types.d.ts +26 -13
  159. package/dist/types.d.ts.map +1 -1
  160. package/package.json +7 -7
  161. package/src/index.ts +1 -1
  162. package/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts +2 -14
  163. package/src/lib/parsers/helpers/parse-3d-tile-subtree.ts +50 -7
  164. package/src/lib/parsers/parse-3d-tile-header.ts +59 -21
  165. package/src/tiles-3d-loader.ts +2 -16
  166. package/src/types.ts +18 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/parsers/parse-3d-tile.ts"],"names":["TILE3D_TYPE","getMagicString","parsePointCloud3DTile","parseBatchedModel3DTile","parseInstancedModel3DTile","parseComposite3DTile","parseGltf3DTile","parse3DTile","arrayBuffer","byteOffset","options","context","tile","type","COMPOSITE","BATCHED_3D_MODEL","GLTF","INSTANCED_3D_MODEL","POINT_CLOUD","Error"],"mappings":"AAGA,SAAQA,WAAR,QAA0B,cAA1B;AACA,SAAQC,cAAR,QAA6B,uBAA7B;AAEA,SAAQC,qBAAR,QAAoC,6BAApC;AACA,SAAQC,uBAAR,QAAsC,+BAAtC;AACA,SAAQC,yBAAR,QAAwC,iCAAxC;AACA,SAAQC,oBAAR,QAAmC,2BAAnC;AACA,SAAQC,eAAR,QAA8B,sBAA9B;AAGA,OAAO,eAAeC,WAAf,CAA2BC,WAA3B,EAAwCC,UAAU,GAAG,CAArD,EAAwDC,OAAxD,EAAiEC,OAAjE,EAA0EC,IAAI,GAAG,EAAjF,EAAqF;AAE1FA,EAAAA,IAAI,CAACH,UAAL,GAAkBA,UAAlB;AAEAG,EAAAA,IAAI,CAACC,IAAL,GAAYZ,cAAc,CAACO,WAAD,EAAcC,UAAd,CAA1B;;AAGA,UAAQG,IAAI,CAACC,IAAb;AACE,SAAKb,WAAW,CAACc,SAAjB;AAEE,aAAO,MAAMT,oBAAoB,CAC/BO,IAD+B,EAE/BJ,WAF+B,EAG/BC,UAH+B,EAI/BC,OAJ+B,EAK/BC,OAL+B,EAM/BJ,WAN+B,CAAjC;;AASF,SAAKP,WAAW,CAACe,gBAAjB;AACE,aAAO,MAAMZ,uBAAuB,CAACS,IAAD,EAAOJ,WAAP,EAAoBC,UAApB,EAAgCC,OAAhC,EAAyCC,OAAzC,CAApC;;AAEF,SAAKX,WAAW,CAACgB,IAAjB;AACE,aAAO,MAAMV,eAAe,CAACM,IAAD,EAAOJ,WAAP,EAAoBE,OAApB,EAA6BC,OAA7B,CAA5B;;AAEF,SAAKX,WAAW,CAACiB,kBAAjB;AACE,aAAO,MAAMb,yBAAyB,CAACQ,IAAD,EAAOJ,WAAP,EAAoBC,UAApB,EAAgCC,OAAhC,EAAyCC,OAAzC,CAAtC;;AAEF,SAAKX,WAAW,CAACkB,WAAjB;AACE,aAAO,MAAMhB,qBAAqB,CAACU,IAAD,EAAOJ,WAAP,EAAoBC,UAApB,EAAgCC,OAAhC,EAAyCC,OAAzC,CAAlC;;AAEF;AAEE,YAAM,IAAIQ,KAAJ,sCAAwCP,IAAI,CAACC,IAA7C,EAAN;AA1BJ;AA4BD","sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_TYPE} from '../constants';\nimport {getMagicString} from './helpers/parse-utils';\n\nimport {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';\nimport {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';\nimport {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';\nimport {parseComposite3DTile} from './parse-3d-tile-composite';\nimport {parseGltf3DTile} from './parse-3d-tile-gltf';\n\n// Extracts\nexport async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {\n // @ts-expect-error\n tile.byteOffset = byteOffset;\n // @ts-expect-error\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n // @ts-expect-error\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n // Note: We pass this function as argument so that embedded tiles can be parsed recursively\n return await parseComposite3DTile(\n tile,\n arrayBuffer,\n byteOffset,\n options,\n context,\n parse3DTile\n );\n\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.GLTF:\n return await parseGltf3DTile(tile, arrayBuffer, options, context);\n\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.POINT_CLOUD:\n return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n default:\n // @ts-expect-error\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"file":"parse-3d-tile.js"}
1
+ {"version":3,"file":"parse-3d-tile.js","names":["TILE3D_TYPE","getMagicString","parsePointCloud3DTile","parseBatchedModel3DTile","parseInstancedModel3DTile","parseComposite3DTile","parseGltf3DTile","parse3DTile","arrayBuffer","byteOffset","options","context","tile","type","COMPOSITE","BATCHED_3D_MODEL","GLTF","INSTANCED_3D_MODEL","POINT_CLOUD","Error"],"sources":["../../../../src/lib/parsers/parse-3d-tile.ts"],"sourcesContent":["// This file is derived from the Cesium code base under Apache 2 license\n// See LICENSE.md and https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md\n\nimport {TILE3D_TYPE} from '../constants';\nimport {getMagicString} from './helpers/parse-utils';\n\nimport {parsePointCloud3DTile} from './parse-3d-tile-point-cloud';\nimport {parseBatchedModel3DTile} from './parse-3d-tile-batched-model';\nimport {parseInstancedModel3DTile} from './parse-3d-tile-instanced-model';\nimport {parseComposite3DTile} from './parse-3d-tile-composite';\nimport {parseGltf3DTile} from './parse-3d-tile-gltf';\n\n// Extracts\nexport async function parse3DTile(arrayBuffer, byteOffset = 0, options, context, tile = {}) {\n // @ts-expect-error\n tile.byteOffset = byteOffset;\n // @ts-expect-error\n tile.type = getMagicString(arrayBuffer, byteOffset);\n\n // @ts-expect-error\n switch (tile.type) {\n case TILE3D_TYPE.COMPOSITE:\n // Note: We pass this function as argument so that embedded tiles can be parsed recursively\n return await parseComposite3DTile(\n tile,\n arrayBuffer,\n byteOffset,\n options,\n context,\n parse3DTile\n );\n\n case TILE3D_TYPE.BATCHED_3D_MODEL:\n return await parseBatchedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.GLTF:\n return await parseGltf3DTile(tile, arrayBuffer, options, context);\n\n case TILE3D_TYPE.INSTANCED_3D_MODEL:\n return await parseInstancedModel3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n case TILE3D_TYPE.POINT_CLOUD:\n return await parsePointCloud3DTile(tile, arrayBuffer, byteOffset, options, context);\n\n default:\n // @ts-expect-error\n throw new Error(`3DTileLoader: unknown type ${tile.type}`); // eslint-disable-line\n }\n}\n"],"mappings":";;AAGA,SAAQA,WAAW,QAAO,cAAc;AACxC,SAAQC,cAAc,QAAO,uBAAuB;AAEpD,SAAQC,qBAAqB,QAAO,6BAA6B;AACjE,SAAQC,uBAAuB,QAAO,+BAA+B;AACrE,SAAQC,yBAAyB,QAAO,iCAAiC;AACzE,SAAQC,oBAAoB,QAAO,2BAA2B;AAC9D,SAAQC,eAAe,QAAO,sBAAsB;;AAGpD,OAAO,eAAeC,WAAW,CAACC,WAAW,EAA+C;EAAA,IAA7CC,UAAU,uEAAG,CAAC;EAAA,IAAEC,OAAO;EAAA,IAAEC,OAAO;EAAA,IAAEC,IAAI,uEAAG,CAAC,CAAC;EAExFA,IAAI,CAACH,UAAU,GAAGA,UAAU;EAE5BG,IAAI,CAACC,IAAI,GAAGZ,cAAc,CAACO,WAAW,EAAEC,UAAU,CAAC;;EAGnD,QAAQG,IAAI,CAACC,IAAI;IACf,KAAKb,WAAW,CAACc,SAAS;MAExB,OAAO,MAAMT,oBAAoB,CAC/BO,IAAI,EACJJ,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,OAAO,EACPJ,WAAW,CACZ;IAEH,KAAKP,WAAW,CAACe,gBAAgB;MAC/B,OAAO,MAAMZ,uBAAuB,CAACS,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;IAEvF,KAAKX,WAAW,CAACgB,IAAI;MACnB,OAAO,MAAMV,eAAe,CAACM,IAAI,EAAEJ,WAAW,EAAEE,OAAO,EAAEC,OAAO,CAAC;IAEnE,KAAKX,WAAW,CAACiB,kBAAkB;MACjC,OAAO,MAAMb,yBAAyB,CAACQ,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;IAEzF,KAAKX,WAAW,CAACkB,WAAW;MAC1B,OAAO,MAAMhB,qBAAqB,CAACU,IAAI,EAAEJ,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAEC,OAAO,CAAC;IAErF;MAEE,MAAM,IAAIQ,KAAK,sCAA+BP,IAAI,CAACC,IAAI,EAAG;EAAC;AAEjE"}
@@ -1,2 +1,3 @@
1
- export const VERSION = typeof "3.3.0-alpha.1" !== 'undefined' ? "3.3.0-alpha.1" : 'latest';
1
+
2
+ export const VERSION = typeof "3.3.0-alpha.11" !== 'undefined' ? "3.3.0-alpha.11" : 'latest';
2
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/utils/version.ts"],"names":["VERSION"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE","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"],"file":"version.js"}
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,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ"}
@@ -1,5 +1,6 @@
1
1
  import parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';
2
2
  import { VERSION } from './lib/utils/version';
3
+
3
4
  export const Tile3DSubtreeLoader = {
4
5
  id: '3d-tiles-subtree',
5
6
  name: '3D Tiles Subtree',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tile-3d-subtree-loader.ts"],"names":["parse3DTilesSubtree","VERSION","Tile3DSubtreeLoader","id","name","module","version","extensions","mimeTypes","tests","parse","options"],"mappings":"AACA,OAAOA,mBAAP,MAAgC,6CAAhC;AACA,SAAQC,OAAR,QAAsB,qBAAtB;AAMA,OAAO,MAAMC,mBAAqC,GAAG;AACnDC,EAAAA,EAAE,EAAE,kBAD+C;AAEnDC,EAAAA,IAAI,EAAE,kBAF6C;AAGnDC,EAAAA,MAAM,EAAE,UAH2C;AAInDC,EAAAA,OAAO,EAAEL,OAJ0C;AAKnDM,EAAAA,UAAU,EAAE,CAAC,SAAD,CALuC;AAMnDC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANwC;AAOnDC,EAAAA,KAAK,EAAE,CAAC,SAAD,CAP4C;AAQnDC,EAAAA,KAAK,EAAEV,mBAR4C;AASnDW,EAAAA,OAAO,EAAE;AAT0C,CAA9C","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';\nimport {VERSION} from './lib/utils/version';\n\n/**\n * Loader for 3D Tiles Subtree\n *\n */\nexport const Tile3DSubtreeLoader: LoaderWithParser = {\n id: '3d-tiles-subtree',\n name: '3D Tiles Subtree',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['subtree'],\n mimeTypes: ['application/octet-stream'],\n tests: ['subtree'],\n parse: parse3DTilesSubtree,\n options: {}\n};\n"],"file":"tile-3d-subtree-loader.js"}
1
+ {"version":3,"file":"tile-3d-subtree-loader.js","names":["parse3DTilesSubtree","VERSION","Tile3DSubtreeLoader","id","name","module","version","extensions","mimeTypes","tests","parse","options"],"sources":["../../src/tile-3d-subtree-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport parse3DTilesSubtree from './lib/parsers/helpers/parse-3d-tile-subtree';\nimport {VERSION} from './lib/utils/version';\n\n/**\n * Loader for 3D Tiles Subtree\n *\n */\nexport const Tile3DSubtreeLoader: LoaderWithParser = {\n id: '3d-tiles-subtree',\n name: '3D Tiles Subtree',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['subtree'],\n mimeTypes: ['application/octet-stream'],\n tests: ['subtree'],\n parse: parse3DTilesSubtree,\n options: {}\n};\n"],"mappings":"AACA,OAAOA,mBAAmB,MAAM,6CAA6C;AAC7E,SAAQC,OAAO,QAAO,qBAAqB;;AAM3C,OAAO,MAAMC,mBAAqC,GAAG;EACnDC,EAAE,EAAE,kBAAkB;EACtBC,IAAI,EAAE,kBAAkB;EACxBC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,KAAK,EAAE,CAAC,SAAS,CAAC;EAClBC,KAAK,EAAEV,mBAAmB;EAC1BW,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { VERSION } from './lib/utils/version';
2
2
  import encode3DTile from './lib/encoders/encode-3d-tile';
3
+
3
4
  export const Tile3DWriter = {
4
5
  name: '3D Tile',
5
6
  id: '3d-tiles',
@@ -13,7 +14,6 @@ export const Tile3DWriter = {
13
14
  ['3d-tiles']: {}
14
15
  }
15
16
  };
16
-
17
17
  function encodeSync(tile, options) {
18
18
  return encode3DTile(tile, options);
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tile-3d-writer.ts"],"names":["VERSION","encode3DTile","Tile3DWriter","name","id","module","version","extensions","mimeTypes","encodeSync","binary","options","tile"],"mappings":"AACA,SAAQA,OAAR,QAAsB,qBAAtB;AACA,OAAOC,YAAP,MAAyB,+BAAzB;AAKA,OAAO,MAAMC,YAAoB,GAAG;AAClCC,EAAAA,IAAI,EAAE,SAD4B;AAElCC,EAAAA,EAAE,EAAE,UAF8B;AAGlCC,EAAAA,MAAM,EAAE,UAH0B;AAIlCC,EAAAA,OAAO,EAAEN,OAJyB;AAKlCO,EAAAA,UAAU,EAAE,CAAC,MAAD,EAAS,MAAT,EAAiB,MAAjB,EAAyB,MAAzB,CALsB;AAMlCC,EAAAA,SAAS,EAAE,CAAC,0BAAD,CANuB;AAOlCC,EAAAA,UAPkC;AAQlCC,EAAAA,MAAM,EAAE,IAR0B;AASlCC,EAAAA,OAAO,EAAE;AACP,KAAC,UAAD,GAAc;AADP;AATyB,CAA7B;;AAcP,SAASF,UAAT,CAAoBG,IAApB,EAA0BD,OAA1B,EAAmC;AACjC,SAAOV,YAAY,CAACW,IAAD,EAAOD,OAAP,CAAnB;AACD","sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport encode3DTile from './lib/encoders/encode-3d-tile';\n\n/**\n * Exporter for 3D Tiles\n */\nexport const Tile3DWriter: Writer = {\n name: '3D Tile',\n id: '3d-tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n encodeSync,\n binary: true,\n options: {\n ['3d-tiles']: {}\n }\n};\n\nfunction encodeSync(tile, options) {\n return encode3DTile(tile, options);\n}\n"],"file":"tile-3d-writer.js"}
1
+ {"version":3,"file":"tile-3d-writer.js","names":["VERSION","encode3DTile","Tile3DWriter","name","id","module","version","extensions","mimeTypes","encodeSync","binary","options","tile"],"sources":["../../src/tile-3d-writer.ts"],"sourcesContent":["import type {Writer} from '@loaders.gl/loader-utils';\nimport {VERSION} from './lib/utils/version';\nimport encode3DTile from './lib/encoders/encode-3d-tile';\n\n/**\n * Exporter for 3D Tiles\n */\nexport const Tile3DWriter: Writer = {\n name: '3D Tile',\n id: '3d-tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n encodeSync,\n binary: true,\n options: {\n ['3d-tiles']: {}\n }\n};\n\nfunction encodeSync(tile, options) {\n return encode3DTile(tile, options);\n}\n"],"mappings":"AACA,SAAQA,OAAO,QAAO,qBAAqB;AAC3C,OAAOC,YAAY,MAAM,+BAA+B;;AAKxD,OAAO,MAAMC,YAAoB,GAAG;EAClCC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,UAAU;EACdC,MAAM,EAAE,UAAU;EAClBC,OAAO,EAAEN,OAAO;EAChBO,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;EAC5CC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,UAAU;EACVC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;IACP,CAAC,UAAU,GAAG,CAAC;EACjB;AACF,CAAC;AAED,SAASF,UAAU,CAACG,IAAI,EAAED,OAAO,EAAE;EACjC,OAAOV,YAAY,CAACW,IAAI,EAAED,OAAO,CAAC;AACpC"}
@@ -2,8 +2,8 @@ import { path } from '@loaders.gl/loader-utils';
2
2
  import { TILESET_TYPE, LOD_METRIC_TYPE } from '@loaders.gl/tiles';
3
3
  import { VERSION } from './lib/utils/version';
4
4
  import { parse3DTile } from './lib/parsers/parse-3d-tile';
5
- import { normalizeTileHeaders, normalizeImplicitTileHeaders } from './lib/parsers/parse-3d-tile-header';
6
- const IMPLICIT_TILING_EXTENSION_NAME = '3DTILES_implicit_tiling';
5
+ import { normalizeTileHeaders } from './lib/parsers/parse-3d-tile-header';
6
+
7
7
  export const Tiles3DLoader = {
8
8
  id: '3d-tiles',
9
9
  name: '3D Tiles',
@@ -22,11 +22,9 @@ export const Tiles3DLoader = {
22
22
  }
23
23
  }
24
24
  };
25
-
26
25
  function getBaseUri(tileset) {
27
26
  return path.dirname(tileset.url);
28
27
  }
29
-
30
28
  async function parseTile(arrayBuffer, options, context) {
31
29
  const tile = {
32
30
  content: {
@@ -37,43 +35,31 @@ async function parseTile(arrayBuffer, options, context) {
37
35
  await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);
38
36
  return tile.content;
39
37
  }
40
-
41
38
  async function parseTileset(data, options, context) {
42
39
  var _tilesetJson$root;
43
-
44
40
  const tilesetJson = JSON.parse(new TextDecoder().decode(data));
45
41
  tilesetJson.loader = options.loader || Tiles3DLoader;
46
42
  tilesetJson.url = context.url;
47
43
  tilesetJson.basePath = getBaseUri(tilesetJson);
48
- tilesetJson.root = hasImplicitTilingExtension(tilesetJson) ? await normalizeImplicitTileHeaders(tilesetJson) : normalizeTileHeaders(tilesetJson);
44
+ tilesetJson.root = await normalizeTileHeaders(tilesetJson, options);
49
45
  tilesetJson.type = TILESET_TYPE.TILES3D;
50
46
  tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;
51
47
  tilesetJson.lodMetricValue = ((_tilesetJson$root = tilesetJson.root) === null || _tilesetJson$root === void 0 ? void 0 : _tilesetJson$root.lodMetricValue) || 0;
52
48
  return tilesetJson;
53
49
  }
54
-
55
50
  async function parse(data, options, context) {
56
51
  const loaderOptions = options['3d-tiles'] || {};
57
52
  let isTileset;
58
-
59
53
  if (loaderOptions.isTileset === 'auto') {
60
54
  isTileset = context.url && context.url.indexOf('.json') !== -1;
61
55
  } else {
62
56
  isTileset = loaderOptions.isTileset;
63
57
  }
64
-
65
58
  if (isTileset) {
66
59
  data = await parseTileset(data, options, context);
67
60
  } else {
68
61
  data = await parseTile(data, options, context);
69
62
  }
70
-
71
63
  return data;
72
64
  }
73
-
74
- function hasImplicitTilingExtension(tilesetJson) {
75
- var _tilesetJson$extensio, _tilesetJson$extensio2;
76
-
77
- return (tilesetJson === null || tilesetJson === void 0 ? void 0 : (_tilesetJson$extensio = tilesetJson.extensionsRequired) === null || _tilesetJson$extensio === void 0 ? void 0 : _tilesetJson$extensio.includes(IMPLICIT_TILING_EXTENSION_NAME)) && (tilesetJson === null || tilesetJson === void 0 ? void 0 : (_tilesetJson$extensio2 = tilesetJson.extensionsUsed) === null || _tilesetJson$extensio2 === void 0 ? void 0 : _tilesetJson$extensio2.includes(IMPLICIT_TILING_EXTENSION_NAME));
78
- }
79
65
  //# sourceMappingURL=tiles-3d-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tiles-3d-loader.ts"],"names":["path","TILESET_TYPE","LOD_METRIC_TYPE","VERSION","parse3DTile","normalizeTileHeaders","normalizeImplicitTileHeaders","IMPLICIT_TILING_EXTENSION_NAME","Tiles3DLoader","id","name","module","version","extensions","mimeTypes","tests","parse","options","loadGLTF","decodeQuantizedPositions","isTileset","assetGltfUpAxis","getBaseUri","tileset","dirname","url","parseTile","arrayBuffer","context","tile","content","featureIds","byteOffset","parseTileset","data","tilesetJson","JSON","TextDecoder","decode","loader","basePath","root","hasImplicitTilingExtension","type","TILES3D","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","loaderOptions","indexOf","extensionsRequired","includes","extensionsUsed"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {path} from '@loaders.gl/loader-utils';\nimport {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';\nimport {VERSION} from './lib/utils/version';\nimport {parse3DTile} from './lib/parsers/parse-3d-tile';\nimport {\n normalizeTileHeaders,\n normalizeImplicitTileHeaders\n} from './lib/parsers/parse-3d-tile-header';\n\nconst IMPLICIT_TILING_EXTENSION_NAME = '3DTILES_implicit_tiling';\n\n/**\n * Loader for 3D Tiles\n */\nexport const Tiles3DLoader: LoaderWithParser = {\n id: '3d-tiles',\n name: '3D Tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n tests: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n parse,\n options: {\n '3d-tiles': {\n loadGLTF: true,\n decodeQuantizedPositions: false,\n isTileset: 'auto',\n assetGltfUpAxis: null\n }\n }\n};\n\nfunction getBaseUri(tileset) {\n return path.dirname(tileset.url);\n}\n\nasync function parseTile(arrayBuffer, options, context) {\n const tile = {\n content: {\n featureIds: null\n }\n };\n const byteOffset = 0;\n await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);\n return tile.content;\n}\n\nasync function parseTileset(data, options, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = options.loader || Tiles3DLoader;\n tilesetJson.url = context.url;\n // base path that non-absolute paths in tileset are relative to.\n tilesetJson.basePath = getBaseUri(tilesetJson);\n tilesetJson.root = hasImplicitTilingExtension(tilesetJson)\n ? await normalizeImplicitTileHeaders(tilesetJson)\n : normalizeTileHeaders(tilesetJson);\n\n tilesetJson.type = TILESET_TYPE.TILES3D;\n\n tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tilesetJson.lodMetricValue = tilesetJson.root?.lodMetricValue || 0;\n\n return tilesetJson;\n}\n\nasync function parse(data, options, context) {\n // auto detect file type\n const loaderOptions = options['3d-tiles'] || {};\n let isTileset;\n if (loaderOptions.isTileset === 'auto') {\n isTileset = context.url && context.url.indexOf('.json') !== -1;\n } else {\n isTileset = loaderOptions.isTileset;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else {\n data = await parseTile(data, options, context);\n }\n\n return data;\n}\n\nfunction hasImplicitTilingExtension(tilesetJson) {\n return (\n tilesetJson?.extensionsRequired?.includes(IMPLICIT_TILING_EXTENSION_NAME) &&\n tilesetJson?.extensionsUsed?.includes(IMPLICIT_TILING_EXTENSION_NAME)\n );\n}\n"],"file":"tiles-3d-loader.js"}
1
+ {"version":3,"file":"tiles-3d-loader.js","names":["path","TILESET_TYPE","LOD_METRIC_TYPE","VERSION","parse3DTile","normalizeTileHeaders","Tiles3DLoader","id","name","module","version","extensions","mimeTypes","tests","parse","options","loadGLTF","decodeQuantizedPositions","isTileset","assetGltfUpAxis","getBaseUri","tileset","dirname","url","parseTile","arrayBuffer","context","tile","content","featureIds","byteOffset","parseTileset","data","tilesetJson","JSON","TextDecoder","decode","loader","basePath","root","type","TILES3D","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","loaderOptions","indexOf"],"sources":["../../src/tiles-3d-loader.ts"],"sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {path} from '@loaders.gl/loader-utils';\nimport {TILESET_TYPE, LOD_METRIC_TYPE} from '@loaders.gl/tiles';\nimport {VERSION} from './lib/utils/version';\nimport {parse3DTile} from './lib/parsers/parse-3d-tile';\nimport {normalizeTileHeaders} from './lib/parsers/parse-3d-tile-header';\n\n/**\n * Loader for 3D Tiles\n */\nexport const Tiles3DLoader: LoaderWithParser = {\n id: '3d-tiles',\n name: '3D Tiles',\n module: '3d-tiles',\n version: VERSION,\n extensions: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n mimeTypes: ['application/octet-stream'],\n tests: ['cmpt', 'pnts', 'b3dm', 'i3dm'],\n parse,\n options: {\n '3d-tiles': {\n loadGLTF: true,\n decodeQuantizedPositions: false,\n isTileset: 'auto',\n assetGltfUpAxis: null\n }\n }\n};\n\nfunction getBaseUri(tileset) {\n return path.dirname(tileset.url);\n}\n\nasync function parseTile(arrayBuffer, options, context) {\n const tile = {\n content: {\n featureIds: null\n }\n };\n const byteOffset = 0;\n await parse3DTile(arrayBuffer, byteOffset, options, context, tile.content);\n return tile.content;\n}\n\nasync function parseTileset(data, options, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = options.loader || Tiles3DLoader;\n tilesetJson.url = context.url;\n // base path that non-absolute paths in tileset are relative to.\n tilesetJson.basePath = getBaseUri(tilesetJson);\n tilesetJson.root = await normalizeTileHeaders(tilesetJson, options);\n\n tilesetJson.type = TILESET_TYPE.TILES3D;\n\n tilesetJson.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tilesetJson.lodMetricValue = tilesetJson.root?.lodMetricValue || 0;\n\n return tilesetJson;\n}\n\nasync function parse(data, options, context) {\n // auto detect file type\n const loaderOptions = options['3d-tiles'] || {};\n let isTileset;\n if (loaderOptions.isTileset === 'auto') {\n isTileset = context.url && context.url.indexOf('.json') !== -1;\n } else {\n isTileset = loaderOptions.isTileset;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else {\n data = await parseTile(data, options, context);\n }\n\n return data;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"types.js"}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/types.ts"],"sourcesContent":["import type {GLTFPostprocessed} from '@loaders.gl/gltf';\nimport {Matrix4, Vector3} from '@math.gl/core';\n\nexport type FeatureTableJson = {\n [key: string]: any[];\n};\n\nexport type B3DMContent = {\n batchTableJson?: FeatureTableJson;\n byteLength: number;\n byteOffset: number;\n cartesianModelMatrix: Matrix4;\n cartesianOrigin: Vector3;\n cartographicModelMatrix: Matrix4;\n cartographicOrigin: Vector3;\n featureIds?: number[] | null;\n featureTableBinary?: Uint8Array;\n featureTableJson?: FeatureTableJson;\n gltf?: GLTFPostprocessed;\n gltfUpAxis: string;\n header: GLTFHeader;\n magic: number;\n modelMatrix: Matrix4;\n rotateYtoZ: boolean;\n rtcCenter: [number, number, number];\n type: string;\n version: number;\n};\n\nexport type GLTFHeader = {\n batchLength?: number;\n batchTableBinaryByteLength: number;\n batchTableJsonByteLength: number;\n featureTableBinaryByteLength: number;\n featureTableJsonByteLength: number;\n};\n\nexport type Node3D = {\n boundingVolume: BoundingVolume;\n children: any;\n geometricError: number;\n content?: {\n uri: string;\n boundingVolume: BoundingVolume;\n };\n};\n\nexport type BoundingVolume = {\n box?: number[];\n sphere?: number[];\n region?: number[];\n};\n\n/**\n * 3DTILES_implicit_tiling types\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format\n */\nexport type Subtree = {\n buffers: Buffer[];\n bufferViews: BufferView[];\n tileAvailability: Availability;\n contentAvailability: Availability;\n childSubtreeAvailability: Availability;\n};\n\nexport type Availability = {\n constant?: 0 | 1;\n bufferView?: number;\n // Internal bitstream type\n explicitBitstream?: ExplicitBitstream;\n};\n\nexport type ExplicitBitstream = Uint8Array;\n\n/**\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-scheme\n */\nexport type SubdivisionScheme = 'QUADTREE' | 'OCTREE';\n\ntype Buffer = {\n name: string;\n uri?: string;\n byteLength: number;\n};\n\ntype BufferView = {\n buffer: number;\n byteOffset: number;\n byteLength: number;\n};\n\n/**\n * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n */\nexport type ImplicitTilingExtension = {\n subdivisionScheme: 'QUADTREE' | 'OCTREE';\n maximumLevel?: number;\n availableLevels: number;\n subtreeLevels: number;\n subtrees: SubtreeUri;\n};\n\ntype SubtreeUri = {\n uri: string;\n};\n"],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -6,5 +6,5 @@ export { default as Tile3DFeatureTable } from './lib/classes/tile-3d-feature-tab
6
6
  export { default as Tile3DBatchTable } from './lib/classes/tile-3d-batch-table';
7
7
  export { TILE3D_TYPE } from './lib/constants';
8
8
  export { getIonTilesetMetadata as _getIonTilesetMetadata } from './lib/ion/ion';
9
- export type { BatchTableJson, B3DMContent, Node3D } from './types';
9
+ export type { FeatureTableJson, B3DMContent, Node3D, ImplicitTilingExtension } from './types';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,qBAAqB,IAAI,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC9E,YAAY,EAAC,cAAc,EAAE,WAAW,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,qBAAqB,IAAI,sBAAsB,EAAC,MAAM,eAAe,CAAC;AAC9E,YAAY,EAAC,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare function createTypedArrayFromAccessor(tile3DAccessor: any, buffer: any, byteOffset: any, length: any): {
2
- values: import("@math.gl/core").TypedArray;
2
+ values: import("@math.gl/types").TypedArray;
3
3
  type: any;
4
4
  size: any;
5
5
  unpacker: any;
@@ -21,7 +21,7 @@ export default class Tile3DBatchTableParser {
21
21
  _setBinaryProperty(binaryProperty: any, index: any, value: any): void;
22
22
  _initializeBinaryProperties(): Record<string, any> | null;
23
23
  _initializeBinaryProperty(name: any, property: any): {
24
- typedArray: import("@math.gl/core").TypedArray;
24
+ typedArray: import("@math.gl/types").TypedArray;
25
25
  componentCount: any;
26
26
  unpack: any;
27
27
  pack: any;
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-implicit-tiles.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAY1E;;;;;;;;;;;GAWG;AAEH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACpF;;;;GA+HA;AA8GD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,MAAM,CAGR"}
1
+ {"version":3,"file":"parse-3d-implicit-tiles.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/helpers/parse-3d-implicit-tiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAY1E;;;;;;;;;;;GAWG;AAEH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;CACpF;;;;GAsHA;AA2GD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,GACR,MAAM,CAGR"}
@@ -49,14 +49,6 @@ async function parseImplicitTiles(params) {
49
49
  let childTileX = concatBits(parentData.x, childX);
50
50
  let childTileY = concatBits(parentData.y, childY);
51
51
  let childTileZ = concatBits(parentData.z, childZ);
52
- // TODO Remove after real implicit tileset will be tested.
53
- // Degug data
54
- // tile.level = level + globalData.level;
55
- // tile.x = concatBits(globalData.x, childTileX);
56
- // tile.y = concatBits(globalData.y, childTileY);
57
- // tile.z = concatBits(globalData.z, childTileZ);
58
- // tile.mortonIndex = childTileMortonIndex;
59
- // End of debug data
60
52
  let isChildSubtreeAvailable = false;
61
53
  if (level + 1 > subtreeLevels) {
62
54
  isChildSubtreeAvailable = getAvailabilityResult(subtree.childSubtreeAvailability, childTileMortonIndex);
@@ -143,12 +135,9 @@ function formatTileData(tile, level, childCoordinates, options) {
143
135
  type: getTileType(tile),
144
136
  lodMetricType,
145
137
  lodMetricValue,
138
+ geometricError: lodMetricValue,
139
+ transform: tile.transform,
146
140
  boundingVolume
147
- // Temp debug values. Remove when real implicit tileset will be tested.
148
- // x: tile.x,
149
- // y: tile.y,
150
- // z: tile.z,
151
- // level: tile.level
152
141
  };
153
142
  }
154
143
  /**
@@ -1,9 +1,10 @@
1
1
  import type { Subtree } from '../../../types';
2
+ import type { LoaderContext, LoaderOptions } from '@loaders.gl/loader-utils';
2
3
  /**
3
4
  * Parse subtree file
4
5
  * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format
5
6
  * @param data
6
7
  * @returns
7
8
  */
8
- export default function parse3DTilesSubtree(data: ArrayBuffer): Promise<Subtree>;
9
+ export default function parse3DTilesSubtree(data: ArrayBuffer, options: LoaderOptions | undefined, context: LoaderContext | undefined): Promise<Subtree>;
9
10
  //# sourceMappingURL=parse-3d-tile-subtree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-subtree.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/helpers/parse-3d-tile-subtree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAoB,MAAM,gBAAgB,CAAC;AAM/D;;;;;GAKG;AAEH,wBAA8B,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAoDrF"}
1
+ {"version":3,"file":"parse-3d-tile-subtree.d.ts","sourceRoot":"","sources":["../../../../src/lib/parsers/helpers/parse-3d-tile-subtree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAoB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAC,aAAa,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAK3E;;;;;GAKG;AAEH,wBAA8B,mBAAmB,CAC/C,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,OAAO,EAAE,aAAa,GAAG,SAAS,GACjC,OAAO,CAAC,OAAO,CAAC,CAuDlB"}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const core_1 = require("@loaders.gl/core");
4
3
  const SUBTREE_FILE_MAGIC = 0x74627573;
5
4
  const SUBTREE_FILE_VERSION = 1;
6
5
  /**
@@ -10,7 +9,7 @@ const SUBTREE_FILE_VERSION = 1;
10
9
  * @returns
11
10
  */
12
11
  // eslint-disable-next-line max-statements
13
- async function parse3DTilesSubtree(data) {
12
+ async function parse3DTilesSubtree(data, options, context) {
14
13
  const magic = new Uint32Array(data.slice(0, 4));
15
14
  if (magic[0] !== SUBTREE_FILE_MAGIC) {
16
15
  throw new Error('Wrong subtree file magic number');
@@ -30,30 +29,60 @@ async function parse3DTilesSubtree(data) {
30
29
  internalBinaryBuffer = data.slice(24 + jsonByteLength);
31
30
  }
32
31
  if ('bufferView' in subtree.tileAvailability) {
33
- subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'tileAvailability', internalBinaryBuffer);
32
+ subtree.tileAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'tileAvailability', internalBinaryBuffer, context);
34
33
  }
35
34
  if ('bufferView' in subtree.contentAvailability) {
36
- subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'contentAvailability', internalBinaryBuffer);
35
+ subtree.contentAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'contentAvailability', internalBinaryBuffer, context);
37
36
  }
38
37
  if ('bufferView' in subtree.childSubtreeAvailability) {
39
- subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'childSubtreeAvailability', internalBinaryBuffer);
38
+ subtree.childSubtreeAvailability.explicitBitstream = await getExplicitBitstream(subtree, 'childSubtreeAvailability', internalBinaryBuffer, context);
40
39
  }
41
40
  return subtree;
42
41
  }
43
42
  exports.default = parse3DTilesSubtree;
43
+ /**
44
+ * Get url for bitstream downloading
45
+ * @param bitstreamRelativeUri
46
+ * @param baseUri
47
+ * @returns
48
+ */
49
+ function resolveBufferUri(bitstreamRelativeUri, basePath) {
50
+ const hasProtocol = basePath.startsWith('http');
51
+ if (hasProtocol) {
52
+ const resolvedUri = new URL(bitstreamRelativeUri, basePath);
53
+ return decodeURI(resolvedUri.toString());
54
+ }
55
+ /**
56
+ * Adding http protocol only for new URL constructor usage.
57
+ * It allows to resolve relative paths like ../../example with basePath.
58
+ */
59
+ const basePathWithProtocol = `http://${basePath}`;
60
+ const resolvedUri = new URL(bitstreamRelativeUri, basePathWithProtocol);
61
+ /**
62
+ * Drop protocol and use just relative path.
63
+ */
64
+ return `/${resolvedUri.host}${resolvedUri.pathname}`;
65
+ }
44
66
  /**
45
67
  * Get explicit bitstream for subtree availability data.
46
68
  * @param subtree
47
69
  * @param name
48
70
  * @param internalBinaryBuffer
49
71
  */
50
- async function getExplicitBitstream(subtree, name, internalBinaryBuffer) {
72
+ async function getExplicitBitstream(subtree, name, internalBinaryBuffer, context) {
51
73
  const bufferViewIndex = subtree[name].bufferView;
52
74
  const bufferView = subtree.bufferViews[bufferViewIndex];
53
75
  const buffer = subtree.buffers[bufferView.buffer];
76
+ if (!context?.url || !context.fetch) {
77
+ throw new Error('Url is not provided');
78
+ }
79
+ if (!context.fetch) {
80
+ throw new Error('fetch is not provided');
81
+ }
54
82
  // External bitstream loading
55
83
  if (buffer.uri) {
56
- const response = await (0, core_1.fetchFile)(buffer.uri);
84
+ const bufferUri = resolveBufferUri(buffer.uri, context?.url);
85
+ const response = await context.fetch(bufferUri);
57
86
  const data = await response.arrayBuffer();
58
87
  // Return view of bitstream.
59
88
  return new Uint8Array(data, bufferView.byteOffset, bufferView.byteLength);
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.parseBatchedModel3DTile = void 0;
9
9
  const math_1 = require("@loaders.gl/math"); // math.gl/geometry;
10
10
  const tile_3d_feature_table_1 = __importDefault(require("../classes/tile-3d-feature-table"));
11
- // import Tile3DBatchTable from '../classes/tile-3d-batch-table';
11
+ // import Tile3DBatchTable from '../classes/tile-3d-batch-table.js';
12
12
  const parse_3d_tile_header_1 = require("./helpers/parse-3d-tile-header");
13
13
  const parse_3d_tile_tables_1 = require("./helpers/parse-3d-tile-tables");
14
14
  const parse_3d_tile_gltf_view_1 = require("./helpers/parse-3d-tile-gltf-view");
@@ -1,13 +1,14 @@
1
- import { Tileset3D } from '@loaders.gl/tiles';
2
- import { Subtree } from '../../types';
1
+ import type { LoaderOptions } from '@loaders.gl/loader-utils';
2
+ import { Tileset3D, Tile3D } from '@loaders.gl/tiles';
3
+ import { ImplicitTilingExtension, Subtree } from '../../types';
3
4
  export declare function normalizeTileData(tile: any, options: any): any;
4
- export declare function normalizeTileHeaders(tileset: any): any;
5
+ export declare function normalizeTileHeaders(tileset: Tileset3D, options: LoaderOptions): Promise<Tileset3D>;
5
6
  /**
6
7
  * Do normalisation of implicit tile headers
7
8
  * TODO Check if Tile3D class can be a return type here.
8
9
  * @param tileset
9
10
  */
10
- export declare function normalizeImplicitTileHeaders(tileset: Tileset3D): Promise<any>;
11
+ export declare function normalizeImplicitTileHeaders(tile: Tile3D, tileset: Tileset3D, implicitTilingExtension: ImplicitTilingExtension, options: LoaderOptions): Promise<any>;
11
12
  /**
12
13
  * Do implicit data normalisation to create hierarchical tile structure
13
14
  * @param tile
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAA8C,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AAkDpC,wBAAgB,iBAAiB,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,OAgB9C;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,KAAA,OAiB3C;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,SAAS,gBAsCpE;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,KAAA,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAsBvF"}
1
+ {"version":3,"file":"parse-3d-tile-header.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-3d-tile-header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAC,SAAS,EAA+C,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAC,uBAAuB,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAkD7D,wBAAgB,iBAAiB,CAAC,IAAI,KAAA,EAAE,OAAO,KAAA,OAgB9C;AAGD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,SAAS,CAAC,CAwCpB;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,EAClB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,EAAE,aAAa,gBAkCvB;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,KAAA,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,gBAsBvF"}
@@ -65,16 +65,29 @@ function normalizeTileData(tile, options) {
65
65
  }
66
66
  exports.normalizeTileData = normalizeTileData;
67
67
  // normalize tile headers
68
- function normalizeTileHeaders(tileset) {
68
+ async function normalizeTileHeaders(tileset, options) {
69
69
  const basePath = tileset.basePath;
70
- const root = normalizeTileData(tileset.root, tileset);
70
+ let root;
71
+ const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);
72
+ if (rootImplicitTilingExtension && tileset.root) {
73
+ root = await normalizeImplicitTileHeaders(tileset.root, tileset, rootImplicitTilingExtension, options);
74
+ }
75
+ else {
76
+ root = normalizeTileData(tileset.root, tileset);
77
+ }
71
78
  const stack = [];
72
79
  stack.push(root);
73
80
  while (stack.length > 0) {
74
81
  const tile = stack.pop() || {};
75
82
  const children = tile.children || [];
76
- for (const childHeader of children) {
77
- normalizeTileData(childHeader, { basePath });
83
+ for (let childHeader of children) {
84
+ const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);
85
+ if (childImplicitTilingExtension) {
86
+ childHeader = await normalizeImplicitTileHeaders(childHeader, tileset, childImplicitTilingExtension, options);
87
+ }
88
+ else {
89
+ normalizeTileData(childHeader, { basePath });
90
+ }
78
91
  stack.push(childHeader);
79
92
  }
80
93
  }
@@ -86,22 +99,18 @@ exports.normalizeTileHeaders = normalizeTileHeaders;
86
99
  * TODO Check if Tile3D class can be a return type here.
87
100
  * @param tileset
88
101
  */
89
- async function normalizeImplicitTileHeaders(tileset) {
90
- if (!tileset.root) {
91
- return null;
92
- }
102
+ async function normalizeImplicitTileHeaders(tile, tileset, implicitTilingExtension, options) {
93
103
  const basePath = tileset.basePath;
94
- const implicitTilingExtension = tileset.root.extensions['3DTILES_implicit_tiling'];
95
104
  const { subdivisionScheme, maximumLevel, subtreeLevels, subtrees: { uri: subtreesUriTemplate } } = implicitTilingExtension;
96
- const subtreeUrl = (0, parse_3d_implicit_tiles_1.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
97
- const rootSubtreeUrl = resolveUri(subtreeUrl, basePath);
98
- const rootSubtree = await (0, core_1.load)(rootSubtreeUrl, tile_3d_subtree_loader_1.Tile3DSubtreeLoader);
99
- const contentUrlTemplate = resolveUri(tileset.root.content.uri, basePath);
100
- const refine = tileset.root.refine;
105
+ const replacedUrlTemplate = (0, parse_3d_implicit_tiles_1.replaceContentUrlTemplate)(subtreesUriTemplate, 0, 0, 0, 0);
106
+ const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);
107
+ const subtree = await (0, core_1.load)(subtreeUrl, tile_3d_subtree_loader_1.Tile3DSubtreeLoader, options);
108
+ const contentUrlTemplate = resolveUri(tile.content.uri, basePath);
109
+ const refine = tileset?.root?.refine;
101
110
  // @ts-ignore
102
- const rootLodMetricValue = tileset.root.geometricError;
103
- const rootBoundingVolume = tileset.root.boundingVolume;
104
- const options = {
111
+ const rootLodMetricValue = tile.geometricError;
112
+ const rootBoundingVolume = tile.boundingVolume;
113
+ const implicitOptions = {
105
114
  contentUrlTemplate,
106
115
  subtreesUriTemplate,
107
116
  subdivisionScheme,
@@ -115,7 +124,7 @@ async function normalizeImplicitTileHeaders(tileset) {
115
124
  getTileType,
116
125
  getRefine
117
126
  };
118
- return await normalizeImplicitTileData(tileset.root, rootSubtree, options);
127
+ return await normalizeImplicitTileData(tile, subtree, implicitOptions);
119
128
  }
120
129
  exports.normalizeImplicitTileHeaders = normalizeImplicitTileHeaders;
121
130
  /**
@@ -144,3 +153,13 @@ async function normalizeImplicitTileData(tile, rootSubtree, options) {
144
153
  return tile;
145
154
  }
146
155
  exports.normalizeImplicitTileData = normalizeImplicitTileData;
156
+ /**
157
+ * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.
158
+ * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling
159
+ * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling
160
+ * @param tile
161
+ * @returns
162
+ */
163
+ function getImplicitTilingExtensionData(tile) {
164
+ return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;
165
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"tiles-3d-loader.d.ts","sourceRoot":"","sources":["../src/tiles-3d-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAY/D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,gBAiB3B,CAAC"}
1
+ {"version":3,"file":"tiles-3d-loader.d.ts","sourceRoot":"","sources":["../src/tiles-3d-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAO/D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,gBAiB3B,CAAC"}
@@ -6,7 +6,6 @@ const tiles_1 = require("@loaders.gl/tiles");
6
6
  const version_1 = require("./lib/utils/version");
7
7
  const parse_3d_tile_1 = require("./lib/parsers/parse-3d-tile");
8
8
  const parse_3d_tile_header_1 = require("./lib/parsers/parse-3d-tile-header");
9
- const IMPLICIT_TILING_EXTENSION_NAME = '3DTILES_implicit_tiling';
10
9
  /**
11
10
  * Loader for 3D Tiles
12
11
  */
@@ -48,9 +47,7 @@ async function parseTileset(data, options, context) {
48
47
  tilesetJson.url = context.url;
49
48
  // base path that non-absolute paths in tileset are relative to.
50
49
  tilesetJson.basePath = getBaseUri(tilesetJson);
51
- tilesetJson.root = hasImplicitTilingExtension(tilesetJson)
52
- ? await (0, parse_3d_tile_header_1.normalizeImplicitTileHeaders)(tilesetJson)
53
- : (0, parse_3d_tile_header_1.normalizeTileHeaders)(tilesetJson);
50
+ tilesetJson.root = await (0, parse_3d_tile_header_1.normalizeTileHeaders)(tilesetJson, options);
54
51
  tilesetJson.type = tiles_1.TILESET_TYPE.TILES3D;
55
52
  tilesetJson.lodMetricType = tiles_1.LOD_METRIC_TYPE.GEOMETRIC_ERROR;
56
53
  tilesetJson.lodMetricValue = tilesetJson.root?.lodMetricValue || 0;
@@ -74,7 +71,3 @@ async function parse(data, options, context) {
74
71
  }
75
72
  return data;
76
73
  }
77
- function hasImplicitTilingExtension(tilesetJson) {
78
- return (tilesetJson?.extensionsRequired?.includes(IMPLICIT_TILING_EXTENSION_NAME) &&
79
- tilesetJson?.extensionsUsed?.includes(IMPLICIT_TILING_EXTENSION_NAME));
80
- }
package/dist/types.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import type { GLTFPostprocessed } from '@loaders.gl/gltf';
2
2
  import { Matrix4, Vector3 } from '@math.gl/core';
3
- export declare type BatchTableJson = {
3
+ export type FeatureTableJson = {
4
4
  [key: string]: any[];
5
5
  };
6
- export declare type B3DMContent = {
7
- batchTableJson?: BatchTableJson;
6
+ export type B3DMContent = {
7
+ batchTableJson?: FeatureTableJson;
8
8
  byteLength: number;
9
9
  byteOffset: number;
10
10
  cartesianModelMatrix: Matrix4;
@@ -13,7 +13,7 @@ export declare type B3DMContent = {
13
13
  cartographicOrigin: Vector3;
14
14
  featureIds?: number[] | null;
15
15
  featureTableBinary?: Uint8Array;
16
- featureTableJson?: BatchTableJson;
16
+ featureTableJson?: FeatureTableJson;
17
17
  gltf?: GLTFPostprocessed;
18
18
  gltfUpAxis: string;
19
19
  header: GLTFHeader;
@@ -24,14 +24,14 @@ export declare type B3DMContent = {
24
24
  type: string;
25
25
  version: number;
26
26
  };
27
- export declare type GLTFHeader = {
27
+ export type GLTFHeader = {
28
28
  batchLength?: number;
29
29
  batchTableBinaryByteLength: number;
30
30
  batchTableJsonByteLength: number;
31
31
  featureTableBinaryByteLength: number;
32
32
  featureTableJsonByteLength: number;
33
33
  };
34
- export declare type Node3D = {
34
+ export type Node3D = {
35
35
  boundingVolume: BoundingVolume;
36
36
  children: any;
37
37
  geometricError: number;
@@ -40,7 +40,7 @@ export declare type Node3D = {
40
40
  boundingVolume: BoundingVolume;
41
41
  };
42
42
  };
43
- export declare type BoundingVolume = {
43
+ export type BoundingVolume = {
44
44
  box?: number[];
45
45
  sphere?: number[];
46
46
  region?: number[];
@@ -49,32 +49,45 @@ export declare type BoundingVolume = {
49
49
  * 3DTILES_implicit_tiling types
50
50
  * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subtree-file-format
51
51
  */
52
- export declare type Subtree = {
52
+ export type Subtree = {
53
53
  buffers: Buffer[];
54
54
  bufferViews: BufferView[];
55
55
  tileAvailability: Availability;
56
56
  contentAvailability: Availability;
57
57
  childSubtreeAvailability: Availability;
58
58
  };
59
- export declare type Availability = {
59
+ export type Availability = {
60
60
  constant?: 0 | 1;
61
61
  bufferView?: number;
62
62
  explicitBitstream?: ExplicitBitstream;
63
63
  };
64
- export declare type ExplicitBitstream = Uint8Array;
64
+ export type ExplicitBitstream = Uint8Array;
65
65
  /**
66
66
  * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling#subdivision-scheme
67
67
  */
68
- export declare type SubdivisionScheme = 'QUADTREE' | 'OCTREE';
69
- declare type Buffer = {
68
+ export type SubdivisionScheme = 'QUADTREE' | 'OCTREE';
69
+ type Buffer = {
70
70
  name: string;
71
71
  uri?: string;
72
72
  byteLength: number;
73
73
  };
74
- declare type BufferView = {
74
+ type BufferView = {
75
75
  buffer: number;
76
76
  byteOffset: number;
77
77
  byteLength: number;
78
78
  };
79
+ /**
80
+ * Spec - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling
81
+ */
82
+ export type ImplicitTilingExtension = {
83
+ subdivisionScheme: 'QUADTREE' | 'OCTREE';
84
+ maximumLevel?: number;
85
+ availableLevels: number;
86
+ subtreeLevels: number;
87
+ subtrees: SubtreeUri;
88
+ };
89
+ type SubtreeUri = {
90
+ uri: string;
91
+ };
79
92
  export {};
80
93
  //# sourceMappingURL=types.d.ts.map