potree-core 1.0.6 → 2.0.0

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 (720) hide show
  1. package/LICENSE +64 -64
  2. package/README.md +198 -200
  3. package/dist/constants.d.ts +14 -0
  4. package/dist/dem-node.d.ts +17 -0
  5. package/dist/features.d.ts +6 -0
  6. package/dist/index.d.ts +11 -0
  7. package/dist/index.js +1 -0
  8. package/dist/loading/binary-loader.d.ts +35 -0
  9. package/dist/loading/index.d.ts +3 -0
  10. package/dist/loading/load-poc.d.ts +14 -0
  11. package/dist/loading/types.d.ts +2 -0
  12. package/dist/loading2/OctreeGeometry.d.ts +23 -0
  13. package/dist/loading2/OctreeGeometryNode.d.ts +40 -0
  14. package/dist/loading2/OctreeLoader.d.ts +109 -0
  15. package/dist/loading2/PointAttributes.d.ts +44 -0
  16. package/dist/loading2/WorkerPool.d.ts +9 -0
  17. package/dist/loading2/load-octree.d.ts +2 -0
  18. package/dist/materials/blur-material.d.ts +11 -0
  19. package/dist/materials/classification.d.ts +2 -0
  20. package/dist/materials/clipping.d.ts +12 -0
  21. package/dist/materials/color-encoding.d.ts +4 -0
  22. package/dist/materials/enums.d.ts +37 -0
  23. package/dist/materials/gradients/grayscale.d.ts +2 -0
  24. package/dist/materials/gradients/index.d.ts +7 -0
  25. package/dist/materials/gradients/inferno.d.ts +2 -0
  26. package/dist/materials/gradients/plasma.d.ts +2 -0
  27. package/dist/materials/gradients/rainbow.d.ts +2 -0
  28. package/dist/materials/gradients/spectral.d.ts +2 -0
  29. package/dist/materials/gradients/vidris.d.ts +2 -0
  30. package/dist/materials/gradients/yellow-green.d.ts +2 -0
  31. package/dist/materials/index.d.ts +7 -0
  32. package/dist/materials/point-cloud-material.d.ts +180 -0
  33. package/dist/materials/texture-generation.d.ts +5 -0
  34. package/dist/materials/types.d.ts +10 -0
  35. package/dist/point-attributes.d.ts +52 -0
  36. package/dist/point-cloud-octree-geometry-node.d.ts +73 -0
  37. package/dist/point-cloud-octree-geometry.d.ts +27 -0
  38. package/dist/point-cloud-octree-node.d.ts +26 -0
  39. package/dist/point-cloud-octree-picker.d.ts +45 -0
  40. package/dist/point-cloud-octree.d.ts +45 -0
  41. package/dist/point-cloud-tree.d.ts +6 -0
  42. package/dist/potree.d.ts +37 -0
  43. package/dist/type-predicates.d.ts +3 -0
  44. package/dist/types.d.ts +56 -0
  45. package/dist/utils/bounds.d.ts +6 -0
  46. package/dist/utils/box3-helper.d.ts +13 -0
  47. package/dist/utils/lru.d.ts +32 -0
  48. package/dist/utils/math.d.ts +1 -0
  49. package/dist/utils/utils.d.ts +6 -0
  50. package/dist/version.d.ts +9 -0
  51. package/dist/workers/binary-decoder-worker-internal.d.ts +5 -0
  52. package/dist/workers/custom-array-view.d.ts +11 -0
  53. package/package.json +54 -31
  54. package/build/potree.js +0 -10290
  55. package/build/potree.min.js +0 -230
  56. package/build/potree.module.js +0 -10231
  57. package/data/lion_takanawa/cloud.js +0 -28
  58. package/data/lion_takanawa/data/r/r.bin +0 -0
  59. package/data/lion_takanawa/data/r/r.hrc +0 -0
  60. package/data/lion_takanawa/data/r/r0.bin +0 -0
  61. package/data/lion_takanawa/data/r/r00.bin +0 -0
  62. package/data/lion_takanawa/data/r/r001.bin +0 -0
  63. package/data/lion_takanawa/data/r/r003.bin +0 -0
  64. package/data/lion_takanawa/data/r/r004.bin +0 -0
  65. package/data/lion_takanawa/data/r/r005.bin +0 -0
  66. package/data/lion_takanawa/data/r/r007.bin +0 -0
  67. package/data/lion_takanawa/data/r/r01.bin +0 -0
  68. package/data/lion_takanawa/data/r/r012.bin +0 -0
  69. package/data/lion_takanawa/data/r/r013.bin +0 -0
  70. package/data/lion_takanawa/data/r/r016.bin +0 -0
  71. package/data/lion_takanawa/data/r/r017.bin +0 -0
  72. package/data/lion_takanawa/data/r/r02.bin +0 -0
  73. package/data/lion_takanawa/data/r/r021.bin +0 -0
  74. package/data/lion_takanawa/data/r/r023.bin +0 -0
  75. package/data/lion_takanawa/data/r/r03.bin +0 -0
  76. package/data/lion_takanawa/data/r/r030.bin +0 -0
  77. package/data/lion_takanawa/data/r/r031.bin +0 -0
  78. package/data/lion_takanawa/data/r/r032.bin +0 -0
  79. package/data/lion_takanawa/data/r/r034.bin +0 -0
  80. package/data/lion_takanawa/data/r/r035.bin +0 -0
  81. package/data/lion_takanawa/data/r/r036.bin +0 -0
  82. package/data/lion_takanawa/data/r/r037.bin +0 -0
  83. package/data/lion_takanawa/data/r/r04.bin +0 -0
  84. package/data/lion_takanawa/data/r/r041.bin +0 -0
  85. package/data/lion_takanawa/data/r/r043.bin +0 -0
  86. package/data/lion_takanawa/data/r/r045.bin +0 -0
  87. package/data/lion_takanawa/data/r/r047.bin +0 -0
  88. package/data/lion_takanawa/data/r/r05.bin +0 -0
  89. package/data/lion_takanawa/data/r/r052.bin +0 -0
  90. package/data/lion_takanawa/data/r/r053.bin +0 -0
  91. package/data/lion_takanawa/data/r/r056.bin +0 -0
  92. package/data/lion_takanawa/data/r/r057.bin +0 -0
  93. package/data/lion_takanawa/data/r/r06.bin +0 -0
  94. package/data/lion_takanawa/data/r/r065.bin +0 -0
  95. package/data/lion_takanawa/data/r/r067.bin +0 -0
  96. package/data/lion_takanawa/data/r/r07.bin +0 -0
  97. package/data/lion_takanawa/data/r/r070.bin +0 -0
  98. package/data/lion_takanawa/data/r/r071.bin +0 -0
  99. package/data/lion_takanawa/data/r/r072.bin +0 -0
  100. package/data/lion_takanawa/data/r/r073.bin +0 -0
  101. package/data/lion_takanawa/data/r/r074.bin +0 -0
  102. package/data/lion_takanawa/data/r/r075.bin +0 -0
  103. package/data/lion_takanawa/data/r/r076.bin +0 -0
  104. package/data/lion_takanawa/data/r/r077.bin +0 -0
  105. package/data/lion_takanawa/data/r/r1.bin +0 -0
  106. package/data/lion_takanawa/data/r/r11.bin +0 -0
  107. package/data/lion_takanawa/data/r/r116.bin +0 -0
  108. package/data/lion_takanawa/data/r/r117.bin +0 -0
  109. package/data/lion_takanawa/data/r/r12.bin +0 -0
  110. package/data/lion_takanawa/data/r/r124.bin +0 -0
  111. package/data/lion_takanawa/data/r/r125.bin +0 -0
  112. package/data/lion_takanawa/data/r/r126.bin +0 -0
  113. package/data/lion_takanawa/data/r/r127.bin +0 -0
  114. package/data/lion_takanawa/data/r/r13.bin +0 -0
  115. package/data/lion_takanawa/data/r/r134.bin +0 -0
  116. package/data/lion_takanawa/data/r/r135.bin +0 -0
  117. package/data/lion_takanawa/data/r/r136.bin +0 -0
  118. package/data/lion_takanawa/data/r/r137.bin +0 -0
  119. package/data/lion_takanawa/data/r/r14.bin +0 -0
  120. package/data/lion_takanawa/data/r/r146.bin +0 -0
  121. package/data/lion_takanawa/data/r/r15.bin +0 -0
  122. package/data/lion_takanawa/data/r/r152.bin +0 -0
  123. package/data/lion_takanawa/data/r/r153.bin +0 -0
  124. package/data/lion_takanawa/data/r/r156.bin +0 -0
  125. package/data/lion_takanawa/data/r/r157.bin +0 -0
  126. package/data/lion_takanawa/data/r/r16.bin +0 -0
  127. package/data/lion_takanawa/data/r/r160.bin +0 -0
  128. package/data/lion_takanawa/data/r/r161.bin +0 -0
  129. package/data/lion_takanawa/data/r/r162.bin +0 -0
  130. package/data/lion_takanawa/data/r/r164.bin +0 -0
  131. package/data/lion_takanawa/data/r/r165.bin +0 -0
  132. package/data/lion_takanawa/data/r/r166.bin +0 -0
  133. package/data/lion_takanawa/data/r/r167.bin +0 -0
  134. package/data/lion_takanawa/data/r/r17.bin +0 -0
  135. package/data/lion_takanawa/data/r/r170.bin +0 -0
  136. package/data/lion_takanawa/data/r/r171.bin +0 -0
  137. package/data/lion_takanawa/data/r/r173.bin +0 -0
  138. package/data/lion_takanawa/data/r/r174.bin +0 -0
  139. package/data/lion_takanawa/data/r/r175.bin +0 -0
  140. package/data/lion_takanawa/data/r/r176.bin +0 -0
  141. package/data/lion_takanawa/data/r/r177.bin +0 -0
  142. package/data/lion_takanawa/data/r/r2.bin +0 -0
  143. package/data/lion_takanawa/data/r/r21.bin +0 -0
  144. package/data/lion_takanawa/data/r/r210.bin +0 -0
  145. package/data/lion_takanawa/data/r/r214.bin +0 -0
  146. package/data/lion_takanawa/data/r/r215.bin +0 -0
  147. package/data/lion_takanawa/data/r/r23.bin +0 -0
  148. package/data/lion_takanawa/data/r/r235.bin +0 -0
  149. package/data/lion_takanawa/data/r/r24.bin +0 -0
  150. package/data/lion_takanawa/data/r/r243.bin +0 -0
  151. package/data/lion_takanawa/data/r/r245.bin +0 -0
  152. package/data/lion_takanawa/data/r/r247.bin +0 -0
  153. package/data/lion_takanawa/data/r/r25.bin +0 -0
  154. package/data/lion_takanawa/data/r/r250.bin +0 -0
  155. package/data/lion_takanawa/data/r/r251.bin +0 -0
  156. package/data/lion_takanawa/data/r/r254.bin +0 -0
  157. package/data/lion_takanawa/data/r/r255.bin +0 -0
  158. package/data/lion_takanawa/data/r/r256.bin +0 -0
  159. package/data/lion_takanawa/data/r/r257.bin +0 -0
  160. package/data/lion_takanawa/data/r/r26.bin +0 -0
  161. package/data/lion_takanawa/data/r/r261.bin +0 -0
  162. package/data/lion_takanawa/data/r/r265.bin +0 -0
  163. package/data/lion_takanawa/data/r/r27.bin +0 -0
  164. package/data/lion_takanawa/data/r/r270.bin +0 -0
  165. package/data/lion_takanawa/data/r/r271.bin +0 -0
  166. package/data/lion_takanawa/data/r/r274.bin +0 -0
  167. package/data/lion_takanawa/data/r/r275.bin +0 -0
  168. package/data/lion_takanawa/data/r/r3.bin +0 -0
  169. package/data/lion_takanawa/data/r/r30.bin +0 -0
  170. package/data/lion_takanawa/data/r/r304.bin +0 -0
  171. package/data/lion_takanawa/data/r/r306.bin +0 -0
  172. package/data/lion_takanawa/data/r/r31.bin +0 -0
  173. package/data/lion_takanawa/data/r/r314.bin +0 -0
  174. package/data/lion_takanawa/data/r/r315.bin +0 -0
  175. package/data/lion_takanawa/data/r/r32.bin +0 -0
  176. package/data/lion_takanawa/data/r/r324.bin +0 -0
  177. package/data/lion_takanawa/data/r/r34.bin +0 -0
  178. package/data/lion_takanawa/data/r/r340.bin +0 -0
  179. package/data/lion_takanawa/data/r/r341.bin +0 -0
  180. package/data/lion_takanawa/data/r/r342.bin +0 -0
  181. package/data/lion_takanawa/data/r/r343.bin +0 -0
  182. package/data/lion_takanawa/data/r/r344.bin +0 -0
  183. package/data/lion_takanawa/data/r/r345.bin +0 -0
  184. package/data/lion_takanawa/data/r/r346.bin +0 -0
  185. package/data/lion_takanawa/data/r/r347.bin +0 -0
  186. package/data/lion_takanawa/data/r/r35.bin +0 -0
  187. package/data/lion_takanawa/data/r/r350.bin +0 -0
  188. package/data/lion_takanawa/data/r/r351.bin +0 -0
  189. package/data/lion_takanawa/data/r/r354.bin +0 -0
  190. package/data/lion_takanawa/data/r/r355.bin +0 -0
  191. package/data/lion_takanawa/data/r/r36.bin +0 -0
  192. package/data/lion_takanawa/data/r/r360.bin +0 -0
  193. package/data/lion_takanawa/data/r/r364.bin +0 -0
  194. package/data/lion_takanawa/data/r/r4.bin +0 -0
  195. package/data/lion_takanawa/data/r/r40.bin +0 -0
  196. package/data/lion_takanawa/data/r/r400.bin +0 -0
  197. package/data/lion_takanawa/data/r/r401.bin +0 -0
  198. package/data/lion_takanawa/data/r/r402.bin +0 -0
  199. package/data/lion_takanawa/data/r/r403.bin +0 -0
  200. package/data/lion_takanawa/data/r/r406.bin +0 -0
  201. package/data/lion_takanawa/data/r/r41.bin +0 -0
  202. package/data/lion_takanawa/data/r/r413.bin +0 -0
  203. package/data/lion_takanawa/data/r/r42.bin +0 -0
  204. package/data/lion_takanawa/data/r/r420.bin +0 -0
  205. package/data/lion_takanawa/data/r/r421.bin +0 -0
  206. package/data/lion_takanawa/data/r/r422.bin +0 -0
  207. package/data/lion_takanawa/data/r/r423.bin +0 -0
  208. package/data/lion_takanawa/data/r/r424.bin +0 -0
  209. package/data/lion_takanawa/data/r/r426.bin +0 -0
  210. package/data/lion_takanawa/data/r/r43.bin +0 -0
  211. package/data/lion_takanawa/data/r/r431.bin +0 -0
  212. package/data/lion_takanawa/data/r/r6.bin +0 -0
  213. package/data/lion_takanawa/data/r/r60.bin +0 -0
  214. package/data/lion_takanawa/data/r/r600.bin +0 -0
  215. package/data/lion_takanawa/data/r/r601.bin +0 -0
  216. package/data/lion_takanawa/data/r/r602.bin +0 -0
  217. package/data/lion_takanawa/data/r/r603.bin +0 -0
  218. package/data/lion_takanawa/data/r/r604.bin +0 -0
  219. package/data/lion_takanawa/data/r/r606.bin +0 -0
  220. package/data/lion_takanawa/data/r/r62.bin +0 -0
  221. package/data/lion_takanawa/data/r/r620.bin +0 -0
  222. package/data/lion_takanawa/data/r/r621.bin +0 -0
  223. package/data/lion_takanawa/data/r/r622.bin +0 -0
  224. package/data/lion_takanawa/data/r/r624.bin +0 -0
  225. package/data/lion_takanawa/data/r/r626.bin +0 -0
  226. package/data/lion_takanawa_ept_bin/ept-build.json +0 -7
  227. package/data/lion_takanawa_ept_bin/ept-data/0-0-0-0.bin +0 -0
  228. package/data/lion_takanawa_ept_bin/ept-data/1-0-0-0.bin +0 -0
  229. package/data/lion_takanawa_ept_bin/ept-data/1-0-0-1.bin +0 -0
  230. package/data/lion_takanawa_ept_bin/ept-data/1-0-1-0.bin +0 -0
  231. package/data/lion_takanawa_ept_bin/ept-data/1-0-1-1.bin +0 -0
  232. package/data/lion_takanawa_ept_bin/ept-data/1-1-0-0.bin +0 -0
  233. package/data/lion_takanawa_ept_bin/ept-data/1-1-0-1.bin +0 -0
  234. package/data/lion_takanawa_ept_bin/ept-data/1-1-1-0.bin +0 -0
  235. package/data/lion_takanawa_ept_bin/ept-data/2-0-1-1.bin +0 -0
  236. package/data/lion_takanawa_ept_bin/ept-data/2-0-1-2.bin +0 -0
  237. package/data/lion_takanawa_ept_bin/ept-data/2-0-2-1.bin +0 -0
  238. package/data/lion_takanawa_ept_bin/ept-data/2-1-0-1.bin +0 -0
  239. package/data/lion_takanawa_ept_bin/ept-data/2-1-1-1.bin +0 -0
  240. package/data/lion_takanawa_ept_bin/ept-data/2-1-1-2.bin +0 -0
  241. package/data/lion_takanawa_ept_bin/ept-data/2-1-2-1.bin +0 -0
  242. package/data/lion_takanawa_ept_bin/ept-data/2-1-3-1.bin +0 -0
  243. package/data/lion_takanawa_ept_bin/ept-hierarchy/0-0-0-0.json +0 -18
  244. package/data/lion_takanawa_ept_bin/ept-sources/0.json +0 -7102
  245. package/data/lion_takanawa_ept_bin/ept-sources/100.json +0 -7102
  246. package/data/lion_takanawa_ept_bin/ept-sources/list.json +0 -3402
  247. package/data/lion_takanawa_ept_bin/ept.json +0 -117
  248. package/data/lion_takanawa_ept_laz/ept-build.json +0 -7
  249. package/data/lion_takanawa_ept_laz/ept-data/0-0-0-0.laz +0 -0
  250. package/data/lion_takanawa_ept_laz/ept-data/1-0-0-0.laz +0 -0
  251. package/data/lion_takanawa_ept_laz/ept-data/1-0-0-1.laz +0 -0
  252. package/data/lion_takanawa_ept_laz/ept-data/1-0-1-0.laz +0 -0
  253. package/data/lion_takanawa_ept_laz/ept-data/1-0-1-1.laz +0 -0
  254. package/data/lion_takanawa_ept_laz/ept-data/1-1-0-0.laz +0 -0
  255. package/data/lion_takanawa_ept_laz/ept-data/1-1-0-1.laz +0 -0
  256. package/data/lion_takanawa_ept_laz/ept-data/1-1-1-0.laz +0 -0
  257. package/data/lion_takanawa_ept_laz/ept-data/2-0-1-1.laz +0 -0
  258. package/data/lion_takanawa_ept_laz/ept-data/2-0-1-2.laz +0 -0
  259. package/data/lion_takanawa_ept_laz/ept-data/2-0-2-1.laz +0 -0
  260. package/data/lion_takanawa_ept_laz/ept-data/2-1-0-1.laz +0 -0
  261. package/data/lion_takanawa_ept_laz/ept-data/2-1-1-1.laz +0 -0
  262. package/data/lion_takanawa_ept_laz/ept-data/2-1-1-2.laz +0 -0
  263. package/data/lion_takanawa_ept_laz/ept-data/2-1-2-1.laz +0 -0
  264. package/data/lion_takanawa_ept_laz/ept-data/2-1-3-1.laz +0 -0
  265. package/data/lion_takanawa_ept_laz/ept-hierarchy/0-0-0-0.json +0 -18
  266. package/data/lion_takanawa_ept_laz/ept-sources/0.json +0 -7102
  267. package/data/lion_takanawa_ept_laz/ept-sources/100.json +0 -7102
  268. package/data/lion_takanawa_ept_laz/ept-sources/list.json +0 -3402
  269. package/data/lion_takanawa_ept_laz/ept.json +0 -117
  270. package/data/lion_takanawa_las/cloud.js +0 -225
  271. package/data/lion_takanawa_las/data/r.las +0 -0
  272. package/data/lion_takanawa_las/data/r0.las +0 -0
  273. package/data/lion_takanawa_las/data/r00.las +0 -0
  274. package/data/lion_takanawa_las/data/r003.las +0 -0
  275. package/data/lion_takanawa_las/data/r006.las +0 -0
  276. package/data/lion_takanawa_las/data/r007.las +0 -0
  277. package/data/lion_takanawa_las/data/r01.las +0 -0
  278. package/data/lion_takanawa_las/data/r010.las +0 -0
  279. package/data/lion_takanawa_las/data/r011.las +0 -0
  280. package/data/lion_takanawa_las/data/r012.las +0 -0
  281. package/data/lion_takanawa_las/data/r013.las +0 -0
  282. package/data/lion_takanawa_las/data/r014.las +0 -0
  283. package/data/lion_takanawa_las/data/r015.las +0 -0
  284. package/data/lion_takanawa_las/data/r016.las +0 -0
  285. package/data/lion_takanawa_las/data/r017.las +0 -0
  286. package/data/lion_takanawa_las/data/r02.las +0 -0
  287. package/data/lion_takanawa_las/data/r020.las +0 -0
  288. package/data/lion_takanawa_las/data/r021.las +0 -0
  289. package/data/lion_takanawa_las/data/r022.las +0 -0
  290. package/data/lion_takanawa_las/data/r023.las +0 -0
  291. package/data/lion_takanawa_las/data/r024.las +0 -0
  292. package/data/lion_takanawa_las/data/r025.las +0 -0
  293. package/data/lion_takanawa_las/data/r026.las +0 -0
  294. package/data/lion_takanawa_las/data/r027.las +0 -0
  295. package/data/lion_takanawa_las/data/r03.las +0 -0
  296. package/data/lion_takanawa_las/data/r030.las +0 -0
  297. package/data/lion_takanawa_las/data/r031.las +0 -0
  298. package/data/lion_takanawa_las/data/r032.las +0 -0
  299. package/data/lion_takanawa_las/data/r033.las +0 -0
  300. package/data/lion_takanawa_las/data/r034.las +0 -0
  301. package/data/lion_takanawa_las/data/r035.las +0 -0
  302. package/data/lion_takanawa_las/data/r036.las +0 -0
  303. package/data/lion_takanawa_las/data/r037.las +0 -0
  304. package/data/lion_takanawa_las/data/r04.las +0 -0
  305. package/data/lion_takanawa_las/data/r042.las +0 -0
  306. package/data/lion_takanawa_las/data/r046.las +0 -0
  307. package/data/lion_takanawa_las/data/r06.las +0 -0
  308. package/data/lion_takanawa_las/data/r060.las +0 -0
  309. package/data/lion_takanawa_las/data/r061.las +0 -0
  310. package/data/lion_takanawa_las/data/r064.las +0 -0
  311. package/data/lion_takanawa_las/data/r065.las +0 -0
  312. package/data/lion_takanawa_las/data/r07.las +0 -0
  313. package/data/lion_takanawa_las/data/r070.las +0 -0
  314. package/data/lion_takanawa_las/data/r071.las +0 -0
  315. package/data/lion_takanawa_las/data/r072.las +0 -0
  316. package/data/lion_takanawa_las/data/r073.las +0 -0
  317. package/data/lion_takanawa_las/data/r074.las +0 -0
  318. package/data/lion_takanawa_las/data/r075.las +0 -0
  319. package/data/lion_takanawa_las/data/r076.las +0 -0
  320. package/data/lion_takanawa_las/data/r077.las +0 -0
  321. package/data/lion_takanawa_las/data/r1.las +0 -0
  322. package/data/lion_takanawa_las/data/r10.las +0 -0
  323. package/data/lion_takanawa_las/data/r102.las +0 -0
  324. package/data/lion_takanawa_las/data/r11.las +0 -0
  325. package/data/lion_takanawa_las/data/r116.las +0 -0
  326. package/data/lion_takanawa_las/data/r12.las +0 -0
  327. package/data/lion_takanawa_las/data/r120.las +0 -0
  328. package/data/lion_takanawa_las/data/r122.las +0 -0
  329. package/data/lion_takanawa_las/data/r126.las +0 -0
  330. package/data/lion_takanawa_las/data/r127.las +0 -0
  331. package/data/lion_takanawa_las/data/r14.las +0 -0
  332. package/data/lion_takanawa_las/data/r143.las +0 -0
  333. package/data/lion_takanawa_las/data/r147.las +0 -0
  334. package/data/lion_takanawa_las/data/r16.las +0 -0
  335. package/data/lion_takanawa_las/data/r160.las +0 -0
  336. package/data/lion_takanawa_las/data/r161.las +0 -0
  337. package/data/lion_takanawa_las/data/r162.las +0 -0
  338. package/data/lion_takanawa_las/data/r163.las +0 -0
  339. package/data/lion_takanawa_las/data/r164.las +0 -0
  340. package/data/lion_takanawa_las/data/r165.las +0 -0
  341. package/data/lion_takanawa_las/data/r166.las +0 -0
  342. package/data/lion_takanawa_las/data/r167.las +0 -0
  343. package/data/lion_takanawa_las/data/r17.las +0 -0
  344. package/data/lion_takanawa_las/data/r170.las +0 -0
  345. package/data/lion_takanawa_las/data/r172.las +0 -0
  346. package/data/lion_takanawa_las/data/r174.las +0 -0
  347. package/data/lion_takanawa_las/data/r176.las +0 -0
  348. package/data/lion_takanawa_las/data/r2.las +0 -0
  349. package/data/lion_takanawa_las/data/r20.las +0 -0
  350. package/data/lion_takanawa_las/data/r200.las +0 -0
  351. package/data/lion_takanawa_las/data/r202.las +0 -0
  352. package/data/lion_takanawa_las/data/r203.las +0 -0
  353. package/data/lion_takanawa_las/data/r21.las +0 -0
  354. package/data/lion_takanawa_las/data/r210.las +0 -0
  355. package/data/lion_takanawa_las/data/r211.las +0 -0
  356. package/data/lion_takanawa_las/data/r212.las +0 -0
  357. package/data/lion_takanawa_las/data/r213.las +0 -0
  358. package/data/lion_takanawa_las/data/r214.las +0 -0
  359. package/data/lion_takanawa_las/data/r215.las +0 -0
  360. package/data/lion_takanawa_las/data/r216.las +0 -0
  361. package/data/lion_takanawa_las/data/r217.las +0 -0
  362. package/data/lion_takanawa_las/data/r22.las +0 -0
  363. package/data/lion_takanawa_las/data/r220.las +0 -0
  364. package/data/lion_takanawa_las/data/r222.las +0 -0
  365. package/data/lion_takanawa_las/data/r224.las +0 -0
  366. package/data/lion_takanawa_las/data/r225.las +0 -0
  367. package/data/lion_takanawa_las/data/r23.las +0 -0
  368. package/data/lion_takanawa_las/data/r231.las +0 -0
  369. package/data/lion_takanawa_las/data/r233.las +0 -0
  370. package/data/lion_takanawa_las/data/r235.las +0 -0
  371. package/data/lion_takanawa_las/data/r237.las +0 -0
  372. package/data/lion_takanawa_las/data/r25.las +0 -0
  373. package/data/lion_takanawa_las/data/r250.las +0 -0
  374. package/data/lion_takanawa_las/data/r251.las +0 -0
  375. package/data/lion_takanawa_las/data/r252.las +0 -0
  376. package/data/lion_takanawa_las/data/r253.las +0 -0
  377. package/data/lion_takanawa_las/data/r254.las +0 -0
  378. package/data/lion_takanawa_las/data/r255.las +0 -0
  379. package/data/lion_takanawa_las/data/r256.las +0 -0
  380. package/data/lion_takanawa_las/data/r257.las +0 -0
  381. package/data/lion_takanawa_las/data/r26.las +0 -0
  382. package/data/lion_takanawa_las/data/r260.las +0 -0
  383. package/data/lion_takanawa_las/data/r261.las +0 -0
  384. package/data/lion_takanawa_las/data/r262.las +0 -0
  385. package/data/lion_takanawa_las/data/r263.las +0 -0
  386. package/data/lion_takanawa_las/data/r265.las +0 -0
  387. package/data/lion_takanawa_las/data/r266.las +0 -0
  388. package/data/lion_takanawa_las/data/r267.las +0 -0
  389. package/data/lion_takanawa_las/data/r27.las +0 -0
  390. package/data/lion_takanawa_las/data/r270.las +0 -0
  391. package/data/lion_takanawa_las/data/r271.las +0 -0
  392. package/data/lion_takanawa_las/data/r272.las +0 -0
  393. package/data/lion_takanawa_las/data/r273.las +0 -0
  394. package/data/lion_takanawa_las/data/r274.las +0 -0
  395. package/data/lion_takanawa_las/data/r275.las +0 -0
  396. package/data/lion_takanawa_las/data/r276.las +0 -0
  397. package/data/lion_takanawa_las/data/r277.las +0 -0
  398. package/data/lion_takanawa_las/data/r3.las +0 -0
  399. package/data/lion_takanawa_las/data/r30.las +0 -0
  400. package/data/lion_takanawa_las/data/r304.las +0 -0
  401. package/data/lion_takanawa_las/data/r305.las +0 -0
  402. package/data/lion_takanawa_las/data/r32.las +0 -0
  403. package/data/lion_takanawa_las/data/r320.las +0 -0
  404. package/data/lion_takanawa_las/data/r322.las +0 -0
  405. package/data/lion_takanawa_las/data/r326.las +0 -0
  406. package/data/lion_takanawa_las/data/r34.las +0 -0
  407. package/data/lion_takanawa_las/data/r340.las +0 -0
  408. package/data/lion_takanawa_las/data/r341.las +0 -0
  409. package/data/lion_takanawa_las/data/r342.las +0 -0
  410. package/data/lion_takanawa_las/data/r344.las +0 -0
  411. package/data/lion_takanawa_las/data/r345.las +0 -0
  412. package/data/lion_takanawa_las/data/r346.las +0 -0
  413. package/data/lion_takanawa_las/data/r35.las +0 -0
  414. package/data/lion_takanawa_las/data/r350.las +0 -0
  415. package/data/lion_takanawa_las/data/r354.las +0 -0
  416. package/data/lion_takanawa_las/data/r36.las +0 -0
  417. package/data/lion_takanawa_las/data/r360.las +0 -0
  418. package/data/lion_takanawa_las/data/r361.las +0 -0
  419. package/data/lion_takanawa_las/data/r364.las +0 -0
  420. package/data/lion_takanawa_las/data/r37.las +0 -0
  421. package/data/lion_takanawa_las/data/r370.las +0 -0
  422. package/data/lion_takanawa_las/data/r4.las +0 -0
  423. package/data/lion_takanawa_las/data/r40.las +0 -0
  424. package/data/lion_takanawa_las/data/r400.las +0 -0
  425. package/data/lion_takanawa_las/data/r402.las +0 -0
  426. package/data/lion_takanawa_las/data/r42.las +0 -0
  427. package/data/lion_takanawa_las/data/r420.las +0 -0
  428. package/data/lion_takanawa_las/data/r421.las +0 -0
  429. package/data/lion_takanawa_las/data/r422.las +0 -0
  430. package/data/lion_takanawa_las/data/r423.las +0 -0
  431. package/data/lion_takanawa_las/data/r424.las +0 -0
  432. package/data/lion_takanawa_las/data/r426.las +0 -0
  433. package/data/lion_takanawa_las/data/r43.las +0 -0
  434. package/data/lion_takanawa_las/data/r430.las +0 -0
  435. package/data/lion_takanawa_las/data/r431.las +0 -0
  436. package/data/lion_takanawa_las/data/r432.las +0 -0
  437. package/data/lion_takanawa_las/data/r433.las +0 -0
  438. package/data/lion_takanawa_las/data/r5.las +0 -0
  439. package/data/lion_takanawa_las/data/r52.las +0 -0
  440. package/data/lion_takanawa_las/data/r522.las +0 -0
  441. package/data/lion_takanawa_las/data/r6.las +0 -0
  442. package/data/lion_takanawa_las/data/r60.las +0 -0
  443. package/data/lion_takanawa_las/data/r600.las +0 -0
  444. package/data/lion_takanawa_las/data/r601.las +0 -0
  445. package/data/lion_takanawa_las/data/r602.las +0 -0
  446. package/data/lion_takanawa_las/data/r603.las +0 -0
  447. package/data/lion_takanawa_las/data/r604.las +0 -0
  448. package/data/lion_takanawa_las/data/r606.las +0 -0
  449. package/data/lion_takanawa_las/data/r61.las +0 -0
  450. package/data/lion_takanawa_las/data/r610.las +0 -0
  451. package/data/lion_takanawa_las/data/r611.las +0 -0
  452. package/data/lion_takanawa_las/data/r612.las +0 -0
  453. package/data/lion_takanawa_las/data/r613.las +0 -0
  454. package/data/lion_takanawa_las/data/r62.las +0 -0
  455. package/data/lion_takanawa_las/data/r620.las +0 -0
  456. package/data/lion_takanawa_las/data/r621.las +0 -0
  457. package/data/lion_takanawa_las/data/r623.las +0 -0
  458. package/data/lion_takanawa_las/data/r624.las +0 -0
  459. package/data/lion_takanawa_las/data/r625.las +0 -0
  460. package/data/lion_takanawa_las/data/r626.las +0 -0
  461. package/data/lion_takanawa_las/data/r627.las +0 -0
  462. package/data/lion_takanawa_las/data/r63.las +0 -0
  463. package/data/lion_takanawa_las/data/r630.las +0 -0
  464. package/data/lion_takanawa_las/data/r631.las +0 -0
  465. package/data/lion_takanawa_las/data/r632.las +0 -0
  466. package/data/lion_takanawa_las/data/r633.las +0 -0
  467. package/data/lion_takanawa_las/data/r636.las +0 -0
  468. package/data/lion_takanawa_las/data/r7.las +0 -0
  469. package/data/lion_takanawa_las/data/r70.las +0 -0
  470. package/data/lion_takanawa_las/data/r700.las +0 -0
  471. package/data/lion_takanawa_laz/cloud.js +0 -225
  472. package/data/lion_takanawa_laz/data/r.laz +0 -0
  473. package/data/lion_takanawa_laz/data/r0.laz +0 -0
  474. package/data/lion_takanawa_laz/data/r00.laz +0 -0
  475. package/data/lion_takanawa_laz/data/r003.laz +0 -0
  476. package/data/lion_takanawa_laz/data/r006.laz +0 -0
  477. package/data/lion_takanawa_laz/data/r007.laz +0 -0
  478. package/data/lion_takanawa_laz/data/r01.laz +0 -0
  479. package/data/lion_takanawa_laz/data/r010.laz +0 -0
  480. package/data/lion_takanawa_laz/data/r011.laz +0 -0
  481. package/data/lion_takanawa_laz/data/r012.laz +0 -0
  482. package/data/lion_takanawa_laz/data/r013.laz +0 -0
  483. package/data/lion_takanawa_laz/data/r014.laz +0 -0
  484. package/data/lion_takanawa_laz/data/r015.laz +0 -0
  485. package/data/lion_takanawa_laz/data/r016.laz +0 -0
  486. package/data/lion_takanawa_laz/data/r017.laz +0 -0
  487. package/data/lion_takanawa_laz/data/r02.laz +0 -0
  488. package/data/lion_takanawa_laz/data/r020.laz +0 -0
  489. package/data/lion_takanawa_laz/data/r021.laz +0 -0
  490. package/data/lion_takanawa_laz/data/r022.laz +0 -0
  491. package/data/lion_takanawa_laz/data/r023.laz +0 -0
  492. package/data/lion_takanawa_laz/data/r024.laz +0 -0
  493. package/data/lion_takanawa_laz/data/r025.laz +0 -0
  494. package/data/lion_takanawa_laz/data/r026.laz +0 -0
  495. package/data/lion_takanawa_laz/data/r027.laz +0 -0
  496. package/data/lion_takanawa_laz/data/r03.laz +0 -0
  497. package/data/lion_takanawa_laz/data/r030.laz +0 -0
  498. package/data/lion_takanawa_laz/data/r031.laz +0 -0
  499. package/data/lion_takanawa_laz/data/r032.laz +0 -0
  500. package/data/lion_takanawa_laz/data/r033.laz +0 -0
  501. package/data/lion_takanawa_laz/data/r034.laz +0 -0
  502. package/data/lion_takanawa_laz/data/r035.laz +0 -0
  503. package/data/lion_takanawa_laz/data/r036.laz +0 -0
  504. package/data/lion_takanawa_laz/data/r037.laz +0 -0
  505. package/data/lion_takanawa_laz/data/r04.laz +0 -0
  506. package/data/lion_takanawa_laz/data/r042.laz +0 -0
  507. package/data/lion_takanawa_laz/data/r046.laz +0 -0
  508. package/data/lion_takanawa_laz/data/r06.laz +0 -0
  509. package/data/lion_takanawa_laz/data/r060.laz +0 -0
  510. package/data/lion_takanawa_laz/data/r061.laz +0 -0
  511. package/data/lion_takanawa_laz/data/r064.laz +0 -0
  512. package/data/lion_takanawa_laz/data/r065.laz +0 -0
  513. package/data/lion_takanawa_laz/data/r07.laz +0 -0
  514. package/data/lion_takanawa_laz/data/r070.laz +0 -0
  515. package/data/lion_takanawa_laz/data/r071.laz +0 -0
  516. package/data/lion_takanawa_laz/data/r072.laz +0 -0
  517. package/data/lion_takanawa_laz/data/r073.laz +0 -0
  518. package/data/lion_takanawa_laz/data/r074.laz +0 -0
  519. package/data/lion_takanawa_laz/data/r075.laz +0 -0
  520. package/data/lion_takanawa_laz/data/r076.laz +0 -0
  521. package/data/lion_takanawa_laz/data/r077.laz +0 -0
  522. package/data/lion_takanawa_laz/data/r1.laz +0 -0
  523. package/data/lion_takanawa_laz/data/r10.laz +0 -0
  524. package/data/lion_takanawa_laz/data/r102.laz +0 -0
  525. package/data/lion_takanawa_laz/data/r11.laz +0 -0
  526. package/data/lion_takanawa_laz/data/r116.laz +0 -0
  527. package/data/lion_takanawa_laz/data/r12.laz +0 -0
  528. package/data/lion_takanawa_laz/data/r120.laz +0 -0
  529. package/data/lion_takanawa_laz/data/r122.laz +0 -0
  530. package/data/lion_takanawa_laz/data/r126.laz +0 -0
  531. package/data/lion_takanawa_laz/data/r127.laz +0 -0
  532. package/data/lion_takanawa_laz/data/r14.laz +0 -0
  533. package/data/lion_takanawa_laz/data/r143.laz +0 -0
  534. package/data/lion_takanawa_laz/data/r147.laz +0 -0
  535. package/data/lion_takanawa_laz/data/r16.laz +0 -0
  536. package/data/lion_takanawa_laz/data/r160.laz +0 -0
  537. package/data/lion_takanawa_laz/data/r161.laz +0 -0
  538. package/data/lion_takanawa_laz/data/r162.laz +0 -0
  539. package/data/lion_takanawa_laz/data/r163.laz +0 -0
  540. package/data/lion_takanawa_laz/data/r164.laz +0 -0
  541. package/data/lion_takanawa_laz/data/r165.laz +0 -0
  542. package/data/lion_takanawa_laz/data/r166.laz +0 -0
  543. package/data/lion_takanawa_laz/data/r167.laz +0 -0
  544. package/data/lion_takanawa_laz/data/r17.laz +0 -0
  545. package/data/lion_takanawa_laz/data/r170.laz +0 -0
  546. package/data/lion_takanawa_laz/data/r172.laz +0 -0
  547. package/data/lion_takanawa_laz/data/r174.laz +0 -0
  548. package/data/lion_takanawa_laz/data/r176.laz +0 -0
  549. package/data/lion_takanawa_laz/data/r2.laz +0 -0
  550. package/data/lion_takanawa_laz/data/r20.laz +0 -0
  551. package/data/lion_takanawa_laz/data/r200.laz +0 -0
  552. package/data/lion_takanawa_laz/data/r202.laz +0 -0
  553. package/data/lion_takanawa_laz/data/r203.laz +0 -0
  554. package/data/lion_takanawa_laz/data/r21.laz +0 -0
  555. package/data/lion_takanawa_laz/data/r210.laz +0 -0
  556. package/data/lion_takanawa_laz/data/r211.laz +0 -0
  557. package/data/lion_takanawa_laz/data/r212.laz +0 -0
  558. package/data/lion_takanawa_laz/data/r213.laz +0 -0
  559. package/data/lion_takanawa_laz/data/r214.laz +0 -0
  560. package/data/lion_takanawa_laz/data/r215.laz +0 -0
  561. package/data/lion_takanawa_laz/data/r216.laz +0 -0
  562. package/data/lion_takanawa_laz/data/r217.laz +0 -0
  563. package/data/lion_takanawa_laz/data/r22.laz +0 -0
  564. package/data/lion_takanawa_laz/data/r220.laz +0 -0
  565. package/data/lion_takanawa_laz/data/r222.laz +0 -0
  566. package/data/lion_takanawa_laz/data/r224.laz +0 -0
  567. package/data/lion_takanawa_laz/data/r225.laz +0 -0
  568. package/data/lion_takanawa_laz/data/r23.laz +0 -0
  569. package/data/lion_takanawa_laz/data/r231.laz +0 -0
  570. package/data/lion_takanawa_laz/data/r233.laz +0 -0
  571. package/data/lion_takanawa_laz/data/r235.laz +0 -0
  572. package/data/lion_takanawa_laz/data/r237.laz +0 -0
  573. package/data/lion_takanawa_laz/data/r25.laz +0 -0
  574. package/data/lion_takanawa_laz/data/r250.laz +0 -0
  575. package/data/lion_takanawa_laz/data/r251.laz +0 -0
  576. package/data/lion_takanawa_laz/data/r252.laz +0 -0
  577. package/data/lion_takanawa_laz/data/r253.laz +0 -0
  578. package/data/lion_takanawa_laz/data/r254.laz +0 -0
  579. package/data/lion_takanawa_laz/data/r255.laz +0 -0
  580. package/data/lion_takanawa_laz/data/r256.laz +0 -0
  581. package/data/lion_takanawa_laz/data/r257.laz +0 -0
  582. package/data/lion_takanawa_laz/data/r26.laz +0 -0
  583. package/data/lion_takanawa_laz/data/r260.laz +0 -0
  584. package/data/lion_takanawa_laz/data/r261.laz +0 -0
  585. package/data/lion_takanawa_laz/data/r262.laz +0 -0
  586. package/data/lion_takanawa_laz/data/r263.laz +0 -0
  587. package/data/lion_takanawa_laz/data/r265.laz +0 -0
  588. package/data/lion_takanawa_laz/data/r266.laz +0 -0
  589. package/data/lion_takanawa_laz/data/r267.laz +0 -0
  590. package/data/lion_takanawa_laz/data/r27.laz +0 -0
  591. package/data/lion_takanawa_laz/data/r270.laz +0 -0
  592. package/data/lion_takanawa_laz/data/r271.laz +0 -0
  593. package/data/lion_takanawa_laz/data/r272.laz +0 -0
  594. package/data/lion_takanawa_laz/data/r273.laz +0 -0
  595. package/data/lion_takanawa_laz/data/r274.laz +0 -0
  596. package/data/lion_takanawa_laz/data/r275.laz +0 -0
  597. package/data/lion_takanawa_laz/data/r276.laz +0 -0
  598. package/data/lion_takanawa_laz/data/r277.laz +0 -0
  599. package/data/lion_takanawa_laz/data/r3.laz +0 -0
  600. package/data/lion_takanawa_laz/data/r30.laz +0 -0
  601. package/data/lion_takanawa_laz/data/r304.laz +0 -0
  602. package/data/lion_takanawa_laz/data/r305.laz +0 -0
  603. package/data/lion_takanawa_laz/data/r32.laz +0 -0
  604. package/data/lion_takanawa_laz/data/r320.laz +0 -0
  605. package/data/lion_takanawa_laz/data/r322.laz +0 -0
  606. package/data/lion_takanawa_laz/data/r326.laz +0 -0
  607. package/data/lion_takanawa_laz/data/r34.laz +0 -0
  608. package/data/lion_takanawa_laz/data/r340.laz +0 -0
  609. package/data/lion_takanawa_laz/data/r341.laz +0 -0
  610. package/data/lion_takanawa_laz/data/r342.laz +0 -0
  611. package/data/lion_takanawa_laz/data/r344.laz +0 -0
  612. package/data/lion_takanawa_laz/data/r345.laz +0 -0
  613. package/data/lion_takanawa_laz/data/r346.laz +0 -0
  614. package/data/lion_takanawa_laz/data/r35.laz +0 -0
  615. package/data/lion_takanawa_laz/data/r350.laz +0 -0
  616. package/data/lion_takanawa_laz/data/r354.laz +0 -0
  617. package/data/lion_takanawa_laz/data/r36.laz +0 -0
  618. package/data/lion_takanawa_laz/data/r360.laz +0 -0
  619. package/data/lion_takanawa_laz/data/r361.laz +0 -0
  620. package/data/lion_takanawa_laz/data/r364.laz +0 -0
  621. package/data/lion_takanawa_laz/data/r37.laz +0 -0
  622. package/data/lion_takanawa_laz/data/r370.laz +0 -0
  623. package/data/lion_takanawa_laz/data/r4.laz +0 -0
  624. package/data/lion_takanawa_laz/data/r40.laz +0 -0
  625. package/data/lion_takanawa_laz/data/r400.laz +0 -0
  626. package/data/lion_takanawa_laz/data/r402.laz +0 -0
  627. package/data/lion_takanawa_laz/data/r42.laz +0 -0
  628. package/data/lion_takanawa_laz/data/r420.laz +0 -0
  629. package/data/lion_takanawa_laz/data/r421.laz +0 -0
  630. package/data/lion_takanawa_laz/data/r422.laz +0 -0
  631. package/data/lion_takanawa_laz/data/r423.laz +0 -0
  632. package/data/lion_takanawa_laz/data/r424.laz +0 -0
  633. package/data/lion_takanawa_laz/data/r426.laz +0 -0
  634. package/data/lion_takanawa_laz/data/r43.laz +0 -0
  635. package/data/lion_takanawa_laz/data/r430.laz +0 -0
  636. package/data/lion_takanawa_laz/data/r431.laz +0 -0
  637. package/data/lion_takanawa_laz/data/r432.laz +0 -0
  638. package/data/lion_takanawa_laz/data/r433.laz +0 -0
  639. package/data/lion_takanawa_laz/data/r5.laz +0 -0
  640. package/data/lion_takanawa_laz/data/r52.laz +0 -0
  641. package/data/lion_takanawa_laz/data/r522.laz +0 -0
  642. package/data/lion_takanawa_laz/data/r6.laz +0 -0
  643. package/data/lion_takanawa_laz/data/r60.laz +0 -0
  644. package/data/lion_takanawa_laz/data/r600.laz +0 -0
  645. package/data/lion_takanawa_laz/data/r601.laz +0 -0
  646. package/data/lion_takanawa_laz/data/r602.laz +0 -0
  647. package/data/lion_takanawa_laz/data/r603.laz +0 -0
  648. package/data/lion_takanawa_laz/data/r604.laz +0 -0
  649. package/data/lion_takanawa_laz/data/r606.laz +0 -0
  650. package/data/lion_takanawa_laz/data/r61.laz +0 -0
  651. package/data/lion_takanawa_laz/data/r610.laz +0 -0
  652. package/data/lion_takanawa_laz/data/r611.laz +0 -0
  653. package/data/lion_takanawa_laz/data/r612.laz +0 -0
  654. package/data/lion_takanawa_laz/data/r613.laz +0 -0
  655. package/data/lion_takanawa_laz/data/r62.laz +0 -0
  656. package/data/lion_takanawa_laz/data/r620.laz +0 -0
  657. package/data/lion_takanawa_laz/data/r621.laz +0 -0
  658. package/data/lion_takanawa_laz/data/r623.laz +0 -0
  659. package/data/lion_takanawa_laz/data/r624.laz +0 -0
  660. package/data/lion_takanawa_laz/data/r625.laz +0 -0
  661. package/data/lion_takanawa_laz/data/r626.laz +0 -0
  662. package/data/lion_takanawa_laz/data/r627.laz +0 -0
  663. package/data/lion_takanawa_laz/data/r63.laz +0 -0
  664. package/data/lion_takanawa_laz/data/r630.laz +0 -0
  665. package/data/lion_takanawa_laz/data/r631.laz +0 -0
  666. package/data/lion_takanawa_laz/data/r632.laz +0 -0
  667. package/data/lion_takanawa_laz/data/r633.laz +0 -0
  668. package/data/lion_takanawa_laz/data/r636.laz +0 -0
  669. package/data/lion_takanawa_laz/data/r7.laz +0 -0
  670. package/data/lion_takanawa_laz/data/r70.laz +0 -0
  671. package/data/lion_takanawa_laz/data/r700.laz +0 -0
  672. package/index.html +0 -138
  673. package/lib/threejs/OrbitControls.js +0 -1043
  674. package/lib/threejs/three.min.js +0 -975
  675. package/rollup.config.js +0 -16
  676. package/screenshot.png +0 -0
  677. package/source/Global.js +0 -42
  678. package/source/Gradients.js +0 -116
  679. package/source/Main.js +0 -67
  680. package/source/PointAttributes.js +0 -174
  681. package/source/Points.js +0 -59
  682. package/source/Potree.js +0 -570
  683. package/source/Shader.js +0 -270
  684. package/source/Shaders.js +0 -892
  685. package/source/WebGLBuffer.js +0 -13
  686. package/source/WebGLTexture.js +0 -193
  687. package/source/lib/BinaryHeap.js +0 -138
  688. package/source/loaders/BinaryLoader.js +0 -165
  689. package/source/loaders/EptLoader.js +0 -25
  690. package/source/loaders/GreyhoundBinaryLoader.js +0 -155
  691. package/source/loaders/GreyhoundLoader.js +0 -252
  692. package/source/loaders/GreyhoundUtils.js +0 -224
  693. package/source/loaders/LASLAZLoader.js +0 -235
  694. package/source/loaders/LASLoader.js +0 -368
  695. package/source/loaders/POCLoader.js +0 -188
  696. package/source/loaders/ept/EptBinaryLoader.js +0 -115
  697. package/source/loaders/ept/EptLaszipLoader.js +0 -184
  698. package/source/objects/BasicGroup.js +0 -203
  699. package/source/objects/Group.js +0 -614
  700. package/source/pointcloud/DEM.js +0 -245
  701. package/source/pointcloud/DEMNode.js +0 -169
  702. package/source/pointcloud/PointCloudArena4D.js +0 -688
  703. package/source/pointcloud/PointCloudOctree.js +0 -1117
  704. package/source/pointcloud/PointCloudTree.js +0 -42
  705. package/source/pointcloud/geometries/PointCloudArena4DGeometry.js +0 -467
  706. package/source/pointcloud/geometries/PointCloudEptGeometry.js +0 -341
  707. package/source/pointcloud/geometries/PointCloudGreyhoundGeometry.js +0 -371
  708. package/source/pointcloud/geometries/PointCloudOctreeGeometry.js +0 -299
  709. package/source/pointcloud/materials/PointCloudMaterial.js +0 -1177
  710. package/source/utils/HelperUtils.js +0 -55
  711. package/source/utils/LRU.js +0 -210
  712. package/source/utils/VersionUtils.js +0 -45
  713. package/source/utils/WorkerManager.js +0 -85
  714. package/source/workers/BinaryDecoderWorker.js +0 -417
  715. package/source/workers/DEMWorker.js +0 -47
  716. package/source/workers/EptBinaryDecoderWorker.js +0 -209
  717. package/source/workers/EptLaszipDecoderWorker.js +0 -176
  718. package/source/workers/GreyhoundBinaryDecoderWorker.js +0 -504
  719. package/source/workers/LASDecoderWorker.js +0 -137
  720. package/source/workers/LASLAZWorker.js +0 -49756
@@ -1,230 +0,0 @@
1
- 'use strict';(function(r,t){'object'===typeof exports&&'undefined'!==typeof module?t(exports):'function'===typeof define&&define.amd?define(['exports'],t):(r=r||self,t(r.Potree={}))})(this,function(r){function t(a,b,c){this.name=a;this.type=b;this.numElements=c;this.byteSize=this.numElements*this.type.size}function F(a){this.attributes=[];this.size=this.byteSize=0;if(null!=a)for(var b=0;b<a.length;b++){var c=t[a[b]];this.attributes.push(c);this.byteSize+=c.byteSize;this.size++}}function z(a,b,c,e,
2
- d){this.id=z.IDCount++;this.name=a;this.index=parseInt(a.charAt(a.length-1));this.pcoGeometry=b;this.geometry=null;this.boundingBox=c;this.boundingSphere=c.getBoundingSphere(new THREE.Sphere);this.scale=e;this.offset=d;this.children={};this.numPoints=0;this.level=null;this.loaded=!1;this.oneTimeDisposeHandlers=[];this.baseLoaded=!1;a=new THREE.Vector3;b=this.boundingBox.clone();b.min.sub(this.pcoGeometry.boundingBox.getCenter(a));b.max.sub(this.pcoGeometry.boundingBox.getCenter(a));this.scale&&(b.min.multiplyScalar(1/
3
- this.scale),b.max.multiplyScalar(1/this.scale));this.greyhoundBounds=b;this.greyhoundOffset=this.pcoGeometry.offset.clone().add(this.pcoGeometry.boundingBox.getSize(new THREE.Vector3).multiplyScalar(.5))}function E(a){this.version=a;var b=-1===a.indexOf('.')?a.length:a.indexOf('.');this.versionMajor=parseInt(a.substr(0,b));this.versionMinor=parseInt(a.substr(b+1));0===this.versionMinor.length&&(this.versionMinor=0)}function N(){}function I(a,b,c,e){e=void 0===e||0===e?1:e;a=a.slice(c,c+b.BYTES_PER_ELEMENT*
4
- e);b=new b(a);if(void 0===e||1===e)return b[0];a=[];for(c=0;c<e;c++)a.push(b[c]);return a}function R(a){this.arraybuffer=a}function U(a){var b=this;this.arraybuffer=a;this.nextCB=null;this.dorr=function(a,e){b.nextCB=e;u.workerPool.runTask(y.LAS_LAZ,function(a){null!==b.nextCB&&(b.nextCB(a.data),b.nextCB=null)},a)}}function J(a){this.arraybuffer=a;this.determineVersion();if(12<this.version)throw Error('Only file versions <= 1.2 are supported at this time');this.determineFormat();if(void 0===ka[this.formatId])throw Error('The point format ID is not supported');
5
- this.loader=this.isCompressed?new U(this.arraybuffer):new R(this.arraybuffer)}function da(a,b,c,e,d,f,g,k){this.arrayb=a;this.decoder=ka[b];this.pointsCount=e;this.pointSize=c;this.scale=d;this.offset=f;this.mins=g;this.maxs=k}function ea(a){this.content=[];this.scoreFunction=a}function la(a,b,c){var e=0,d=new Map(a.map(a=>[a,0])),f=[],g=[],k=Infinity,h=ma(a,b),l=h.frustums,m=h.camObjPositions;h=h.priorityQueue;var p=0;c=c.domElement.clientHeight;u.pointcloudTransformVersion||(u.pointcloudTransformVersion=
6
- new Map);for(var n=u.pointcloudTransformVersion,q=0;q<a.length;q++){var w=a[q];if(w.visible)if(w.updateMatrixWorld(),n.has(w)){var r=n.get(w);r.transform.equals(w.matrixWorld)||(r.number++,r.transform.copy(w.matrixWorld),w.dispatchEvent({type:'transformation_changed',target:w}))}else n.set(w,{number:0,transform:w.matrixWorld.clone()})}for(;0<h.size();){r=h.pop();var v=r.node;q=r.parent;w=a[r.pointcloud];var t=v.getBoundingBox(),x=m[r.pointcloud],G=l[r.pointcloud].intersectsBox(t);t=w.maxLevel||Infinity;
7
- var y=v.getLevel();G=(G=G&&!(d.get(w)+v.getNumPoints()>w.pointBudget))&&y<t;v.spacing?k=Math.min(k,v.spacing):v.geometryNode&&v.geometryNode.spacing&&(k=Math.min(k,v.geometryNode.spacing));if(G)for(e+=v.getNumPoints(),t=d.get(w),d.set(w,t+v.getNumPoints()),w.numVisibleNodes++,w.numVisiblePoints+=v.getNumPoints(),!v.isGeometryNode()||q&&!q.isTreeNode()||(v.isLoaded()&&p<u.maxNodesLoadGPUFrame?(v=w.toTreeNode(v,q),p++):g.push(v)),v.isTreeNode()&&(u.lru.touch(v.geometryNode),v.sceneNode.visible=!0,v.sceneNode.material=
8
- w.material,f.push(v),w.visibleNodes.push(v),void 0===v._transformVersion&&(v._transformVersion=-1),q=n.get(w),v._transformVersion!==q.number&&(v.sceneNode.updateMatrix(),v.sceneNode.matrixWorld.multiplyMatrices(w.matrixWorld,v.sceneNode.matrix),v._transformVersion=q.number),w.showBoundingBox&&!v.boundingBoxNode&&v.getBoundingBox?(q=new THREE.Box3Helper(v.getBoundingBox()),q.matrixAutoUpdate=!1,w.boundingBoxNodes.push(q),v.boundingBoxNode=q,v.boundingBoxNode.matrix.copy(w.matrixWorld)):w.showBoundingBox?
9
- (v.boundingBoxNode.visible=!0,v.boundingBoxNode.matrix.copy(w.matrixWorld)):!w.showBoundingBox&&v.boundingBoxNode&&(v.boundingBoxNode.visible=!1)),t=v.getChildren(),q=0;q<t.length;q++){y=t[q];var z=0;if(b.isPerspectiveCamera){var B=y.getBoundingSphere(new THREE.Sphere);G=B.center.distanceTo(x);B=B.radius;z=.5*c/(Math.tan(b.fov*Math.PI/180/2)*G)*B;if(z<w.minimumNodePixelSize)continue;0>G-B&&(z=Number.MAX_VALUE)}else B=y.getBoundingBox(),G=y.getBoundingSphere(new THREE.Sphere).center.distanceTo(x),
10
- z=B.max.clone().sub(B.min).length()/G;h.push({pointcloud:r.pointcloud,node:y,parent:v,weight:z})}}a=a.filter(a=>a.generateDEM&&a.dem instanceof DEM);for(w of a)a=w.visibleNodes.filter(a=>a.getLevel()<=u.maxDEMLevel),w.dem.update(a);for(q=0;q<Math.min(u.maxNodesLoading,g.length);q++)g[q].load();return{visibleNodes:f,numVisiblePoints:e,lowestSpacing:k}}function na(a,b,c){for(var e=la(a,b,c),d=0;d<a.length;d++)a[d].updateMaterial(a[d].material,a[d].visibleNodes,b,c),a[d].updateVisibleBounds();u.lru.freeMemory();
11
- return e}function ma(a,b,c){c=[];for(var e=[],d=new ea(function(a){return 1/a.weight}),f=0;f<a.length;f++){var g=a[f];if(g.initialized()){g.numVisibleNodes=0;g.numVisiblePoints=0;g.deepestVisibleLevel=0;g.visibleNodes=[];g.visibleGeometry=[];b.updateMatrixWorld();var k=new THREE.Frustum,h=b.matrixWorldInverse,l=g.matrixWorld,m=b.clone();m.near=b.near;m.updateProjectionMatrix();m=b.projectionMatrix;h=(new THREE.Matrix4).multiply(m).multiply(h).multiply(l);k.setFromMatrix(h);c.push(k);k=b.matrixWorld;
12
- l=(new THREE.Matrix4).getInverse(l);l=(new THREE.Matrix4).multiply(l).multiply(k);l=(new THREE.Vector3).setFromMatrixPosition(l);e.push(l);g.visible&&null!==g.root&&d.push({pointcloud:f,node:g.root,weight:Number.MAX_VALUE});g.root.isTreeNode()&&g.hideDescendants(g.root.sceneNode);for(l=0;l<g.boundingBoxNodes.length;l++)g.boundingBoxNodes[l].visible=!1}}return{frustums:c,camObjPositions:e,priorityQueue:d}}function K(a,b){if(b===THREE.RepeatWrapping)return a.REPEAT;if(b===THREE.ClampToEdgeWrapping)return a.CLAMP_TO_EDGE;
13
- if(b===THREE.MirroredRepeatWrapping)return a.MIRRORED_REPEAT;if(b===THREE.NearestFilter)return a.NEAREST;if(b===THREE.NearestMipMapNearestFilter)return a.NEAREST_MIPMAP_NEAREST;if(b===THREE.NearestMipMapLinearFilter)return a.NEAREST_MIPMAP_LINEAR;if(b===THREE.LinearFilter)return a.LINEAR;if(b===THREE.LinearMipMapNearestFilter)return a.LINEAR_MIPMAP_NEAREST;if(b===THREE.LinearMipMapLinearFilter)return a.LINEAR_MIPMAP_LINEAR;if(b===THREE.UnsignedByteType)return a.UNSIGNED_BYTE;if(b===THREE.UnsignedShort4444Type)return a.UNSIGNED_SHORT_4_4_4_4;
14
- if(b===THREE.UnsignedShort5551Type)return a.UNSIGNED_SHORT_5_5_5_1;if(b===THREE.UnsignedShort565Type)return a.UNSIGNED_SHORT_5_6_5;if(b===THREE.ByteType)return a.BYTE;if(b===THREE.ShortType)return a.SHORT;if(b===THREE.UnsignedShortType)return a.UNSIGNED_SHORT;if(b===THREE.IntType)return a.INT;if(b===THREE.UnsignedIntType)return a.UNSIGNED_INT;if(b===THREE.FloatType)return a.FLOAT;if(b===THREE.HalfFloatType){var c=extensions.get('OES_texture_half_float');if(null!==c)return c.HALF_FLOAT_OES}if(b===
15
- THREE.AlphaFormat)return a.ALPHA;if(b===THREE.RGBFormat)return a.RGB;if(b===THREE.RGBAFormat)return a.RGBA;if(b===THREE.LuminanceFormat)return a.LUMINANCE;if(b===THREE.LuminanceAlphaFormat)return a.LUMINANCE_ALPHA;if(b===THREE.DepthFormat)return a.DEPTH_COMPONENT;if(b===THREE.DepthStencilFormat)return a.DEPTH_STENCIL;if(b===THREE.AddEquation)return a.FUNC_ADD;if(b===THREE.SubtractEquation)return a.FUNC_SUBTRACT;if(b===THREE.ReverseSubtractEquation)return a.FUNC_REVERSE_SUBTRACT;if(b===THREE.ZeroFactor)return a.ZERO;
16
- if(b===THREE.OneFactor)return a.ONE;if(b===THREE.SrcColorFactor)return a.SRC_COLOR;if(b===THREE.OneMinusSrcColorFactor)return a.ONE_MINUS_SRC_COLOR;if(b===THREE.SrcAlphaFactor)return a.SRC_ALPHA;if(b===THREE.OneMinusSrcAlphaFactor)return a.ONE_MINUS_SRC_ALPHA;if(b===THREE.DstAlphaFactor)return a.DST_ALPHA;if(b===THREE.OneMinusDstAlphaFactor)return a.ONE_MINUS_DST_ALPHA;if(b===THREE.DstColorFactor)return a.DST_COLOR;if(b===THREE.OneMinusDstColorFactor)return a.ONE_MINUS_DST_COLOR;if(b===THREE.SrcAlphaSaturateFactor)return a.SRC_ALPHA_SATURATE;
17
- if(b===THREE.RGB_S3TC_DXT1_Format||b===RGBA_S3TC_DXT1_Format||b===THREE.RGBA_S3TC_DXT3_Format||b===RGBA_S3TC_DXT5_Format)if(c=extensions.get('WEBGL_compressed_texture_s3tc'),null!==c){if(b===THREE.RGB_S3TC_DXT1_Format)return c.COMPRESSED_RGB_S3TC_DXT1_EXT;if(b===THREE.RGBA_S3TC_DXT1_Format)return c.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(b===THREE.RGBA_S3TC_DXT3_Format)return c.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(b===THREE.RGBA_S3TC_DXT5_Format)return c.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(b===THREE.RGB_PVRTC_4BPPV1_Format||
18
- b===THREE.RGB_PVRTC_2BPPV1_Format||b===THREE.RGBA_PVRTC_4BPPV1_Format||b===THREE.RGBA_PVRTC_2BPPV1_Format)if(c=extensions.get('WEBGL_compressed_texture_pvrtc'),null!==c){if(b===THREE.RGB_PVRTC_4BPPV1_Format)return c.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(b===THREE.RGB_PVRTC_2BPPV1_Format)return c.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(b===THREE.RGBA_PVRTC_4BPPV1_Format)return c.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(b===THREE.RGBA_PVRTC_2BPPV1_Format)return c.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(b===THREE.RGB_ETC1_Format&&
19
- (c=extensions.get('WEBGL_compressed_texture_etc1'),null!==c))return c.COMPRESSED_RGB_ETC1_WEBGL;if(b===THREE.MinEquation||b===THREE.MaxEquation)if(c=extensions.get('EXT_blend_minmax'),null!==c){if(b===THREE.MinEquation)return c.MIN_EXT;if(b===THREE.MaxEquation)return c.MAX_EXT}return b===UnsignedInt248Type&&(c=extensions.get('WEBGL_depth_texture'),null!==c)?c.UNSIGNED_INT_24_8_WEBGL:0}class Ka{constructor(a){this.next=this.previous=null;this.node=a}}class oa{constructor(){this.last=this.first=null;
20
- this.items={};this.numPoints=this.elements=0}size(){return this.elements}contains(a){return null==this.items[a.id]}touch(a){if(a.loaded)if(null==this.items[a.id]){var b=new Ka(a);b.previous=this.last;this.last=b;null!==b.previous&&(b.previous.next=b);this.items[a.id]=b;this.elements++;null===this.first&&(this.first=b);this.numPoints+=a.numPoints}else b=this.items[a.id],null===b.previous?null!==b.next&&(this.first=b.next,this.first.previous=null,b.previous=this.last,b.next=null,this.last=b,b.previous.next=
21
- b):null!==b.next&&(b.previous.next=b.next,b.next.previous=b.previous,b.previous=this.last,b.next=null,this.last=b,b.previous.next=b)}remove(a){var b=this.items[a.id];b&&(1===this.elements?this.last=this.first=null:(b.previous||(this.first=b.next,this.first.previous=null),b.next||(this.last=b.previous,this.last.next=null),b.previous&&b.next&&(b.previous.next=b.next,b.next.previous=b.previous)),delete this.items[a.id],this.elements--,this.numPoints-=a.numPoints)}getLRUItem(){return null===this.first?
22
- null:this.first.node}toString(){for(var a='{ ',b=this.first;null!==b;)a+=b.node.id,null!==b.next&&(a+=', '),b=b.next;return a=a+'}'+('('+this.size()+')')}freeMemory(){if(!(1>=this.elements))for(;this.numPoints>u.pointLoadLimit;)this.disposeDescendants(this.first.node)}disposeDescendants(a){var b=[];for(b.push(a);0<b.length;){a=b.pop();a.dispose();this.remove(a);for(var c in a.children)a.children.hasOwnProperty(c)&&a.children[c].loaded&&b.push(a.children[c])}}}class y{constructor(){this.workers=[];
23
- for(var a=0;a<y.URLS.length;a++)this.workers.push([])}getWorker(a){return 0<this.workers[a].length?this.workers[a].pop():new Worker(u.workerPath+y.URLS[a])}returnWorker(a,b){this.workers[a].push(b)}runTask(a,b,c,e){var d=this,f=this.getWorker(a);f.onmessage=function(c){b(c);d.returnWorker(a,f)};void 0!==e?f.postMessage(c,e):f.postMessage(c)}}y.BINARY_DECODER=0;y.LAS_LAZ=1;y.LAS_DECODER=2;y.GREYHOUND=3;y.DEM=4;y.EPT_LAS_ZIP_DECODER=5;y.EPT_BINARY_DECODER=6;y.URLS='/workers/BinaryDecoderWorker.js /workers/LASLAZWorker.js /workers/LASDecoderWorker.js /workers/GreyhoundBinaryDecoderWorker.js /workers/DEMWorker.js /workers/EptLaszipDecoderWorker.js /workers/EptBinaryDecoderWorker.js'.split(' ');
24
- var u={debug:{},workerPath:function(){if(document.currentScript&&document.currentScript.src){var a=(new URL(document.currentScript.src+'/..')).href;'/'===a.slice(-1)&&(a=a.slice(0,-1));return a}console.error('Potree: Was unable to find its script path using document.currentScript.');return''}(),maxNodesLoadGPUFrame:20,maxDEMLevel:0,maxNodesLoading:void 0!==navigator.hardwareConcurrency?navigator.hardwareConcurrency:4,pointLoadLimit:1E10,numNodesLoading:0,measureTimings:!1,workerPool:new y,lru:new oa,
25
- pointcloudTransformVersion:void 0},x={POSITION_CARTESIAN:0,COLOR_PACKED:1,COLOR_FLOATS_1:2,COLOR_FLOATS_255:3,NORMAL_FLOATS:4,FILLER:5,INTENSITY:6,CLASSIFICATION:7,NORMAL_SPHEREMAPPED:8,NORMAL_OCT16:9,NORMAL:10,RETURN_NUMBER:11,NUMBER_OF_RETURNS:12,SOURCE_ID:13,INDICES:14,SPACING:15},C={DATA_TYPE_DOUBLE:{ordinal:0,size:8},DATA_TYPE_FLOAT:{ordinal:1,size:4},DATA_TYPE_INT8:{ordinal:2,size:1},DATA_TYPE_UINT8:{ordinal:3,size:1},DATA_TYPE_INT16:{ordinal:4,size:2},DATA_TYPE_UINT16:{ordinal:5,size:2},DATA_TYPE_INT32:{ordinal:6,
26
- size:4},DATA_TYPE_UINT32:{ordinal:7,size:4},DATA_TYPE_INT64:{ordinal:8,size:8},DATA_TYPE_UINT64:{ordinal:9,size:8}},pa=0,qa;for(qa in C)C[pa]=C[qa],pa++;t.POSITION_CARTESIAN=new t(x.POSITION_CARTESIAN,C.DATA_TYPE_FLOAT,3);t.RGBA_PACKED=new t(x.COLOR_PACKED,C.DATA_TYPE_INT8,4);t.COLOR_PACKED=t.RGBA_PACKED;t.RGB_PACKED=new t(x.COLOR_PACKED,C.DATA_TYPE_INT8,3);t.NORMAL_FLOATS=new t(x.NORMAL_FLOATS,C.DATA_TYPE_FLOAT,3);t.FILLER_1B=new t(x.FILLER,C.DATA_TYPE_UINT8,1);t.INTENSITY=new t(x.INTENSITY,C.DATA_TYPE_UINT16,
27
- 1);t.CLASSIFICATION=new t(x.CLASSIFICATION,C.DATA_TYPE_UINT8,1);t.NORMAL_SPHEREMAPPED=new t(x.NORMAL_SPHEREMAPPED,C.DATA_TYPE_UINT8,2);t.NORMAL_OCT16=new t(x.NORMAL_OCT16,C.DATA_TYPE_UINT8,2);t.NORMAL=new t(x.NORMAL,C.DATA_TYPE_FLOAT,3);t.RETURN_NUMBER=new t(x.RETURN_NUMBER,C.DATA_TYPE_UINT8,1);t.NUMBER_OF_RETURNS=new t(x.NUMBER_OF_RETURNS,C.DATA_TYPE_UINT8,1);t.SOURCE_ID=new t(x.SOURCE_ID,C.DATA_TYPE_UINT8,1);t.INDICES=new t(x.INDICES,C.DATA_TYPE_UINT32,1);t.SPACING=new t(x.SPACING,C.DATA_TYPE_FLOAT,
28
- 1);F.prototype.add=function(a){this.attributes.push(a);this.byteSize+=a.byteSize;this.size++};F.prototype.hasColors=function(){for(var a in this.attributes)if(this.attributes[a].name===x.COLOR_PACKED)return!0;return!1};F.prototype.hasNormals=function(){for(var a in this.attributes){var b=this.attributes[a];if(b===t.NORMAL_SPHEREMAPPED||b===t.NORMAL_FLOATS||b===t.NORMAL||b===t.NORMAL_OCT16)return!0}return!1};class fa{constructor(a,b,c){this.name=a;this.box=b;this.tileSize=c;this.level=this.name.length-
29
- 1;this.data=new Float32Array(c*c);this.data.fill(-Infinity);this.children=[];this.mipMap=[this.data];this.mipMapNeedsUpdate=!0}createMipMap(){this.mipMap=[this.data];for(var a=this.tileSize,b=parseInt(a/2),c=this.data;1<b;){for(var e=new Float32Array(b*b),d=0;d<b;d++)for(var f=0;f<b;f++){var g=c[2*d+2*f*a],k=c[2*d+2*f*a+a],h=c[2*d+1+2*f*a],l=c[2*d+1+2*f*a+a],[m,p]=[0,0];isFinite(g)&&(m+=g,p+=1);isFinite(k)&&(m+=k,p+=1);isFinite(h)&&(m+=h,p+=1);isFinite(l)&&(m+=l,p+=1);m/=p;e[d+f*b]=m}this.mipMap.push(e);
30
- c=e;a=b;b=parseInt(b/2)}this.mipMapNeedsUpdate=!1}uv(a){var b=this.box.getSize(new THREE.Vector3);return[(a.x-this.box.min.x)/b.x,(a.y-this.box.min.y)/b.y]}heightAtMipMapLevel(a,b){a=this.uv(a);var c=parseInt(this.tileSize/parseInt(2**b)),e=this.mipMap[b];b=Math.min(a[0]*c,c-1);a=Math.min(a[1]*c,c-1);var d=b%1,f=a%1,[g,k]=[Math.floor(b),Math.ceil(b)],[h,l]=[Math.floor(a),Math.ceil(a)];b=e[g+c*h];a=e[g+c*l];var m=e[k+c*h];c=e[k+c*l];e=isFinite(b)?(1-d)*(1-f):0;var p=isFinite(a)?(1-d)*f:0,n=isFinite(m)?
31
- d*(1-f):0;d=isFinite(c)?d*f:0;f=e+p+n+d;e/=f;p/=f;n/=f;d/=f;if(0===f)return null;f=0;isFinite(b)&&(f+=b*e);isFinite(a)&&(f+=a*p);isFinite(m)&&(f+=m*n);isFinite(c)&&(f+=c*d);return f}height(a){for(var b=null,c=0;c<this.mipMap.length&&(b=this.heightAtMipMapLevel(a,c),null===b);c++);return b}traverse(a,b=0){a(this,b);for(var c of this.children.filter(a=>void 0!==a))c.traverse(a,b+1)}}class ra{constructor(a){this.pointcloud=a;this.boundingBox=this.matrix=null;this.tileSize=64;this.root=null;this.version=
32
- 0}expandAndFindByBox(a,b){if(0===b)return[this.root];for(var c=[],e=[this.root];0<e.length;){var d=e.pop(),f=d.box.getSize(new THREE.Vector3),g=(a.min.x-d.box.min.x)/f.x,k=(a.min.y-d.box.min.y)/f.y,h=(a.max.x-d.box.max.x)/f.x,l=(a.max.y-d.box.max.y)/f.y;g=.5>g?0:1;k=.5>k?0:1;h=.5>h?0:1;l=.5>l?0:1;g=0===g&&0===k&&1===h&&1===l?[0,1,2,3]:g===h&&k===l?[g<<1|k]:[g<<1|k,h<<1|l];for(var m of g)void 0===d.children[m]&&(g=d.box.clone(),0<(m&2)?g.min.x+=f.x/2:g.max.x-=f.x/2,0<(m&1)?g.min.y+=f.y/2:g.max.y-=
33
- f.y/2,g=new fa(d.name+m,g,this.tileSize),d.children[m]=g),g=d.children[m],g.level<b?e.push(g):c.push(g)}return c}childIndex(a){var [b,c]=a.map(a=>.5>a?0:1);return b<<1|c}height(a){if(!this.root)return 0;for(var b=null,c=[this.root];;){var e=c[c.length-1],d=e.height(a);null!==d&&(b=d);d=e.uv(a);d=this.childIndex(d);if(e.children[d])c.push(e.children[d]);else break}return b+this.pointcloud.position.z}update(a){null!==this.matrix&&this.matrix.equals(this.pointcloud.matrixWorld)||(this.matrix=this.pointcloud.matrixWorld.clone(),
34
- this.boundingBox=this.pointcloud.boundingBox.clone().applyMatrix4(this.matrix),this.root=new fa('r',this.boundingBox,this.tileSize),this.version++);var b=null,c;for(c of a)if(void 0===c.demVersion||c.demVersion<this.version){b=c;break}if(null!==b){var e=b.getBoundingBox().clone().applyMatrix4(this.matrix),d=e.getSize(new THREE.Vector3),f=this.expandAndFindByBox(e,b.getLevel());b.demVersion=this.version;a=b.geometryNode.geometry.attributes.position.array;b={boundingBox:{min:b.getBoundingBox().min.toArray(),
35
- max:b.getBoundingBox().max.toArray()},position:(new Float32Array(a)).buffer};var g=this;u.workerPool.runTask(y.DEM,function(a){a=new Float32Array(a.data.dem.data);for(var b of f){for(var c=b.box.getSize(new THREE.Vector3),k=0;k<g.tileSize;k++)for(var p=0;p<g.tileSize;p++){var n=g.tileSize*(b.box.min.x+k/(g.tileSize-1)*c.x-e.min.x)/d.x,q=g.tileSize*(b.box.min.y+p/(g.tileSize-1)*c.y-e.min.y)/d.y;0>n||n>g.tileSize||0>q||q>g.tileSize||(n=Math.min(Math.floor(n),g.tileSize-1),q=Math.min(Math.floor(q),g.tileSize-
36
- 1),b.data[k+g.tileSize*p]=a[n+g.tileSize*q])}b.createMipMap();b.mipMapNeedsUpdate=!0}},b,[b.position])}}}class V{constructor(){this.needsTransformUpdate=!0}getChildren(){}getBoundingBox(){}isLoaded(){}isGeometryNode(){}isTreeNode(){}getLevel(){}getBoundingSphere(){}}class S extends THREE.Object3D{constructor(){super();this.dem=new ra(this)}initialized(){return null!==this.root}}class sa{constructor(){this.spacing=0;this.nodes=this.root=this.boundingBox=null;this.pointAttributes={};this.hierarchyStepSize=
37
- -1;this.serverURL=this.boundingSphere=this.projection=this.offset=this.baseDepth=this.schema=this.loader=null;this.normalize={color:!1,intensity:!1}}}z.IDCount=0;z.prototype=Object.create(V.prototype);z.prototype.isGeometryNode=function(){return!0};z.prototype.isTreeNode=function(){return!1};z.prototype.isLoaded=function(){return this.loaded};z.prototype.getBoundingSphere=function(){return this.boundingSphere};z.prototype.getBoundingBox=function(){return this.boundingBox};z.prototype.getLevel=function(){return this.level};
38
- z.prototype.getChildren=function(){for(var a=[],b=0;8>b;++b)this.children[b]&&a.push(this.children[b]);return a};z.prototype.getURL=function(){var a=this.greyhoundBounds;a=''+this.pcoGeometry.serverURL+'read?depthBegin='+(this.baseLoaded?this.level+this.pcoGeometry.baseDepth:0)+'&depthEnd='+(this.level+this.pcoGeometry.baseDepth+1)+'&bounds=['+(a.min.x+','+a.min.y+','+a.min.z+','+a.max.x+','+a.max.y+','+a.max.z)+']&schema='+JSON.stringify(this.pcoGeometry.schema)+'&compress=true';this.scale&&(a+=
39
- '&scale='+this.scale);if(this.greyhoundOffset){var b=this.greyhoundOffset;a+='&offset=['+b.x+','+b.y+','+b.z+']'}this.baseLoaded||(this.baseLoaded=!0);return a};z.prototype.addChild=function(a){this.children[a.index]=a;a.parent=this};z.prototype.load=function(){!0===this.loading||!0===this.loaded||u.numNodesLoading>=u.maxNodesLoading||(this.loading=!0,u.numNodesLoading++,0===this.level%this.pcoGeometry.hierarchyStepSize&&this.hasChildren?this.loadHierarchyThenPoints():this.loadPoints())};z.prototype.loadPoints=
40
- function(){this.pcoGeometry.loader.load(this)};z.prototype.loadHierarchyThenPoints=function(){var a=[0,2,1,3,4,6,5,7],b=function(b){var c=0;Object.keys(b).forEach(function(b){'swd'===b?c+=1<<a[0]:'nwd'===b?c+=1<<a[1]:'swu'===b?c+=1<<a[2]:'nwu'===b?c+=1<<a[3]:'sed'===b?c+=1<<a[4]:'ned'===b?c+=1<<a[5]:'seu'===b?c+=1<<a[6]:'neu'===b&&(c+=1<<a[7])});return c},c=function(d,e,f){var g,h;Object.keys(d).forEach(function(k){if('n'!==k){switch(k){case 'swd':g=d.swd;h=e+a[0];break;case 'nwd':g=d.nwd;h=e+a[1];
41
- break;case 'swu':g=d.swu;h=e+a[2];break;case 'nwu':g=d.nwu;h=e+a[3];break;case 'sed':g=d.sed;h=e+a[4];break;case 'ned':g=d.ned;h=e+a[5];break;case 'seu':g=d.seu;h=e+a[6];break;case 'neu':g=d.neu,h=e+a[7]}f.push({children:b(g),numPoints:g.n,name:h});c(g,h,f)}})};if(0===this.level%this.pcoGeometry.hierarchyStepSize){var e=this.level+this.pcoGeometry.baseDepth,d=this.greyhoundBounds,f=''+this.pcoGeometry.serverURL+'hierarchy?bounds=['+(d.min.x+','+d.min.y+','+d.min.z+','+d.max.x+','+d.max.y+','+d.max.z)+
42
- ']&depthBegin='+e+'&depthEnd='+(e+this.pcoGeometry.hierarchyStepSize+2);this.scale&&(f+='&scale='+this.scale);this.greyhoundOffset&&(e=this.greyhoundOffset,f+='&offset=['+e.x+','+e.y+','+e.z+']');var g=this,k=new XMLHttpRequest;k.overrideMimeType('text/plain');k.open('GET',f,!0);k.onload=function(a){try{var b=JSON.parse(k.responseText)||{};a=[];g.numPoints=b.n;c(b,g.name,a);b={};b[g.name]=g;for(var d=g.pcoGeometry,e=0;e<a.length;e++){var f=a[e].name,h=a[e].numPoints,w=parseInt(f.charAt(f.length-1)),
43
- r=f.substring(0,f.length-1),v=b[r],t=f.length-1,x=N.createChildAABB(v.boundingBox,w),y=new z(f,d,x,g.scale,g.offset);y.level=t;y.numPoints=h;y.hasChildren=0<a[e].children;y.spacing=d.spacing/Math.pow(2,t);v.addChild(y);b[f]=y}g.loadPoints()}catch(Ja){u.numNodesLoading--,console.error('Potree: Exception thrown parsing points.',Ja)}};k.onerror=function(a){console.log('Potree: Failed to load file! HTTP status '+k.status+', file:'+f,a)};k.send(null)}};z.prototype.getNumPoints=function(){return this.numPoints};
44
- z.prototype.dispose=function(){if(this.geometry&&null!=this.parent){this.geometry.dispose();this.geometry=null;this.loaded=!1;for(var a=0;a<this.oneTimeDisposeHandlers.length;a++)(0,this.oneTimeDisposeHandlers[a])();this.oneTimeDisposeHandlers=[]}};Object.assign(z.prototype,THREE.EventDispatcher.prototype);E.prototype.newerThan=function(a){a=new E(a);return this.versionMajor>a.versionMajor||this.versionMajor===a.versionMajor&&this.versionMinor>a.versionMinor?!0:!1};E.prototype.equalOrHigher=function(a){a=
45
- new E(a);return this.versionMajor>a.versionMajor||this.versionMajor===a.versionMajor&&this.versionMinor>=a.versionMinor?!0:!1};E.prototype.upTo=function(a){return!this.newerThan(a)};class ta{constructor(a,b,c){this.version='string'===typeof a?new E(a):a;this.boundingBox=b;this.scale=c}load(a){if(!a.loaded){var b=this,c=a.getURL(),e=new XMLHttpRequest;e.overrideMimeType('text/plain');e.open('GET',c,!0);e.responseType='arraybuffer';e.overrideMimeType('text/plain; charset=x-user-defined');e.onload=function(){try{b.parse(a,
46
- e.response)}catch(d){console.error('Potree: Exception thrown parsing points.',d),u.numNodesLoading--}};e.onerror=function(a){u.numNodesLoading--;console.error('Potree: Failed to load file.',e,c)};e.send(null)}}parse(a,b){var c=(new DataView(b,b.byteLength-4,4)).getUint32(0,!0),e=a.pcoGeometry.pointAttributes;a.numPoints=c;c=a.boundingBox;var d=new THREE.Vector3;d=a.pcoGeometry.boundingBox.getCenter(d).sub(a.boundingBox.min);b={buffer:b,pointAttributes:e,version:this.version.version,schema:a.pcoGeometry.schema,
47
- min:[c.min.x,c.min.y,c.min.z],max:[c.max.x,c.max.y,c.max.z],offset:d.toArray(),scale:this.scale,normalize:a.pcoGeometry.normalize};u.workerPool.runTask(y.GREYHOUND,function(b){b=b.data;var c=b.attributeBuffers,d=new THREE.Box3((new THREE.Vector3).fromArray(b.tightBoundingBox.min),(new THREE.Vector3).fromArray(b.tightBoundingBox.max)),e=new THREE.BufferGeometry,f;for(f in c){var m=c[f].buffer;parseInt(f)===x.POSITION_CARTESIAN?e.addAttribute('position',new THREE.BufferAttribute(new Float32Array(m),
48
- 3)):parseInt(f)===x.COLOR_PACKED?e.addAttribute('color',new THREE.BufferAttribute(new Uint8Array(m),4,!0)):parseInt(f)===x.INTENSITY?e.addAttribute('intensity',new THREE.BufferAttribute(new Float32Array(m),1)):parseInt(f)===x.CLASSIFICATION?e.addAttribute('classification',new THREE.BufferAttribute(new Uint8Array(m),1)):parseInt(f)===x.NORMAL_SPHEREMAPPED?e.addAttribute('normal',new THREE.BufferAttribute(new Float32Array(m),3)):parseInt(f)===x.NORMAL_OCT16?e.addAttribute('normal',new THREE.BufferAttribute(new Float32Array(m),
49
- 3)):parseInt(f)===x.NORMAL?e.addAttribute('normal',new THREE.BufferAttribute(new Float32Array(m),3)):parseInt(f)===x.INDICES?(m=new THREE.BufferAttribute(new Uint8Array(m),4),m.normalized=!0,e.addAttribute('indices',m)):parseInt(f)===x.SPACING&&(m=new THREE.BufferAttribute(new Float32Array(m),1),e.addAttribute('spacing',m))}d.max.sub(d.min);d.min.set(0,0,0);a.numPoints=b.numPoints;a.geometry=e;a.mean=new THREE.Vector3(...b.mean);a.tightBoundingBox=d;a.loaded=!0;a.loading=!1;u.numNodesLoading--},b,
50
- [b.buffer])}}class H{static getQueryParam(a){a=a.replace(/[[\]]/g,'\\$&');return(a=(new RegExp('[?&]'+a+'(=([^&#]*)|&|#|$)')).exec(window.location.href))?a[2]?decodeURIComponent(a[2].replace(/\+/g,' ')):'':null}static createSchema(a){var b=[{name:'X',size:4,type:'signed'},{name:'Y',size:4,type:'signed'},{name:'Z',size:4,type:'signed'}];a.forEach(function(a){'COLOR_PACKED'===a?(b.push({name:'Red',size:2,type:'unsigned'}),b.push({name:'Green',size:2,type:'unsigned'}),b.push({name:'Blue',size:2,type:'unsigned'})):
51
- 'INTENSITY'===a?b.push({name:'Intensity',size:2,type:'unsigned'}):'CLASSIFICATION'===a&&b.push({name:'Classification',size:1,type:'unsigned'})});return b}static fetch(a,b){var c=new XMLHttpRequest;c.overrideMimeType('text/plain');c.open('GET',a,!0);c.onreadystatechange=function(){4===c.readyState&&(200===c.status||0===c.status?b(null,c.responseText):b(c.responseText))};c.send(null)}static fetchBinary(a,b){var c=new XMLHttpRequest;c.overrideMimeType('text/plain');c.open('GET',a,!0);c.responseType=
52
- 'arraybuffer';c.onreadystatechange=function(){4===c.readyState&&(200===c.status||0===c.status?b(null,c.response):b(c.responseText))};c.send(null)}static pointSizeFrom(a){return a.reduce((a,c)=>a+c.size,0)}static getNormalization(a,b,c){var e=[{name:'X',size:4,type:'floating'},{name:'Y',size:4,type:'floating'},{name:'Z',size:4,type:'floating'},{name:'Red',size:2,type:'unsigned'},{name:'Green',size:2,type:'unsigned'},{name:'Blue',size:2,type:'unsigned'},{name:'Intensity',size:2,type:'unsigned'}];a=
53
- a+'read?depth='+b+'&schema='+JSON.stringify(e);H.fetchBinary(a,function(a,b){if(a)throw Error(a);a=new DataView(b);b=b.byteLength-4;for(var d=H.pointSizeFrom(e),f=!1,h=!1,l=0;l<b;l+=d){if(255<a.getUint16(l+12,!0)||255<a.getUint16(l+14,!0)||255<a.getUint16(l+16,!0))f=!0;255<a.getUint16(l+18,!0)&&(h=!0);if(f&&h)break}c(null,{color:f,intensity:h})})}}N.loadInfoJSON=function(a,b){};N.load=function(a,b){try{var c=a.split('greyhound://')[1];1===c.split('http://').length&&1===c.split('https://').length&&
54
- (c='http://'+c);H.fetch(c+'info',function(a,d){if(a)throw Error(a);a=JSON.parse(d);var e=new E('1.4'),g=a.bounds;d=a.scale||.01;Array.isArray(d)&&(d=Math.min(d[0],d[1],d[2]));H.getQueryParam('scale')&&(d=parseFloat(H.getQueryParam('scale')));var k=Math.max(8,a.baseDepth),h=['POSITION_CARTESIAN'],l=!1,m=!1,p=!1;a.schema.forEach(function(a){'Intensity'===a.name&&h.push('INTENSITY');'Classification'===a.name&&h.push('CLASSIFICATION');'Red'===a.name?l=!0:'Green'===a.name?m=!0:'Blue'===a.name&&(p=!0)});
55
- l&&m&&p&&h.push('COLOR_PACKED');var n=new sa;n.serverURL=c;n.spacing=(g[3]-g[0])/Math.pow(2,k);n.baseDepth=k;n.hierarchyStepSize=5;n.schema=H.createSchema(h);k=H.pointSizeFrom(n.schema);n.pointAttributes=new F(h);n.pointAttributes.byteSize=k;g=new THREE.Box3((new THREE.Vector3).fromArray(g,0),(new THREE.Vector3).fromArray(g,3));k=g.min.clone();g.max.sub(g.min);g.min.set(0,0,0);n.projection=a.srs;n.boundingBox=g;n.boundingSphere=g.getBoundingSphere(new THREE.Sphere);n.scale=d;n.offset=k;n.loader=new ta(e,
56
- g,n.scale);e={};d=new z('r',n,g,d,k);d.level=0;d.hasChildren=!0;d.numPoints=a.numPoints;d.spacing=n.spacing;n.root=d;n.root.load();e.r=d;n.nodes=e;H.getNormalization(c,a.baseDepth,function(a,c){c.color&&(n.normalize.color=!0);c.intensity&&(n.normalize.intensity=!0);b(n)})})}catch(e){console.log('Potree: Loading failed.',a,e),b()}};N.loadPointAttributes=function(a){a=a.pointAttributes;for(var b=new F,c=0;c<a.length;c++)b.add(t[a[c]]);return b};N.createChildAABB=function(a,b){var c=a.min;a=a.max;var e=
57
- (new THREE.Vector3).copy(a).sub(c).multiplyScalar(.5),d=new THREE.Vector3(e.x,0,0),f=new THREE.Vector3(0,e.y,0),g=new THREE.Vector3(0,0,e.z),k=c,h=(new THREE.Vector3).add(c).add(e);1===b?(c=(new THREE.Vector3).copy(k).add(g),a=(new THREE.Vector3).copy(h).add(g)):3===b?(c=(new THREE.Vector3).copy(k).add(g).add(f),a=(new THREE.Vector3).copy(h).add(g).add(f)):0===b?(c=k,a=h):2===b?(c=(new THREE.Vector3).copy(k).add(f),a=(new THREE.Vector3).copy(h).add(f)):5===b?(c=(new THREE.Vector3).copy(k).add(g).add(d),
58
- a=(new THREE.Vector3).copy(h).add(g).add(d)):7===b?(c=(new THREE.Vector3).copy(k).add(e),a=(new THREE.Vector3).copy(h).add(e)):4===b?(c=(new THREE.Vector3).copy(k).add(d),a=(new THREE.Vector3).copy(h).add(d)):6===b&&(c=(new THREE.Vector3).copy(k).add(d).add(f),a=(new THREE.Vector3).copy(h).add(d).add(f));return new THREE.Box3(c,a)};class ua{constructor(a,b,c){this.version='string'===typeof a?new E(a):a;this.boundingBox=b;this.scale=c}load(a){if(!a.loaded){var b=a.getURL();this.version.equalOrHigher('1.4')&&
59
- (b+='.bin');var c=this,e=new XMLHttpRequest;e.open('GET',b,!0);e.responseType='arraybuffer';e.overrideMimeType('text/plain; charset=x-user-defined');e.onload=function(){try{c.parse(a,e.response)}catch(d){u.numNodesLoading--,console.error('Potree: Exception thrown parsing points.',d)}};e.onerror=function(a){u.numNodesLoading--;console.error('Potree: Failed to load file.',e,b)};e.send(null)}}parse(a,b){var c=a.pcoGeometry.pointAttributes,e=b.byteLength/a.pcoGeometry.pointAttributes.byteSize;this.version.upTo('1.5')&&
60
- (a.numPoints=e);b={buffer:b,pointAttributes:c,version:this.version.version,min:[a.boundingBox.min.x,a.boundingBox.min.y,a.boundingBox.min.z],offset:[a.pcoGeometry.offset.x,a.pcoGeometry.offset.y,a.pcoGeometry.offset.z],scale:this.scale,spacing:a.spacing,hasChildren:a.hasChildren,name:a.name};u.workerPool.runTask(y.BINARY_DECODER,function(b){var d=b.data;if(void 0!==d.error)u.numNodesLoading--,console.error('Potree: Binary worker error.',d);else{var e=d.attributeBuffers,k=new THREE.Box3((new THREE.Vector3).fromArray(d.tightBoundingBox.min),
61
- (new THREE.Vector3).fromArray(d.tightBoundingBox.max)),h=new THREE.BufferGeometry,l;for(l in e){var m=e[l].buffer;parseInt(l)===x.POSITION_CARTESIAN?h.addAttribute('position',new THREE.BufferAttribute(new Float32Array(m),3)):parseInt(l)===x.COLOR_PACKED?h.addAttribute('color',new THREE.BufferAttribute(new Uint8Array(m),4,!0)):parseInt(l)===x.INTENSITY?h.addAttribute('intensity',new THREE.BufferAttribute(new Float32Array(m),1)):parseInt(l)===x.CLASSIFICATION?h.addAttribute('classification',new THREE.BufferAttribute(new Uint8Array(m),
62
- 1)):parseInt(l)===x.NORMAL_SPHEREMAPPED?h.addAttribute('normal',new THREE.BufferAttribute(new Float32Array(m),3)):parseInt(l)===x.NORMAL_OCT16?h.addAttribute('normal',new THREE.BufferAttribute(new Float32Array(m),3)):parseInt(l)===x.NORMAL?h.addAttribute('normal',new THREE.BufferAttribute(new Float32Array(m),3)):parseInt(l)===x.INDICES?(m=new THREE.BufferAttribute(new Uint8Array(m),4),m.normalized=!0,h.addAttribute('indices',m)):parseInt(l)===x.SPACING&&(m=new THREE.BufferAttribute(new Float32Array(m),
63
- 1),h.addAttribute('spacing',m))}k.max.sub(k.min);k.min.set(0,0,0);a.numPoints=b.data.buffer.byteLength/c.byteSize;a.geometry=h;a.mean=new THREE.Vector3(...d.mean);a.tightBoundingBox=k;a.loaded=!0;a.loading=!1;a.estimatedSpacing=d.estimatedSpacing;u.numNodesLoading--}},b,[b.buffer])}}var ka=[function(a){return{position:[a.getInt32(0,!0),a.getInt32(4,!0),a.getInt32(8,!0)],intensity:a.getUint16(12,!0),classification:a.getUint8(16,!0)}},function(a){return{position:[a.getInt32(0,!0),a.getInt32(4,!0),a.getInt32(8,
64
- !0)],intensity:a.getUint16(12,!0),classification:a.getUint8(16,!0)}},function(a){return{position:[a.getInt32(0,!0),a.getInt32(4,!0),a.getInt32(8,!0)],intensity:a.getUint16(12,!0),classification:a.getUint8(16,!0),color:[a.getUint16(20,!0),a.getUint16(22,!0),a.getUint16(24,!0)]}},function(a){return{position:[a.getInt32(0,!0),a.getInt32(4,!0),a.getInt32(8,!0)],intensity:a.getUint16(12,!0),classification:a.getUint8(16,!0),color:[a.getUint16(28,!0),a.getUint16(30,!0),a.getUint16(32,!0)]}}];R.prototype.open=
65
- function(){this.readOffset=0;return new Promise(function(a,b){setTimeout(a,0)})};R.prototype.getHeader=function(){var a=this;return new Promise(function(b,c){setTimeout(function(){var c=a.arraybuffer,d={};d.pointsOffset=I(c,Uint32Array,96);d.pointsFormatId=I(c,Uint8Array,104);d.pointsStructSize=I(c,Uint16Array,105);d.pointsCount=I(c,Uint32Array,107);var f=131;d.scale=I(c,Float64Array,f,3);f+=24;d.offset=I(c,Float64Array,f,3);c=I(c,Float64Array,f+24,6);d.maxs=[c[0],c[2],c[4]];d.mins=[c[1],c[3],c[5]];
66
- a.header=d;b(a.header)},0)})};R.prototype.readData=function(a,b,c){var e=this;return new Promise(function(b,f){setTimeout(function(){if(!e.header)return f(Error('Cannot start reading data till a header request is issued'));if(1>=c){a=Math.min(a,e.header.pointsCount-e.readOffset);var d=e.header.pointsOffset+e.readOffset*e.header.pointsStructSize;b({buffer:e.arraybuffer.slice(d,d+a*e.header.pointsStructSize),count:a,hasMoreData:e.readOffset+a<e.header.pointsCount});e.readOffset+=a}else{for(var k=Math.min(a*
67
- c,e.header.pointsCount-e.readOffset),h=0,l=new Uint8Array(Math.ceil(k/c)*e.header.pointsStructSize),m=0;m<k;m++)0===m%c&&(d=e.header.pointsOffset+e.readOffset*e.header.pointsStructSize,d=new Uint8Array(e.arraybuffer,d,e.header.pointsStructSize),l.set(d,h*e.header.pointsStructSize),h++),e.readOffset++;b({buffer:l.buffer,count:h,hasMoreData:e.readOffset<e.header.pointsCount})}},0)})};R.prototype.close=function(){var a=this;return new Promise(function(b,c){a.arraybuffer=null;setTimeout(b,0)})};U.prototype.open=
68
- function(){var a=this;return new Promise(function(b,c){a.dorr({type:'open',arraybuffer:a.arraybuffer},function(a){if(1!==a.status)return c(Error('Failed to open file'));b(!0)})})};U.prototype.getHeader=function(){var a=this;return new Promise(function(b,c){a.dorr({type:'header'},function(a){if(1!==a.status)return c(Error('Failed to get header'));b(a.header)})})};U.prototype.readData=function(a,b,c){var e=this;return new Promise(function(d,f){e.dorr({type:'read',count:a,offset:b,skip:c},function(a){if(1!==
69
- a.status)return f(Error('Failed to read data'));d({buffer:a.buffer,count:a.count,hasMoreData:a.hasMoreData})})})};U.prototype.close=function(){var a=this;return new Promise(function(b,c){a.dorr({type:'close'},function(a){if(1!==a.status)return c(Error('Failed to close file'));b(!0)})})};J.prototype.determineFormat=function(){var a=I(this.arraybuffer,Uint8Array,104),b=(a&128)>>7,c=(a&64)>>6;if(1===b&&1===c)throw Error('Old style compression not supported');this.formatId=a&63;this.isCompressed=1===
70
- b||1===c};J.prototype.determineVersion=function(){var a=new Int8Array(this.arraybuffer,24,2);this.version=10*a[0]+a[1];this.versionAsString=a[0]+'.'+a[1]};J.prototype.open=function(){return this.loader.open()};J.prototype.getHeader=function(){return this.loader.getHeader()};J.prototype.readData=function(a,b,c){return this.loader.readData(a,b,c)};J.prototype.close=function(){return this.loader.close()};da.prototype.getPoint=function(a){if(0>a||a>=this.pointsCount)throw Error('Point index out of range');
71
- return this.decoder(new DataView(this.arrayb,a*this.pointSize,this.pointSize))};class va{constructor(a){this.version='string'===typeof a?new E(a):a}load(a){if(!a.loaded){var b=a.pcoGeometry.pointAttributes,c=a.getURL();this.version.equalOrHigher('1.4')&&(c+='.'+b.toLowerCase());var e=this,d=new XMLHttpRequest;d.open('GET',c,!0);d.responseType='arraybuffer';d.overrideMimeType('text/plain; charset=x-user-defined');d.onload=function(){if(d.response instanceof ArrayBuffer)try{e.parse(a,d.response)}catch(f){console.error('Potree: Exception thrown parsing points.',
72
- f),u.numNodesLoading--}else u.numNodesLoading--,console.log('Potree: LASLAZLoader xhr response is not a ArrayBuffer.')};d.onerror=function(){u.numNodesLoading--;console.log('Potree: LASLAZLoader failed to load file, '+d.status+', file: '+c)};d.send(null)}}parse(a,b){var c=new J(b),e=new La(a);c.open().then(a=>{c.isOpen=!0;return c}).catch(a=>{console.log('Potree: Failed to open file.')}).then(a=>a.getHeader().then(function(b){return[a,b]})).then(a=>{let b=a[0],c=a[1],d=0;var h=function(){return b.readData(1E6,
73
- 0,1).then(function(a){e.push(new da(a.buffer,c.pointsFormatId,c.pointsStructSize,a.count,c.scale,c.offset,c.mins,c.maxs));d+=a.count;if(a.hasMoreData)return h();c.totalRead=d;c.versionAsString=b.versionAsString;c.isCompressed=b.isCompressed;return[b,c,e]})};return h()}).then(a=>{let b=a[0];return b.close().then(function(){b.isOpen=!1;return a.slice(1)}).catch(a=>{if(b.isOpen)return b.close().then(function(){b.isOpen=!1;throw a;});throw a;})})}handle(a,b){}}class La{constructor(a){this.node=a}push(a){var b=
74
- this,c={buffer:a.arrayb,numPoints:a.pointsCount,pointSize:a.pointSize,pointFormatID:2,scale:a.scale,offset:a.offset,mins:a.mins,maxs:a.maxs},e=u.workerPool.getWorker(y.LAS_DECODER);e.onmessage=function(c){var d=new THREE.BufferGeometry,g=a.pointsCount,k=new Float32Array(c.data.position),h=new Uint8Array(c.data.color),l=new Float32Array(c.data.intensity),m=new Uint8Array(c.data.classification),p=new Uint8Array(c.data.returnNumber),n=new Uint8Array(c.data.numberOfReturns),q=new Uint16Array(c.data.pointSourceID),
75
- w=new Uint8Array(c.data.indices);d.addAttribute('position',new THREE.BufferAttribute(k,3));d.addAttribute('color',new THREE.BufferAttribute(h,4,!0));d.addAttribute('intensity',new THREE.BufferAttribute(l,1));d.addAttribute('classification',new THREE.BufferAttribute(m,1));d.addAttribute('returnNumber',new THREE.BufferAttribute(p,1));d.addAttribute('numberOfReturns',new THREE.BufferAttribute(n,1));d.addAttribute('pointSourceID',new THREE.BufferAttribute(q,1));d.addAttribute('indices',new THREE.BufferAttribute(w,
76
- 4));d.attributes.indices.normalized=!0;k=new THREE.Box3((new THREE.Vector3).fromArray(c.data.tightBoundingBox.min),(new THREE.Vector3).fromArray(c.data.tightBoundingBox.max));d.boundingBox=b.node.boundingBox;b.node.tightBoundingBox=k;b.node.geometry=d;b.node.numPoints=g;b.node.loaded=!0;b.node.loading=!1;u.numNodesLoading--;b.node.mean=new THREE.Vector3(...c.data.mean);u.workerPool.returnWorker(y.LAS_DECODER,e)};e.postMessage(c,[c.buffer])}}class wa{constructor(){this.octreeDir=this.url=null;this.spacing=
77
- 0;this.pointAttributes=this.nodes=this.root=this.boundingBox=null;this.hierarchyStepSize=-1;this.loader=null}}class O extends V{constructor(a,b,c){super();this.id=O.IDCount++;this.name=a;this.index=parseInt(a.charAt(a.length-1));this.pcoGeometry=b;this.geometry=null;this.boundingBox=c;this.boundingSphere=c.getBoundingSphere(new THREE.Sphere);this.children={};this.numPoints=0;this.level=null;this.loaded=!1;this.oneTimeDisposeHandlers=[]}isGeometryNode(){return!0}getLevel(){return this.level}isTreeNode(){return!1}isLoaded(){return this.loaded}getBoundingSphere(){return this.boundingSphere}getBoundingBox(){return this.boundingBox}getChildren(){for(var a=
78
- [],b=0;8>b;b++)this.children[b]&&a.push(this.children[b]);return a}getURL(){var a='',b=this.pcoGeometry.loader.version;b.equalOrHigher('1.5')?a=this.pcoGeometry.octreeDir+'/'+this.getHierarchyPath()+'/'+this.name:b.equalOrHigher('1.4')?a=this.pcoGeometry.octreeDir+'/'+this.name:b.upTo('1.3')&&(a=this.pcoGeometry.octreeDir+'/'+this.name);return a}getHierarchyPath(){for(var a='r/',b=this.pcoGeometry.hierarchyStepSize,c=this.name.substr(1),e=Math.floor(c.length/b),d=0;d<e;d++)a+=c.substr(d*b,b)+'/';
79
- return a=a.slice(0,-1)}addChild(a){this.children[a.index]=a;a.parent=this}load(){if(!(!0===this.loading||!0===this.loaded||u.numNodesLoading>=u.maxNodesLoading)){this.loading=!0;u.numNodesLoading++;try{this.pcoGeometry.loader.version.equalOrHigher('1.5')?0===this.level%this.pcoGeometry.hierarchyStepSize&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints():this.loadPoints()}catch(a){u.numNodesLoading--,console.error('Potree: Exception thrown loading points file.',a)}}}loadPoints(){this.pcoGeometry.loader.load(this)}loadHierachyThenPoints(){var a=
80
- this;if(0===a.level%a.pcoGeometry.hierarchyStepSize){var b=a.pcoGeometry.octreeDir+'/'+a.getHierarchyPath()+'/'+a.name+'.hrc',c=new XMLHttpRequest;c.open('GET',b,!0);c.responseType='arraybuffer';c.overrideMimeType('text/plain; charset=x-user-defined');c.onload=function(b){try{var d=c.response,e=new DataView(d);b=[];var g=e.getUint8(0),k=e.getUint32(1,!0);a.numPoints=k;b.push({children:g,numPoints:k,name:a.name});g=[];for(k=5;0<b.length;){for(var h=b.shift(),l=1,m=0;8>m;m++){if(0!==(h.children&l)){var p=
81
- h.name+m,n=e.getUint8(k),q=e.getUint32(k+1,!0);b.push({children:n,numPoints:q,name:p});g.push({children:n,numPoints:q,name:p});k+=5}l*=2}if(k===d.byteLength)break}d={};d[a.name]=a;var w=a.pcoGeometry;for(m=0;m<g.length;m++){var r=g[m].name,v=g[m].numPoints,t=parseInt(r.charAt(r.length-1)),x=r.substring(0,r.length-1),y=d[x],z=r.length-1,A=Z.createChildAABB(y.boundingBox,t),B=new O(r,w,A);B.level=z;B.numPoints=v;B.hasChildren=0<g[m].children;B.spacing=w.spacing/Math.pow(2,z);y.addChild(B);d[r]=B}a.loadPoints()}catch(Ia){u.numNodesLoading--,
82
- console.error('Potree: Exception thrown parsing points.',Ia)}};c.onerror=function(a){u.numNodesLoading--;console.error('Potree: Failed to load file.',c.status,b,a)};c.send(null)}}getNumPoints(){return this.numPoints}dispose(){if(this.geometry&&null!=this.parent){this.geometry.dispose();this.geometry=null;this.loaded=!1;for(var a=0;a<this.oneTimeDisposeHandlers.length;a++)(0,this.oneTimeDisposeHandlers[a])();this.oneTimeDisposeHandlers=[]}}}O.IDCount=0;Object.assign(O.prototype,THREE.EventDispatcher.prototype);
83
- class Z{static load(a,b){var c=new wa;c.url=a;var e=new XMLHttpRequest;e.overrideMimeType('text/plain');e.open('GET',a,!0);e.onload=function(){var d=JSON.parse(e.responseText),f=new E(d.version);0===d.octreeDir.indexOf('http')?c.octreeDir=d.octreeDir:c.octreeDir=a+'/../'+d.octreeDir;c.spacing=d.spacing;c.hierarchyStepSize=d.hierarchyStepSize;c.pointAttributes=d.pointAttributes;var g=new THREE.Vector3(d.boundingBox.lx,d.boundingBox.ly,d.boundingBox.lz),k=new THREE.Vector3(d.boundingBox.ux,d.boundingBox.uy,
84
- d.boundingBox.uz),h=new THREE.Box3(g,k);k=h.clone();d.tightBoundingBox&&(k.min.copy(new THREE.Vector3(d.tightBoundingBox.lx,d.tightBoundingBox.ly,d.tightBoundingBox.lz)),k.max.copy(new THREE.Vector3(d.tightBoundingBox.ux,d.tightBoundingBox.uy,d.tightBoundingBox.uz)));g=g.clone();h.min.sub(g);h.max.sub(g);k.min.sub(g);k.max.sub(g);c.projection=d.projection;c.boundingBox=h;c.tightBoundingBox=k;c.boundingSphere=h.getBoundingSphere(new THREE.Sphere);c.tightBoundingSphere=k.getBoundingSphere(new THREE.Sphere);
85
- c.offset=g;'LAS'===d.pointAttributes||'LAZ'===d.pointAttributes?c.loader=new va(d.version):(c.loader=new ua(d.version,h,d.scale),c.pointAttributes=new F(c.pointAttributes));g={};k='r';h=new O(k,c,h);h.level=0;h.hasChildren=!0;h.spacing=c.spacing;h.numPoints=f.upTo('1.5')?d.hierarchy[0][1]:0;c.root=h;c.root.load();g[k]=h;if(f.upTo('1.4'))for(f=1;f<d.hierarchy.length;f++){k=d.hierarchy[f][0];var l=d.hierarchy[f][1];h=parseInt(k.charAt(k.length-1));var m=k.substring(0,k.length-1);m=g[m];var p=k.length-
86
- 1;h=Z.createChildAABB(m.boundingBox,h);h=new O(k,c,h);h.level=p;h.numPoints=l;h.spacing=c.spacing/Math.pow(2,p);m.addChild(h);g[k]=h}c.nodes=g;b(c)};e.onerror=function(c){u.numNodesLoading--;console.log('Potree: loading file failed.',a,c);b()};e.send(null)}static loadPointAttributes(a){a=a.pointAttributes;for(var b=new F,c=0;c<a.length;c++)b.add(t[a[c]]);return b}static createChildAABB(a,b){var c=a.min.clone();a=a.max.clone();var e=(new THREE.Vector3).subVectors(a,c);0<(b&1)?c.z+=e.z/2:a.z-=e.z/2;
87
- 0<(b&2)?c.y+=e.y/2:a.y-=e.y/2;0<(b&4)?c.x+=e.x/2:a.x-=e.x/2;return new THREE.Box3(c,a)}}class xa{load(a){if(!a.loaded){var b=a.url()+'.bin',c=new XMLHttpRequest;c.open('GET',b,!0);c.responseType='arraybuffer';c.overrideMimeType('text/plain; charset=x-user-defined');c.onreadystatechange=()=>{4===c.readyState&&(200===c.status?this.parse(a,c.response):console.log('Failed '+b+': '+c.status))};try{c.send(null)}catch(e){console.log('Failed request: '+e)}}}parse(a,b){var c=u.workerPool.getWorker(y.EPT_BINARY_DECODER);
88
- c.onmessage=function(b){var d=new THREE.BufferGeometry,e=b.data.numPoints,g=new Float32Array(b.data.position);d.addAttribute('position',new THREE.BufferAttribute(g,3));g=new Uint8Array(b.data.indices);d.addAttribute('indices',new THREE.BufferAttribute(g,4));b.data.color&&(g=new Uint8Array(b.data.color),d.addAttribute('color',new THREE.BufferAttribute(g,4,!0)));b.data.intensity&&(g=new Float32Array(b.data.intensity),d.addAttribute('intensity',new THREE.BufferAttribute(g,1)));b.data.classification&&
89
- (g=new Uint8Array(b.data.classification),d.addAttribute('classification',new THREE.BufferAttribute(g,1)));b.data.returnNumber&&(g=new Uint8Array(b.data.returnNumber),d.addAttribute('returnNumber',new THREE.BufferAttribute(g,1)));b.data.numberOfReturns&&(g=new Uint8Array(b.data.numberOfReturns),d.addAttribute('numberOfReturns',new THREE.BufferAttribute(g,1)));b.data.pointSourceId&&(g=new Uint16Array(b.data.pointSourceId),d.addAttribute('pointSourceID',new THREE.BufferAttribute(g,1)));d.attributes.indices.normalized=
90
- !0;g=new THREE.Box3((new THREE.Vector3).fromArray(b.data.tightBoundingBox.min),(new THREE.Vector3).fromArray(b.data.tightBoundingBox.max));a.doneLoading(d,g,e,new THREE.Vector3(...b.data.mean));u.workerPool.returnWorker(y.EPT_BINARY_DECODER,c)};b={buffer:b,schema:a.ept.schema,scale:a.ept.eptScale,offset:a.ept.eptOffset,mins:(a=>[a.x,a.y,a.z])(a.key.b.min)};c.postMessage(b,[b.buffer])}}class ya{load(a){if(!a.loaded){var b=a.url()+'.laz',c=new XMLHttpRequest;c.open('GET',b,!0);c.responseType='arraybuffer';
91
- c.overrideMimeType('text/plain; charset=x-user-defined');c.onreadystatechange=()=>{4===c.readyState&&(200===c.status?this.parse(a,c.response):console.log('Failed '+b+': '+c.status))};c.send(null)}}parse(a,b){var c=new J(b),e=new Ma(a);c.open().then(()=>{c.isOpen=!0;return c.getHeader()}).then(b=>{var d=0,g=a=>[a.x,a.y,a.z],k=g(a.key.b.min),h=g(a.key.b.max),l=()=>c.readData(1E6,0,1).then(function(a){var f=new da(a.buffer,b.pointsFormatId,b.pointsStructSize,a.count,b.scale,b.offset,k,h);f.extraBytes=
92
- b.extraBytes;f.pointsFormatId=b.pointsFormatId;e.push(f);d+=a.count;if(a.hasMoreData)return l();b.totalRead=d;b.versionAsString=c.versionAsString;b.isCompressed=c.isCompressed;return null});return l()}).then(()=>c.close()).then(()=>c.isOpen=!1).catch(a=>{console.log('Error reading LAZ:',a);if(c.isOpen)c.close().then(()=>{c.isOpen=!1;throw a;});else throw a;})}}class Ma{constructor(a){this.node=a}push(a){var b=u.workerPool.getWorker(y.EPT_LAS_ZIP_DECODER);b.onmessage=c=>{var d=new THREE.BufferGeometry,
93
- e=a.pointsCount,g=new Float32Array(c.data.position),k=new Uint8Array(c.data.color),h=new Float32Array(c.data.intensity),l=new Uint8Array(c.data.classification),m=new Uint8Array(c.data.returnNumber),p=new Uint8Array(c.data.numberOfReturns),n=new Uint16Array(c.data.pointSourceID),q=new Uint8Array(c.data.indices);d.addAttribute('position',new THREE.BufferAttribute(g,3));d.addAttribute('color',new THREE.BufferAttribute(k,4,!0));d.addAttribute('intensity',new THREE.BufferAttribute(h,1));d.addAttribute('classification',
94
- new THREE.BufferAttribute(l,1));d.addAttribute('returnNumber',new THREE.BufferAttribute(m,1));d.addAttribute('numberOfReturns',new THREE.BufferAttribute(p,1));d.addAttribute('pointSourceID',new THREE.BufferAttribute(n,1));d.addAttribute('indices',new THREE.BufferAttribute(q,4));d.attributes.indices.normalized=!0;g=new THREE.Box3((new THREE.Vector3).fromArray(c.data.tightBoundingBox.min),(new THREE.Vector3).fromArray(c.data.tightBoundingBox.max));this.node.doneLoading(d,g,e,new THREE.Vector3(...c.data.mean));
95
- u.workerPool.returnWorker(y.EPT_LAS_ZIP_DECODER,b)};var c={buffer:a.arrayb,numPoints:a.pointsCount,pointSize:a.pointSize,pointFormatID:a.pointsFormatId,scale:a.scale,offset:a.offset,mins:a.mins,maxs:a.maxs};b.postMessage(c,[c.buffer])}}class D{static toVector3(a,b){return(new THREE.Vector3).fromArray(a,b||0)}static toBox3(a){return new THREE.Box3(D.toVector3(a),D.toVector3(a,3))}static findDim(a,b){a=a.find(a=>a.name==b);if(!a)throw Error('Failed to find '+b+' in schema');return a}static sphereFrom(a){return a.getBoundingSphere(new THREE.Sphere)}}
96
- class za{constructor(a,b){let c=b.schema,e=b.bounds,d=b.boundsConforming;var f=[D.findDim(c,'X'),D.findDim(c,'Y'),D.findDim(c,'Z')];let g=f.map(a=>a.scale||1);f=f.map(a=>a.offset||0);this.eptScale=D.toVector3(g);this.eptOffset=D.toVector3(f);this.url=a;this.info=b;this.type='ept';this.schema=c;this.span=b.span||b.ticks;this.boundingBox=D.toBox3(e);this.tightBoundingBox=D.toBox3(d);this.offset=D.toVector3([0,0,0]);this.boundingSphere=D.sphereFrom(this.boundingBox);this.tightBoundingSphere=D.sphereFrom(this.tightBoundingBox);
97
- this.version=new E('1.6');this.fallbackProjection=this.projection=null;b.srs&&b.srs.horizontal&&(this.projection=b.srs.authority+':'+b.srs.horizontal);b.srs.wkt&&(this.projection?this.fallbackProjection=b.srs.wkt:this.projection=b.srs.wkt);this.pointAttributes='LAZ';this.spacing=(this.boundingBox.max.x-this.boundingBox.min.x)/this.span;this.loader='binary'==(b.dataType||'laszip')?new xa:new ya}}class Aa{constructor(a,b,c,e,d,f){this.ept=a;this.b=b;this.d=c;this.x=e||0;this.y=d||0;this.z=f||0}name(){return this.d+
98
- '-'+this.x+'-'+this.y+'-'+this.z}step(a,b,c){let e=this.b.min.clone(),d=this.b.max.clone(),f=(new THREE.Vector3).subVectors(d,e);a?e.x+=f.x/2:d.x-=f.x/2;b?e.y+=f.y/2:d.y-=f.y/2;c?e.z+=f.z/2:d.z-=f.z/2;return new Aa(this.ept,new THREE.Box3(e,d),this.d+1,2*this.x+a,2*this.y+b,2*this.z+c)}children(){for(var a=[],b=0;2>b;++b)for(var c=0;2>c;++c)for(var e=0;2>e;++e){var d=this.step(b,c,e).name();a.includes(d)||(a=a.concat(d))}return a}}class aa extends V{constructor(a,b,c,e,d,f){super();this.ept=a;this.key=
99
- new Aa(this.ept,b||this.ept.boundingBox,c||0,e,d,f);this.id=aa.IDCount++;this.geometry=null;this.tightBoundingBox=this.boundingBox=this.key.b;this.spacing=this.ept.spacing/Math.pow(2,this.key.d);this.boundingSphere=D.sphereFrom(this.boundingBox);this.hasChildren=!1;this.children={};this.numPoints=-1;this.level=this.key.d;this.loading=this.loaded=!1;this.oneTimeDisposeHandlers=[];a=this.key;this.name=this.toPotreeName(a.d,a.x,a.y,a.z);this.index=parseInt(this.name.charAt(this.name.length-1))}isGeometryNode(){return!0}getLevel(){return this.level}isTreeNode(){return!1}isLoaded(){return this.loaded}getBoundingSphere(){return this.boundingSphere}getBoundingBox(){return this.boundingBox}url(){return this.ept.url+
100
- 'ept-data/'+this.filename()}getNumPoints(){return this.numPoints}filename(){return this.key.name()}getChildren(){let a=[];for(let b=0;8>b;b++)this.children[b]&&a.push(this.children[b]);return a}addChild(a){this.children[a.index]=a;a.parent=this}load(){this.loaded||this.loading||u.numNodesLoading>=u.maxNodesLoading||(this.loading=!0,u.numNodesLoading++,-1===this.numPoints&&this.loadHierarchy(),this.loadPoints())}loadPoints(){this.ept.loader.load(this)}async loadHierarchy(){let a={};a[this.filename()]=
101
- this;this.hasChildren=!1;let b=`${this.ept.url}ept-hierarchy/${this.filename()}.json`,c=await (await fetch(b)).json();Object.keys(c).sort((a,b)=>{let [c,d,e,h]=a.split('-').map(a=>parseInt(a,10)),[l,m,p,n]=b.split('-').map(a=>parseInt(a,10));return c<l?-1:c>l?1:d<m?-1:d>m?1:e<p?-1:e>p?1:h<n?-1:h>n?1:0}).forEach(b=>{let [d,e,g,k]=b.split('-').map(a=>parseInt(a,10)),h=a[d-1+'-'+(e>>1)+'-'+(g>>1)+'-'+(k>>1)];if(h){h.hasChildren=!0;var l=h.key.step(e&1,g&1,k&1),m=new aa(this.ept,l.b,l.d,l.x,l.y,l.z);
102
- m.level=d;m.numPoints=c[b];h.addChild(m);a[l.name()]=m}})}doneLoading(a,b,c,e){a.boundingBox=this.boundingBox;this.geometry=a;this.tightBoundingBox=b;this.numPoints=c;this.mean=e;this.loaded=!0;this.loading=!1;u.numNodesLoading--}toPotreeName(a,b,c,e){for(var d='r',f=0;f<a;++f){var g=1<<a-f-1,k=0;b&g&&(k+=4);c&g&&(k+=2);e&g&&(k+=1);d+=k}return d}dispose(){if(this.geometry&&null!=this.parent){this.geometry.dispose();this.geometry=null;this.loaded=!1;for(let a=0;a<this.oneTimeDisposeHandlers.length;a++)(0,this.oneTimeDisposeHandlers[a])();
103
- this.oneTimeDisposeHandlers=[]}}}aa.IDCount=0;class Ba{static async load(a,b){var c=await (await fetch(a)).json();a=a.substr(0,a.lastIndexOf('ept.json'));c=new za(a,c);a=new aa(c);c.root=a;c.root.load();b(c)}}class L{static generateDataTexture(a,b,c){var e=a*b,d=new Uint8Array(4*a*b),f=Math.floor(255*c.r),g=Math.floor(255*c.g);c=Math.floor(255*c.b);for(var k=0;k<e;k++)d[3*k]=f,d[3*k+1]=g,d[3*k+2]=c;a=new THREE.DataTexture(d,a,b,THREE.RGBAFormat);a.needsUpdate=!0;a.magFilter=THREE.NearestFilter;return a}static computeTransformedBoundingBox(a,
104
- b){a=[(new THREE.Vector3(a.min.x,a.min.y,a.min.z)).applyMatrix4(b),(new THREE.Vector3(a.min.x,a.min.y,a.min.z)).applyMatrix4(b),(new THREE.Vector3(a.max.x,a.min.y,a.min.z)).applyMatrix4(b),(new THREE.Vector3(a.min.x,a.max.y,a.min.z)).applyMatrix4(b),(new THREE.Vector3(a.min.x,a.min.y,a.max.z)).applyMatrix4(b),(new THREE.Vector3(a.min.x,a.max.y,a.max.z)).applyMatrix4(b),(new THREE.Vector3(a.max.x,a.max.y,a.min.z)).applyMatrix4(b),(new THREE.Vector3(a.max.x,a.min.y,a.max.z)).applyMatrix4(b),(new THREE.Vector3(a.max.x,
105
- a.max.y,a.max.z)).applyMatrix4(b)];b=new THREE.Box3;b.setFromPoints(a);return b}}var Ca={RAINBOW:[[0,new THREE.Color(.278,0,.714)],[1/6,new THREE.Color(0,0,1)],[2/6,new THREE.Color(0,1,1)],[.5,new THREE.Color(0,1,0)],[4/6,new THREE.Color(1,1,0)],[5/6,new THREE.Color(1,.64,0)],[1,new THREE.Color(1,0,0)]],SPECTRAL:[[0,new THREE.Color(.3686,.3098,.6353)],[.1,new THREE.Color(.1961,.5333,.7412)],[.2,new THREE.Color(.4,.7608,.6471)],[.3,new THREE.Color(.6706,.8667,.6431)],[.4,new THREE.Color(.902,.9608,
106
- .5961)],[.5,new THREE.Color(1,1,.749)],[.6,new THREE.Color(.9961,.8784,.5451)],[.7,new THREE.Color(.9922,.6824,.3804)],[.8,new THREE.Color(.9569,.4275,.2627)],[.9,new THREE.Color(.8353,.2431,.3098)],[1,new THREE.Color(.6196,.0039,.2588)]],PLASMA:[[0,new THREE.Color(.241,.015,.61)],[.1,new THREE.Color(.387,.001,.654)],[.2,new THREE.Color(.524,.025,.653)],[.3,new THREE.Color(.651,.125,.596)],[.4,new THREE.Color(.752,.227,.513)],[.5,new THREE.Color(.837,.329,.431)],[.6,new THREE.Color(.907,.435,.353)],
107
- [.7,new THREE.Color(.963,.554,.272)],[.8,new THREE.Color(.992,.681,.195)],[.9,new THREE.Color(.987,.822,.144)],[1,new THREE.Color(.94,.975,.131)]],YELLOW_GREEN:[[0,new THREE.Color(.1647,.2824,.3451)],[.1,new THREE.Color(.1338,.3555,.4227)],[.2,new THREE.Color(.061,.4319,.4864)],[.3,new THREE.Color(0,.5099,.5319)],[.4,new THREE.Color(0,.5881,.5569)],[.5,new THREE.Color(.137,.665,.5614)],[.6,new THREE.Color(.2906,.7395,.5477)],[.7,new THREE.Color(.4453,.8099,.5201)],[.8,new THREE.Color(.6102,.8748,
108
- .485)],[.9,new THREE.Color(.7883,.9323,.4514)],[1,new THREE.Color(.9804,.9804,.4314)]],VIRIDIS:[[0,new THREE.Color(.267,.005,.329)],[.1,new THREE.Color(.283,.141,.458)],[.2,new THREE.Color(.254,.265,.53)],[.3,new THREE.Color(.207,.372,.553)],[.4,new THREE.Color(.164,.471,.558)],[.5,new THREE.Color(.128,.567,.551)],[.6,new THREE.Color(.135,.659,.518)],[.7,new THREE.Color(.267,.749,.441)],[.8,new THREE.Color(.478,.821,.318)],[.9,new THREE.Color(.741,.873,.15)],[1,new THREE.Color(.993,.906,.144)]],INFERNO:[[0,
109
- new THREE.Color(.077,.042,.206)],[.1,new THREE.Color(.225,.036,.388)],[.2,new THREE.Color(.373,.074,.432)],[.3,new THREE.Color(.522,.128,.42)],[.4,new THREE.Color(.665,.182,.37)],[.5,new THREE.Color(.797,.255,.287)],[.6,new THREE.Color(.902,.364,.184)],[.7,new THREE.Color(.969,.516,.063)],[.8,new THREE.Color(.988,.683,.072)],[.9,new THREE.Color(.961,.859,.298)],[1,new THREE.Color(.988,.998,.645)]],GRAYSCALE:[[0,new THREE.Color(0,0,0)],[1,new THREE.Color(1,1,1)]]},P={};P.vertex='\nprecision highp float;\nprecision highp int;\n\n#define MAX_CLIP_POLYGONS 8\n#define PI 3.141592653589793\n\n'+
110
- THREE.ShaderChunk.logdepthbuf_pars_vertex+'\n\nattribute vec3 position;\nattribute vec3 color;\nattribute float intensity;\nattribute float classification;\nattribute float returnNumber;\nattribute float numberOfReturns;\nattribute float pointSourceID;\nattribute vec4 indices;\nattribute float spacing;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\n\nuniform float uScreenWidth;\nuniform float uScreenHeight;\nuniform float fov;\nuniform float near;\nuniform float far;\n\nuniform bool uDebug;\n\nuniform bool uUseOrthographicCamera;\nuniform float uOrthoWidth;\nuniform float uOrthoHeight;\n\n#define CLIPTASK_NONE 0\n#define CLIPTASK_HIGHLIGHT 1\n#define CLIPTASK_SHOW_INSIDE 2\n#define CLIPTASK_SHOW_OUTSIDE 3\n\n#define CLIPMETHOD_INSIDE_ANY 0\n#define CLIPMETHOD_INSIDE_ALL 1\n\nuniform int clipTask;\nuniform int clipMethod;\n\n#if defined(num_clipboxes) && num_clipboxes > 0\n\tuniform mat4 clipBoxes[num_clipboxes];\n#endif\n\n#if defined(num_clipspheres) && num_clipspheres > 0\n\tuniform mat4 uClipSpheres[num_clipspheres];\n#endif\n\n#if defined(num_clippolygons) && num_clippolygons > 0\n\tuniform int uClipPolygonVCount[num_clippolygons];\n\tuniform vec3 uClipPolygonVertices[num_clippolygons * 8];\n\tuniform mat4 uClipPolygonWVP[num_clippolygons];\n#endif\n\nuniform float size;\nuniform float minSize;\nuniform float maxSize;\n\nuniform float uPCIndex;\nuniform float uOctreeSpacing;\nuniform float uNodeSpacing;\nuniform float uOctreeSize;\nuniform vec3 uBBSize;\nuniform float uLevel;\nuniform float uVNStart;\nuniform bool uIsLeafNode;\n\nuniform vec3 uColor;\nuniform float uOpacity;\n\nuniform vec2 elevationRange;\nuniform vec2 intensityRange;\nuniform float intensityGamma;\nuniform float intensityContrast;\nuniform float intensityBrightness;\nuniform float rgbGamma;\nuniform float rgbContrast;\nuniform float rgbBrightness;\nuniform float uTransition;\nuniform float wRGB;\nuniform float wIntensity;\nuniform float wElevation;\nuniform float wClassification;\nuniform float wReturnNumber;\nuniform float wSourceID;\n\nuniform vec3 uShadowColor;\n\nuniform sampler2D visibleNodes;\nuniform sampler2D gradient;\nuniform sampler2D classificationLUT;\n\n#if defined(num_shadowmaps) && num_shadowmaps > 0\n\tuniform sampler2D uShadowMap[num_shadowmaps];\n\tuniform mat4 uShadowWorldView[num_shadowmaps];\n\tuniform mat4 uShadowProj[num_shadowmaps];\n#endif\n\nvarying vec3 vColor;\nvarying float vLogDepth;\nvarying vec3 vViewPosition;\nvarying float vRadius;\nvarying float vPointSize;\n\nfloat round(float number)\n{\n\treturn floor(number + 0.5);\n}\n\n//---------------------\n//OCTREE\n//---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_lod)) && defined(tree_type_octree)\n\n\t/**\n\t * number of 1-bits up to inclusive index position\n\t * number is treated as if it were an integer in the range 0-255\n\t */\n\tint numberOfOnes(int number, int index)\n\t{\n\t\tint numOnes = 0;\n\t\tint tmp = 128;\n\n\t\tfor(int i = 7; i >= 0; i--)\n\t\t{\n\t\t\tif(number >= tmp)\n\t\t\t{\n\t\t\t\tnumber = number - tmp;\n\n\t\t\t\tif(i <= index)\n\t\t\t\t{\n\t\t\t\t\tnumOnes++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\ttmp = tmp / 2;\n\t\t}\n\n\t\treturn numOnes;\n\t}\n\n\t/**\n\t * checks whether the bit at index is 1\n\t * number is treated as if it were an integer in the range 0-255\n\t */\n\tbool isBitSet(int number, int index)\n\t{\n\t\t//weird multi else if due to lack of proper array, int and bitwise support in WebGL 1.0\n\t\tint powi = 1;\n\n\t\tif(index == 0)\n\t\t{\n\t\t\tpowi = 1;\n\t\t}\n\t\telse if(index == 1)\n\t\t{\n\t\t\tpowi = 2;\n\t\t}\n\t\telse if(index == 2)\n\t\t{\n\t\t\tpowi = 4;\n\t\t}\n\t\telse if(index == 3)\n\t\t{\n\t\t\tpowi = 8;\n\t\t}\n\t\telse if(index == 4)\n\t\t{\n\t\t\tpowi = 16;\n\t\t}\n\t\telse if(index == 5)\n\t\t{\n\t\t\tpowi = 32;\n\t\t}\n\t\telse if(index == 6)\n\t\t{\n\t\t\tpowi = 64;\n\t\t}\n\t\telse if(index == 7)\n\t\t{\n\t\t\tpowi = 128;\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn false;\n\t\t}\n\n\t\tint ndp = number / powi;\n\n\t\treturn mod(float(ndp), 2.0) != 0.0;\n\t}\n\n\t/**\n\t * find the LOD at the point position\n\t */\n\tfloat getLOD()\n\t{\n\t\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\t\tint iOffset = int(uVNStart);\n\t\tfloat depth = uLevel;\n\n\t\tfor(float i = 0.0; i <= 30.0; i++)\n\t\t{\n\t\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\t\n\t\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\t\tindex3d = floor(index3d + 0.5);\n\t\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\t\n\t\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\t\tint mask = int(round(value.r * 255.0));\n\n\t\t\tif(isBitSet(mask, index))\n\t\t\t{\n\t\t\t\t//there are more visible child nodes at this position\n\t\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\n\t\t\t\tint advanceB = int(round(value.b * 255.0));\n\t\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\t\tiOffset = iOffset + advance;\n\t\t\t\t\n\t\t\t\tdepth++;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//no more visible child nodes at this position\n\t\t\t\treturn value.a * 255.0;\n\t\t\t\t//return depth;\n\t\t\t}\n\t\t\t\n\t\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t\t}\n\t\t\t\n\t\treturn depth;\n\t}\n\n\tfloat getSpacing()\n\t{\n\t\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\t\tint iOffset = int(uVNStart);\n\t\tfloat depth = uLevel;\n\t\tfloat spacing = uNodeSpacing;\n\n\t\tfor(float i = 0.0; i <= 30.0; i++)\n\t\t{\n\t\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\t\n\t\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\t\tindex3d = floor(index3d + 0.5);\n\t\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\t\n\t\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\t\tint mask = int(round(value.r * 255.0));\n\t\t\tfloat spacingFactor = value.a;\n\n\t\t\tif(i > 0.0)\n\t\t\t{\n\t\t\t\tspacing = spacing / (255.0 * spacingFactor);\n\t\t\t}\n\t\t\t\n\t\t\tif(isBitSet(mask, index))\n\t\t\t{\n\t\t\t\t//there are more visible child nodes at this position\n\t\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\n\t\t\t\tint advanceB = int(round(value.b * 255.0));\n\t\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\t\tiOffset = iOffset + advance;\n\n\t\t\t\tdepth++;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//no more visible child nodes at this position\n\t\t\t\treturn spacing;\n\t\t\t}\n\t\t\t\n\t\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t\t}\n\t\t\t\n\t\treturn spacing;\n\t}\n\n\tfloat getPointSizeAttenuation()\n\t{\n\t\treturn pow(2.0, getLOD());\n\t}\n#endif\n\n//---------------------\n//KD-TREE\n//---------------------\n#if (defined(adaptive_point_size) || defined(color_type_lod)) && defined(tree_type_kdtree)\n\tfloat getLOD()\n\t{\n\t\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\t\tfloat iOffset = 0.0;\n\t\tfloat depth = 0.0;\n\t\t\t\n\t\tvec3 size = uBBSize;\t\n\t\tvec3 pos = position;\n\t\t\t\n\t\tfor(float i = 0.0; i <= 1000.0; i++)\n\t\t{\n\t\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\t\t\n\t\t\tint children = int(value.r * 255.0);\n\t\t\tfloat next = value.g * 255.0;\n\t\t\tint split = int(value.b * 255.0);\n\t\t\t\n\t\t\tif(next == 0.0)\n\t\t\t{\n\t\t\t \treturn depth;\n\t\t\t}\n\t\t\t\n\t\t\tvec3 splitv = vec3(0.0, 0.0, 0.0);\n\t\t\tif(split == 1)\n\t\t\t{\n\t\t\t\tsplitv.x = 1.0;\n\t\t\t}\n\t\t\telse if(split == 2)\n\t\t\t{\n\t\t\t \tsplitv.y = 1.0;\n\t\t\t}\n\t\t\telse if(split == 4)\n\t\t\t{\n\t\t\t \tsplitv.z = 1.0;\n\t\t\t}\n\t\t\t\n\t\t\tiOffset = iOffset + next;\n\t\t\t\n\t\t\tfloat factor = length(pos * splitv / size);\n\n\t\t\t//Left\n\t\t\tif(factor < 0.5)\n\t\t\t{\n\t\t\t\tif(children == 0 || children == 2)\n\t\t\t\t{\n\t\t\t\t\treturn depth;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//Right\n\t\t\telse\n\t\t\t{\n\t\t\t\tpos = pos - size * splitv * 0.5;\n\t\t\t\tif(children == 0 || children == 1)\n\t\t\t\t{\n\t\t\t\t\treturn depth;\n\t\t\t\t}\n\t\t\t\tif(children == 3)\n\t\t\t\t{\n\t\t\t\t\tiOffset = iOffset + 1.0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsize = size * ((1.0 - (splitv + 1.0) / 2.0) + 0.5);\n\t\t\tdepth++;\n\t\t}\n\t\t\t\n\t\treturn depth;\t\n\t}\n\n\tfloat getPointSizeAttenuation()\n\t{\n\t\treturn 0.5 * pow(1.3, getLOD());\n\t}\n#endif\n\n//formula adapted from: http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/\nfloat getContrastFactor(float contrast)\n{\n\treturn (1.0158730158730156 * (contrast + 1.0)) / (1.0158730158730156 - contrast);\n}\n\nvec3 getRGB()\n{\n\tvec3 rgb = color;\n\t\n\trgb = pow(rgb, vec3(rgbGamma));\n\trgb = rgb + rgbBrightness;\n\trgb = clamp(rgb, 0.0, 1.0);\n\t\n\treturn rgb;\n}\n\nfloat getIntensity()\n{\n\tfloat w = (intensity - intensityRange.x) / (intensityRange.y - intensityRange.x);\n\tw = pow(w, intensityGamma);\n\tw = w + intensityBrightness;\n\tw = (w - 0.5) * getContrastFactor(intensityContrast) + 0.5;\n\tw = clamp(w, 0.0, 1.0);\n\n\treturn w;\n}\n\nvec3 getElevation()\n{\n\tvec4 world = modelMatrix * vec4( position, 1.0 );\n\tfloat w = (world.z - elevationRange.x) / (elevationRange.y - elevationRange.x);\n\treturn texture2D(gradient, vec2(w,1.0-w)).rgb;\n}\n\nvec4 getClassification()\n{\n\tvec2 uv = vec2(classification / 255.0, 0.5);\n\treturn texture2D(classificationLUT, uv);\n}\n\nvec3 getReturnNumber()\n{\n\tif(numberOfReturns == 1.0)\n\t{\n\t\treturn vec3(1.0, 1.0, 0.0);\n\t}\n\telse\n\t{\n\t\tif(returnNumber == 1.0)\n\t\t{\n\t\t\treturn vec3(1.0, 0.0, 0.0);\n\t\t}\n\t\telse if(returnNumber == numberOfReturns)\n\t\t{\n\t\t\treturn vec3(0.0, 0.0, 1.0);\n\t\t}\n\t\telse\n\t\t{\n\t\t\treturn vec3(0.0, 1.0, 0.0);\n\t\t}\n\t}\n}\n\nvec3 getSourceID()\n{\n\tfloat w = mod(pointSourceID, 10.0) / 10.0;\n\treturn texture2D(gradient, vec2(w,1.0 - w)).rgb;\n}\n\nvec3 getCompositeColor()\n{\n\tvec3 c;\n\tfloat w;\n\n\tc += wRGB * getRGB();\n\tw += wRGB;\n\t\n\tc += wIntensity * getIntensity() * vec3(1.0, 1.0, 1.0);\n\tw += wIntensity;\n\t\n\tc += wElevation * getElevation();\n\tw += wElevation;\n\t\n\tc += wReturnNumber * getReturnNumber();\n\tw += wReturnNumber;\n\t\n\tc += wSourceID * getSourceID();\n\tw += wSourceID;\n\t\n\tvec4 cl = wClassification * getClassification();\n c += cl.a * cl.rgb;\n\tw += wClassification * cl.a;\n\n\tc = c / w;\n\t\n\tif(w == 0.0)\n\t{\n\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t}\n\t\n\treturn c;\n}\n\nvec3 getColor()\n{\n\tvec3 color;\n\t\n\t#ifdef color_type_rgb\n\t\tcolor = getRGB();\n\t#elif defined color_type_height\n\t\tcolor = getElevation();\n\t#elif defined color_type_rgb_height\n\t\tvec3 cHeight = getElevation();\n\t\tcolor = (1.0 - uTransition) * getRGB() + uTransition * cHeight;\n\t#elif defined color_type_depth\n\t\tfloat linearDepth = gl_Position.w;\n\t\tfloat expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5;\n\t\tcolor = vec3(linearDepth, expDepth, 0.0);\n\t#elif defined color_type_intensity\n\t\tfloat w = getIntensity();\n\t\tcolor = vec3(w, w, w);\n\t#elif defined color_type_intensity_gradient\n\t\tfloat w = getIntensity();\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_color\n\t\tcolor = uColor;\n\t#elif defined color_type_lod\n\t\tfloat depth = getLOD();\n\t\tfloat w = depth / 10.0;\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_point_index\n\t\tcolor = indices.rgb;\n\t#elif defined color_type_classification\n\t\tvec4 cl = getClassification(); \n\t\tcolor = cl.rgb;\n\t#elif defined color_type_return_number\n\t\tcolor = getReturnNumber();\n\t#elif defined color_type_source\n\t\tcolor = getSourceID();\n\t#elif defined color_type_normal\n\t\tcolor = (modelMatrix * vec4(normal, 0.0)).xyz;\n\t#elif defined color_type_phong\n\t\tcolor = color;\n\t#elif defined color_type_composite\n\t\tcolor = getCompositeColor();\n\t#endif\n\t\n\treturn color;\n}\n\nfloat getPointSize()\n{\n\tfloat pointSize = 1.0;\n\t\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\n\t\n\tfloat r = uOctreeSpacing * 1.7;\n\tvRadius = r;\n\n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera)\n\t\t{\n\t\t\tpointSize = size;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpointSize = size * spacing * projFactor;\n\t\t}\n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera)\n\t\t{\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif(uIsLeafNode && false)\n\t\t\t{\n\t\t\t\tpointSize = size * spacing * projFactor;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\t\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t\t}\n\t\t}\n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n}\n\n#if defined num_clippolygons && num_clippolygons > 0\n\tbool pointInClipPolygon(vec3 point, int polyIdx)\n\t{\n\t\tmat4 wvp = uClipPolygonWVP[polyIdx];\n\n\t\tvec4 pointNDC = wvp * vec4(point, 1.0);\n\t\tpointNDC.xy = pointNDC.xy / pointNDC.w;\n\n\t\tint j = uClipPolygonVCount[polyIdx] - 1;\n\t\tbool c = false;\n\t\tfor(int i = 0; i < 8; i++)\n\t\t{\n\t\t\tif(i == uClipPolygonVCount[polyIdx])\n\t\t\t{\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvec3 verti = uClipPolygonVertices[polyIdx * 8 + i];\n\t\t\tvec3 vertj = uClipPolygonVertices[polyIdx * 8 + j];\n\n\t\t\tif(((verti.y > pointNDC.y) != (vertj.y > pointNDC.y)) && (pointNDC.x < (vertj.x-verti.x) * (pointNDC.y-verti.y) / (vertj.y-verti.y) + verti.x))\n\t\t\t{\n\t\t\t\tc = !c;\n\t\t\t}\n\n\t\t\tj = i;\n\t\t}\n\n\t\treturn c;\n\t}\n#endif\n\nvoid doClipping()\n{\n\t#if !defined color_type_composite\n\t\tvec4 cl = getClassification(); \n\t\tif(cl.a == 0.0)\n\t\t{\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t#endif\n\n\tint clipVolumesCount = 0;\n\tint insideCount = 0;\n\n\t#if defined(num_clipboxes) && num_clipboxes > 0\n\t\tfor(int i = 0; i < num_clipboxes; i++)\n\t\t{\n\t\t\tvec4 clipPosition = clipBoxes[i] * modelMatrix * vec4( position, 1.0 );\n\t\t\tbool inside = -0.5 <= clipPosition.x && clipPosition.x <= 0.5;\n\t\t\tinside = inside && -0.5 <= clipPosition.y && clipPosition.y <= 0.5;\n\t\t\tinside = inside && -0.5 <= clipPosition.z && clipPosition.z <= 0.5;\n\n\t\t\tinsideCount = insideCount + (inside ? 1 : 0);\n\t\t\tclipVolumesCount++;\n\t\t}\t\n\t#endif\n\n\t#if defined(num_clippolygons) && num_clippolygons > 0\n\t\tfor(int i = 0; i < num_clippolygons; i++)\n\t\t{\n\t\t\tbool inside = pointInClipPolygon(position, i);\n\n\t\t\tinsideCount = insideCount + (inside ? 1 : 0);\n\t\t\tclipVolumesCount++;\n\t\t}\n\t#endif\n\n\tbool insideAny = insideCount > 0;\n\tbool insideAll = (clipVolumesCount > 0) && (clipVolumesCount == insideCount);\n\n\tif(clipMethod == CLIPMETHOD_INSIDE_ANY)\n\t{\n\t\tif(insideAny && clipTask == CLIPTASK_HIGHLIGHT)\n\t\t{\n\t\t\tvColor.r += 0.5;\n\t\t}\n\t\telse if(!insideAny && clipTask == CLIPTASK_SHOW_INSIDE)\n\t\t{\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}\n\t\telse if(insideAny && clipTask == CLIPTASK_SHOW_OUTSIDE)\n\t\t{\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}\n\t}\n\telse if(clipMethod == CLIPMETHOD_INSIDE_ALL)\n\t{\n\t\tif(insideAll && clipTask == CLIPTASK_HIGHLIGHT)\n\t\t{\n\t\t\tvColor.r += 0.5;\n\t\t}\n\t\telse if(!insideAll && clipTask == CLIPTASK_SHOW_INSIDE)\n\t\t{\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}\n\t\telse if(insideAll && clipTask == CLIPTASK_SHOW_OUTSIDE)\n\t\t{\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n\t\t}\n\t}\n}\n\nvoid main()\n{\n\tvec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n\tvViewPosition = mvPosition.xyz;\n\tgl_Position = projectionMatrix * mvPosition;\n\n\tvLogDepth = log2(-mvPosition.z);\n\n\t//POINT SIZE\n\tfloat pointSize = getPointSize();\n\tgl_PointSize = pointSize;\n\tvPointSize = pointSize;\n\n\t'+
111
- THREE.ShaderChunk.logdepthbuf_vertex+'\n\n\t//COLOR\n\tvColor = getColor();\n\n\t#if defined hq_depth_pass\n\t\tfloat originalDepth = gl_Position.w;\n\t\tfloat adjustedDepth = originalDepth + 2.0 * vRadius;\n\t\tfloat adjust = adjustedDepth / originalDepth;\n\n\t\tmvPosition.xyz = mvPosition.xyz * adjust;\n\t\tgl_Position = projectionMatrix * mvPosition;\n\t#endif\n\n\t//CLIPPING\n\tdoClipping();\n\n\t#if defined num_clipspheres && num_clipspheres > 0\n\t\tfor(int i = 0; i < num_clipspheres; i++)\n\t\t{\n\t\t\tvec4 sphereLocal = uClipSpheres[i] * mvPosition;\n\n\t\t\tfloat distance = length(sphereLocal.xyz);\n\n\t\t\tif(distance < 1.0)\n\t\t\t{\n\t\t\t\tfloat w = distance;\n\t\t\t\tvec3 cGradient = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\t\t\t\t\n\t\t\t\tvColor = cGradient;\n\t\t\t}\n\t\t}\n\t#endif\n\n\t#if defined num_shadowmaps && num_shadowmaps > 0\n\n\t\tconst float sm_near = 0.1;\n\t\tconst float sm_far = 10000.0;\n\n\t\tfor(int i = 0; i < num_shadowmaps; i++)\n\t\t{\n\t\t\tvec3 viewPos = (uShadowWorldView[i] * vec4(position, 1.0)).xyz;\n\t\t\tfloat distanceToLight = abs(viewPos.z);\n\t\t\t\n\t\t\tvec4 projPos = uShadowProj[i] * uShadowWorldView[i] * vec4(position, 1);\n\t\t\tvec3 nc = projPos.xyz / projPos.w;\n\t\t\t\n\t\t\tfloat u = nc.x * 0.5 + 0.5;\n\t\t\tfloat v = nc.y * 0.5 + 0.5;\n\n\t\t\tvec2 sampleStep = vec2(1.0 / (2.0*1024.0), 1.0 / (2.0*1024.0)) * 1.5;\n\t\t\tvec2 sampleLocations[9];\n\n\t\t\tsampleLocations[0] = vec2(0.0, 0.0);\n\t\t\tsampleLocations[1] = sampleStep;\n\t\t\tsampleLocations[2] = -sampleStep;\n\t\t\tsampleLocations[3] = vec2(sampleStep.x, -sampleStep.y);\n\t\t\tsampleLocations[4] = vec2(-sampleStep.x, sampleStep.y);\n\t\t\tsampleLocations[5] = vec2(0.0, sampleStep.y);\n\t\t\tsampleLocations[6] = vec2(0.0, -sampleStep.y);\n\t\t\tsampleLocations[7] = vec2(sampleStep.x, 0.0);\n\t\t\tsampleLocations[8] = vec2(-sampleStep.x, 0.0);\n\n\t\t\tfloat visibleSamples = 0.0;\n\t\t\tfloat numSamples = 0.0;\n\n\t\t\tfloat bias = vRadius * 2.0;\n\n\t\t\tfor(int j = 0; j < 9; j++)\n\t\t\t{\n\t\t\t\tvec4 depthMapValue = texture2D(uShadowMap[i], vec2(u, v) + sampleLocations[j]);\n\n\t\t\t\tfloat linearDepthFromSM = depthMapValue.x + bias;\n\t\t\t\tfloat linearDepthFromViewer = distanceToLight;\n\n\t\t\t\tif(linearDepthFromSM > linearDepthFromViewer)\n\t\t\t\t{\n\t\t\t\t\tvisibleSamples += 1.0;\n\t\t\t\t}\n\n\t\t\t\tnumSamples += 1.0;\n\t\t\t}\n\n\t\t\tfloat visibility = visibleSamples / numSamples;\n\n\t\t\tif(u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0 || nc.x < -1.0 || nc.x > 1.0 || nc.y < -1.0 || nc.y > 1.0 || nc.z < -1.0 || nc.z > 1.0)\n\t\t\t{\n\t\t\t\t//vColor = vec3(0.0, 0.0, 0.2);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tvColor = vColor * visibility + vColor * uShadowColor * (1.0 - visibility);\n\t\t\t}\n\t\t}\n\n\t#endif\n}';
112
- P.fragment='\n\n#if defined USE_LOGDEPTHBUF_EXT || defined paraboloid_point_shape\n\t#extension GL_EXT_frag_depth : enable\n#endif\n\nprecision highp float;\nprecision highp int;\n\n'+THREE.ShaderChunk.logdepthbuf_pars_fragment+'\n\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\nuniform mat4 uProjInv;\nuniform vec3 cameraPosition;\n\nuniform mat4 projectionMatrix;\nuniform float uOpacity;\n\nuniform float blendHardness;\nuniform float blendDepthSupplement;\nuniform float fov;\nuniform float uSpacing;\nuniform float near;\nuniform float far;\nuniform float uPCIndex;\nuniform float uScreenWidth;\nuniform float uScreenHeight;\n\nvarying vec3 vColor;\nvarying float vLogDepth;\nvarying vec3 vViewPosition;\nvarying float vRadius;\nvarying float vPointSize;\nvarying vec3 vPosition;\n\nvoid main()\n{\n\tvec3 color = vColor;\n\tfloat depth = gl_FragCoord.z;\n\n\t#if defined circle_point_shape || defined paraboloid_point_shape\n\t\tfloat u = (2.0 * gl_PointCoord.x) - 1.0;\n\t\tfloat v = (2.0 * gl_PointCoord.y) - 1.0;\n\t#endif\n\t\n\t#if defined circle_point_shape\n\t\tfloat cc = (u*u) + (v*v);\n\t\tif(cc > 1.0)\n\t\t{\n\t\t\tdiscard;\n\t\t}\n\t#endif\n\n\t#if defined color_type_point_index\n\t\tgl_FragColor = vec4(color, uPCIndex / 255.0);\n\t#else\n\t\tgl_FragColor = vec4(color, uOpacity);\n\t#endif\n\n\t#if defined paraboloid_point_shape\n\t\tfloat wi = -( u*u + v*v);\n\t\tvec4 pos = vec4(vViewPosition, 1.0);\n\t\tpos.z += wi * vRadius;\n\t\tfloat linearDepth = -pos.z;\n\t\tpos = projectionMatrix * pos;\n\t\tpos = pos / pos.w;\n\t\tfloat expDepth = pos.z;\n\t\tdepth = (pos.z + 1.0) / 2.0;\n\n\t\tgl_FragDepthEXT = depth;\n\t\t\n\t\t#if defined color_type_depth\n\t\t\tcolor.r = linearDepth;\n\t\t\tcolor.g = expDepth;\n\t\t#endif\n\t#endif\n\t\n\t'+
113
- THREE.ShaderChunk.logdepthbuf_fragment+'\n\n\t#if defined weighted_splats\n\t\tfloat distance = 2.0 * length(gl_PointCoord.xy - 0.5);\n\t\tfloat weight = max(0.0, 1.0 - distance);\n\t\tweight = pow(weight, 1.5);\n\n\t\tgl_FragColor.a = weight;\n\t\tgl_FragColor.xyz = gl_FragColor.xyz * weight;\n\t#endif\n}';class M extends THREE.RawShaderMaterial{constructor(a={}){super();this.visibleNodesTexture=L.generateDataTexture(2048,1,new THREE.Color(16777215));this.visibleNodesTexture.minFilter=THREE.NearestFilter;
114
- this.visibleNodesTexture.magFilter=THREE.NearestFilter;var b=function(a,b){return void 0!==a?a:b},c=b(a.size,1),e=b(a.minSize,2),d=b(a.maxSize,50);a=b(a.treeType,W.OCTREE);this._pointSizeType=Q.FIXED;this._shape=X.SQUARE;this._pointColorType=A.RGB;this._weighted=this._useClipBox=!1;this._gradient=Ca.SPECTRAL;this._treeType=a;this._snapEnabled=this._useEDL=!1;this._numSnapshots=0;this._defaultElevationRangeChanged=this._defaultIntensityRangeChanged=!1;this.clipBoxes=[];this.clipPolygons=[];this.gradientTexture=
115
- M.generateGradientTexture(this._gradient);this.fog=this.lights=!1;this.defines=new Map;this.attributes={position:{type:'fv',value:[]},color:{type:'fv',value:[]},normal:{type:'fv',value:[]},intensity:{type:'f',value:[]},classification:{type:'f',value:[]},returnNumber:{type:'f',value:[]},numberOfReturns:{type:'f',value:[]},pointSourceID:{type:'f',value:[]},indices:{type:'fv',value:[]}};this.uniforms={level:{type:'f',value:0},vnStart:{type:'f',value:0},spacing:{type:'f',value:1},blendHardness:{type:'f',
116
- value:2},blendDepthSupplement:{type:'f',value:0},fov:{type:'f',value:1},screenWidth:{type:'f',value:1},screenHeight:{type:'f',value:1},near:{type:'f',value:.1},far:{type:'f',value:1},uColor:{type:'c',value:new THREE.Color(16777215)},uOpacity:{type:'f',value:1},size:{type:'f',value:c},minSize:{type:'f',value:e},maxSize:{type:'f',value:d},octreeSize:{type:'f',value:0},bbSize:{type:'fv',value:[0,0,0]},elevationRange:{type:'2fv',value:[0,0]},clipBoxCount:{type:'f',value:0},clipPolygonCount:{type:'i',
117
- value:0},clipBoxes:{type:'Matrix4fv',value:[]},clipPolygons:{type:'3fv',value:[]},clipPolygonVCount:{type:'iv',value:[]},clipPolygonVP:{type:'Matrix4fv',value:[]},visibleNodes:{type:'t',value:this.visibleNodesTexture},pcIndex:{type:'f',value:0},gradient:{type:'t',value:this.gradientTexture},classificationLUT:{type:'t',value:this.classificationTexture},uHQDepthMap:{type:'t',value:null},toModel:{type:'Matrix4f',value:[]},diffuse:{type:'fv',value:[1,1,1]},transition:{type:'f',value:.5},intensityRange:{type:'fv',
118
- value:[0,65E3]},intensityGamma:{type:'f',value:1},intensityContrast:{type:'f',value:0},intensityBrightness:{type:'f',value:0},rgbGamma:{type:'f',value:1},rgbContrast:{type:'f',value:0},rgbBrightness:{type:'f',value:0},wRGB:{type:'f',value:1},wIntensity:{type:'f',value:0},wElevation:{type:'f',value:0},wClassification:{type:'f',value:0},wReturnNumber:{type:'f',value:0},wSourceID:{type:'f',value:0},useOrthographicCamera:{type:'b',value:!1},clipTask:{type:'i',value:1},clipMethod:{type:'i',value:1},uSnapshot:{type:'tv',
119
- value:[]},uSnapshotDepth:{type:'tv',value:[]},uSnapView:{type:'Matrix4fv',value:[]},uSnapProj:{type:'Matrix4fv',value:[]},uSnapProjInv:{type:'Matrix4fv',value:[]},uSnapViewInv:{type:'Matrix4fv',value:[]},uShadowColor:{type:'3fv',value:[0,0,0]},uFilterReturnNumberRange:{type:'fv',value:[0,7]},uFilterNumberOfReturnsRange:{type:'fv',value:[0,7]},uFilterGPSTimeClipRange:{type:'fv',value:[0,7]}};this.classification=Da.DEFAULT;this.defaultAttributeValues.normal=[0,0,0];this.defaultAttributeValues.classification=
120
- [0,0,0];this.defaultAttributeValues.indices=[0,0,0,0];c=this.getDefines();this.vertexShader=c+P.vertex;this.fragmentShader=c+P.fragment;this.vertexColors=THREE.VertexColors}setDefine(a,b){void 0!==b&&null!==b?this.defines.get(a)!==b&&(this.defines.set(a,b),this.updateShaderSource()):this.removeDefine(a)}removeDefine(a){this.defines.delete(a)}updateShaderSource(){var a=this.getDefines();this.vertexShader=a+P.vertex;this.fragmentShader=a+P.fragment;1===this.opacity?(this.blending=THREE.NoBlending,this.transparent=
121
- !1,this.depthWrite=this.depthTest=!0,this.depthFunc=THREE.LessEqualDepth):1>this.opacity&&!this.useEDL&&(this.blending=THREE.AdditiveBlending,this.transparent=!0,this.depthTest=!1,this.depthWrite=!0,this.depthFunc=THREE.AlwaysDepth);this.weighted&&(this.blending=THREE.AdditiveBlending,this.depthTest=this.transparent=!0,this.depthWrite=!1);this.needsUpdate=!0}onBeforeCompile(a,b){b.capabilities.logarithmicDepthBuffer&&(a.fragmentShader='#define USE_LOGDEPTHBUF\n#define USE_LOGDEPTHBUF_EXT\n#define EPSILON 1e-6\n'+
122
- a.fragmentShader,a.vertexShader='#define USE_LOGDEPTHBUF\n#define USE_LOGDEPTHBUF_EXT\n#define EPSILON 1e-6\n'+a.vertexShader)}getDefines(){var a=[];this.pointSizeType===Q.FIXED?a.push('#define fixed_point_size'):this.pointSizeType===Q.ATTENUATED?a.push('#define attenuated_point_size'):this.pointSizeType===Q.ADAPTIVE&&a.push('#define adaptive_point_size');this.shape===X.SQUARE?a.push('#define square_point_shape'):this.shape===X.CIRCLE?a.push('#define circle_point_shape'):this.shape===X.PARABOLOID&&
123
- a.push('#define paraboloid_point_shape');this._useEDL&&a.push('#define use_edl');this._snapEnabled&&a.push('#define snap_enabled');this._pointColorType===A.RGB?a.push('#define color_type_rgb'):this._pointColorType===A.COLOR?a.push('#define color_type_color'):this._pointColorType===A.DEPTH?a.push('#define color_type_depth'):this._pointColorType===A.HEIGHT?a.push('#define color_type_height'):this._pointColorType===A.INTENSITY?a.push('#define color_type_intensity'):this._pointColorType===A.INTENSITY_GRADIENT?
124
- a.push('#define color_type_intensity_gradient'):this._pointColorType===A.LOD?a.push('#define color_type_lod'):this._pointColorType===A.POINT_INDEX?a.push('#define color_type_point_index'):this._pointColorType===A.CLASSIFICATION?a.push('#define color_type_classification'):this._pointColorType===A.RETURN_NUMBER?a.push('#define color_type_return_number'):this._pointColorType===A.SOURCE?a.push('#define color_type_source'):this._pointColorType===A.NORMAL?a.push('#define color_type_normal'):this._pointColorType===
125
- A.PHONG?a.push('#define color_type_phong'):this._pointColorType===A.RGB_HEIGHT?a.push('#define color_type_rgb_height'):this._pointColorType===A.COMPOSITE&&a.push('#define color_type_composite');this._treeType===W.OCTREE?a.push('#define tree_type_octree'):this._treeType===W.KDTREE&&a.push('#define tree_type_kdtree');this.weighted&&a.push('#define weighted_splats');var b;for([,b]of this.defines)a.push(b);return a.join('\n')}setClipBoxes(a){if(a){var b=this.clipBoxes.length!==a.length&&(0===a.length||
126
- 0===this.clipBoxes.length);this.uniforms.clipBoxCount.value=this.clipBoxes.length;this.clipBoxes=a;b&&this.updateShaderSource();this.uniforms.clipBoxes.value=new Float32Array(16*this.clipBoxes.length);for(b=0;b<this.clipBoxes.length;b++)this.uniforms.clipBoxes.value.set(a[b].inverse.elements,16*b);for(b=0;b<this.uniforms.clipBoxes.value.length;b++)Number.isNaN(this.uniforms.clipBoxes.value[b])&&(this.uniforms.clipBoxes.value[b]=Infinity)}}setClipPolygons(a,b){a&&(this.clipPolygons=a,this.clipPolygons.length!==
127
- a.length&&this.updateShaderSource())}get gradient(){return this._gradient}set gradient(a){this._gradient!==a&&(this._gradient=a,this.gradientTexture=M.generateGradientTexture(this._gradient),this.uniforms.gradient.value=this.gradientTexture)}get useOrthographicCamera(){return this.uniforms.useOrthographicCamera.value}set useOrthographicCamera(a){this.uniforms.useOrthographicCamera.value!==a&&(this.uniforms.useOrthographicCamera.value=a)}get classification(){return this._classification}set classification(a){var b=
128
- {},c;for(c of Object.keys(a))b[c]=a[c].clone();if(void 0===this._classification)a=!1;else{a=Object.keys(b).length===Object.keys(this._classification).length;for(c of Object.keys(b))a=(a=a&&void 0!==this._classification[c])&&b[c].equals(this._classification[c])}a||(this._classification=b,this.recomputeClassification())}recomputeClassification(){this.classificationTexture=M.generateClassificationTexture(this._classification);this.uniforms.classificationLUT.value=this.classificationTexture;this.dispatchEvent({type:'material_property_changed',
129
- target:this})}get numSnapshots(){return this._numSnapshots}set numSnapshots(a){this._numSnapshots=a}get snapEnabled(){return this._snapEnabled}set snapEnabled(a){this._snapEnabled!==a&&(this._snapEnabled=a,this.updateShaderSource())}get spacing(){return this.uniforms.spacing.value}set spacing(a){this.uniforms.spacing.value!==a&&(this.uniforms.spacing.value=a)}get useClipBox(){return this._useClipBox}set useClipBox(a){this._useClipBox!==a&&(this._useClipBox=a,this.updateShaderSource())}get clipTask(){return this.uniforms.clipTask.value}set clipTask(a){this.uniforms.clipTask.value=
130
- a}get clipMethod(){return this.uniforms.clipMethod.value}set clipMethod(a){this.uniforms.clipMethod.value=a}get weighted(){return this._weighted}set weighted(a){this._weighted!==a&&(this._weighted=a,this.updateShaderSource())}get fov(){return this.uniforms.fov.value}set fov(a){this.uniforms.fov.value!==a&&(this.uniforms.fov.value=a,this.updateShaderSource())}get screenWidth(){return this.uniforms.screenWidth.value}set screenWidth(a){this.uniforms.screenWidth.value!==a&&(this.uniforms.screenWidth.value=
131
- a,this.updateShaderSource())}get screenHeight(){return this.uniforms.screenHeight.value}set screenHeight(a){this.uniforms.screenHeight.value!==a&&(this.uniforms.screenHeight.value=a,this.updateShaderSource())}get near(){return this.uniforms.near.value}set near(a){this.uniforms.near.value!==a&&(this.uniforms.near.value=a)}get far(){return this.uniforms.far.value}set far(a){this.uniforms.far.value!==a&&(this.uniforms.far.value=a)}get opacity(){return this.uniforms.uOpacity.value}set opacity(a){this.uniforms&&
132
- this.uniforms.uOpacity&&this.uniforms.uOpacity.value!==a&&(this.uniforms.uOpacity.value=a,this.updateShaderSource(),this.dispatchEvent({type:'opacity_changed',target:this}),this.dispatchEvent({type:'material_property_changed',target:this}))}get pointColorType(){return this._pointColorType}set pointColorType(a){this._pointColorType!==a&&(this._pointColorType=a,this.updateShaderSource(),this.dispatchEvent({type:'point_color_type_changed',target:this}),this.dispatchEvent({type:'material_property_changed',
133
- target:this}))}get pointSizeType(){return this._pointSizeType}set pointSizeType(a){this._pointSizeType!==a&&(this._pointSizeType=a,this.updateShaderSource(),this.dispatchEvent({type:'point_size_type_changed',target:this}),this.dispatchEvent({type:'material_property_changed',target:this}))}get useEDL(){return this._useEDL}set useEDL(a){this._useEDL!==a&&(this._useEDL=a,this.updateShaderSource())}get color(){return this.uniforms.uColor.value}set color(a){this.uniforms.uColor.value.equals(a)||(this.uniforms.uColor.value.copy(a),
134
- this.dispatchEvent({type:'color_changed',target:this}),this.dispatchEvent({type:'material_property_changed',target:this}))}get shape(){return this._shape}set shape(a){this._shape!==a&&(this._shape=a,this.updateShaderSource(),this.dispatchEvent({type:'point_shape_changed',target:this}),this.dispatchEvent({type:'material_property_changed',target:this}))}get treeType(){return this._treeType}set treeType(a){this._treeType!==a&&(this._treeType=a,this.updateShaderSource())}get bbSize(){return this.uniforms.bbSize.value}set bbSize(a){this.uniforms.bbSize.value=
135
- a}get size(){return this.uniforms.size.value}set size(a){this.uniforms.size.value!==a&&(this.uniforms.size.value=a,this.dispatchEvent({type:'point_size_changed',target:this}),this.dispatchEvent({type:'material_property_changed',target:this}))}get elevationRange(){return this.uniforms.elevationRange.value}set elevationRange(a){if(this.uniforms.elevationRange.value[0]!==a[0]||this.uniforms.elevationRange.value[1]!==a[1])this.uniforms.elevationRange.value=a,this._defaultElevationRangeChanged=!0,this.dispatchEvent({type:'material_property_changed',
136
- target:this})}get heightMin(){return this.uniforms.elevationRange.value[0]}set heightMin(a){this.elevationRange=[a,this.elevationRange[1]]}get heightMax(){return this.uniforms.elevationRange.value[1]}set heightMax(a){this.elevationRange=[this.elevationRange[0],a]}get transition(){return this.uniforms.transition.value}set transition(a){this.uniforms.transition.value=a}get intensityRange(){return this.uniforms.intensityRange.value}set intensityRange(a){a instanceof Array&&2===a.length&&(a[0]!==this.uniforms.intensityRange.value[0]||
137
- a[1]!==this.uniforms.intensityRange.value[1])&&(this.uniforms.intensityRange.value=a,this._defaultIntensityRangeChanged=!0,this.dispatchEvent({type:'material_property_changed',target:this}))}get intensityGamma(){return this.uniforms.intensityGamma.value}set intensityGamma(a){this.uniforms.intensityGamma.value!==a&&(this.uniforms.intensityGamma.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get intensityContrast(){return this.uniforms.intensityContrast.value}set intensityContrast(a){this.uniforms.intensityContrast.value!==
138
- a&&(this.uniforms.intensityContrast.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get intensityBrightness(){return this.uniforms.intensityBrightness.value}set intensityBrightness(a){this.uniforms.intensityBrightness.value!==a&&(this.uniforms.intensityBrightness.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get rgbGamma(){return this.uniforms.rgbGamma.value}set rgbGamma(a){this.uniforms.rgbGamma.value!==a&&(this.uniforms.rgbGamma.value=a,
139
- this.dispatchEvent({type:'material_property_changed',target:this}))}get rgbContrast(){return this.uniforms.rgbContrast.value}set rgbContrast(a){this.uniforms.rgbContrast.value!==a&&(this.uniforms.rgbContrast.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get rgbBrightness(){return this.uniforms.rgbBrightness.value}set rgbBrightness(a){this.uniforms.rgbBrightness.value!==a&&(this.uniforms.rgbBrightness.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get weightRGB(){return this.uniforms.wRGB.value}set weightRGB(a){this.uniforms.wRGB.value!==
140
- a&&(this.uniforms.wRGB.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get weightIntensity(){return this.uniforms.wIntensity.value}set weightIntensity(a){this.uniforms.wIntensity.value!==a&&(this.uniforms.wIntensity.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get weightElevation(){return this.uniforms.wElevation.value}set weightElevation(a){this.uniforms.wElevation.value!==a&&(this.uniforms.wElevation.value=a,this.dispatchEvent({type:'material_property_changed',
141
- target:this}))}get weightClassification(){return this.uniforms.wClassification.value}set weightClassification(a){this.uniforms.wClassification.value!==a&&(this.uniforms.wClassification.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get weightReturnNumber(){return this.uniforms.wReturnNumber.value}set weightReturnNumber(a){this.uniforms.wReturnNumber.value!==a&&(this.uniforms.wReturnNumber.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}get weightSourceID(){return this.uniforms.wSourceID.value}set weightSourceID(a){this.uniforms.wSourceID.value!==
142
- a&&(this.uniforms.wSourceID.value=a,this.dispatchEvent({type:'material_property_changed',target:this}))}static generateGradientTexture(a){var b=document.createElement('canvas');b.width=64;b.height=64;var c=b.getContext('2d');c.rect(0,0,64,64);for(var e=c.createLinearGradient(0,0,64,64),d=0;d<a.length;d++){var f=a[d];e.addColorStop(f[0],'#'+f[1].getHexString())}c.fillStyle=e;c.fill();a=new THREE.CanvasTexture(b);a.needsUpdate=!0;a.minFilter=THREE.LinearFilter;return a}static generateClassificationTexture(a){for(var b=
143
- new Uint8Array(262144),c=0;256>c;c++)for(var e=0;256>e;e++){var d=c+256*e;var f=a[c]?a[c]:a[c%32]?a[c%32]:a.DEFAULT;b[4*d]=255*f.x;b[4*d+1]=255*f.y;b[4*d+2]=255*f.z;b[4*d+3]=255*f.w}a=new THREE.DataTexture(b,256,256,THREE.RGBAFormat);a.magFilter=THREE.NearestFilter;a.needsUpdate=!0;return a}disableEvents(){void 0===this._hiddenListeners&&(this._hiddenListeners=this._listeners,this._listeners={})}enableEvents(){this._listeners=this._hiddenListeners;this._hiddenListeners=void 0}copyFrom(a){for(var b of this.uniforms)this.uniforms[b].value=
144
- a.uniforms[b].value}}class ba extends V{constructor(){super();this.children={};this.octree=this.sceneNode=null}getNumPoints(){return this.geometryNode.numPoints}isLoaded(){return!0}isTreeNode(){return!0}isGeometryNode(){return!1}getLevel(){return this.geometryNode.level}getBoundingSphere(){return this.geometryNode.boundingSphere}getBoundingBox(){return this.geometryNode.boundingBox}getChildren(){for(var a=[],b=0;8>b;b++)this.children[b]&&a.push(this.children[b]);return a}getPointsInBox(a){if(!this.sceneNode)return null;
145
- var b=this.geometryNode.buffer,c=b.offset('position'),e=b.stride,d=new DataView(b.data);a=(new THREE.Matrix4).getInverse(a.matrixWorld);a=(new THREE.Matrix4).multiplyMatrices(a,this.sceneNode.matrixWorld);for(var f=[],g=new THREE.Vector4,k=0;k<b.numElements;k++){var h=d.getFloat32(k*e+c+0,!0),l=d.getFloat32(k*e+c+4,!0),m=d.getFloat32(k*e+c+8,!0);g.set(h,l,m,1);g.applyMatrix4(a);-.5<g.x&&.5>g.x&&-.5<g.y&&.5>g.y&&-.5<g.z&&.5>g.z&&(g.set(h,l,m,1).applyMatrix4(this.sceneNode.matrixWorld),f.push(new THREE.Vector3(g.x,
146
- g.y,g.z)))}return f}get name(){return this.geometryNode.name}}class ca extends S{constructor(a,b){super();this.pointBudget=Infinity;this.pcoGeometry=a;this.boundingBox=this.pcoGeometry.boundingBox;this.boundingSphere=this.boundingBox.getBoundingSphere(new THREE.Sphere);this.material=b||new M;this.visiblePointsTarget=2E6;this.minimumNodePixelSize=150;this.level=0;this.position.copy(a.offset);this.updateMatrix();this.showBoundingBox=!1;this.boundingBoxNodes=[];this.loadQueue=[];this.visibleBounds=new THREE.Box3;
147
- this.visibleNodes=[];this.visibleGeometry=[];this.generateDEM=!1;this.profileRequests=[];this.name='';this.tempVector3=new THREE.Vector3;b=[this.pcoGeometry.tightBoundingBox,this.getBoundingBoxWorld()].find(a=>void 0!==a);this.updateMatrixWorld(!0);b=L.computeTransformedBoundingBox(b,this.matrixWorld);var c=b.max.z;this.material.heightMin=b.min.z;this.material.heightMax=c;this.projection=a.projection;this.root=this.pcoGeometry.root}setName(a){this.name!==a&&(this.name=a,this.dispatchEvent({type:'name_changed',
148
- name:a,pointcloud:this}))}getName(){return this.name}toTreeNode(a,b){var c=new ba,e=new THREE.Points(a.geometry,this.material);e.name=a.name;e.position.copy(a.boundingBox.min);e.frustumCulled=!0;e.onBeforeRender=(b,d,e,h,l,m)=>{l.program&&(b.getContext().useProgram(l.program.program),l.program.getUniforms().map.level&&(d=a.getLevel(),l.uniforms.level.value=d,l.program.getUniforms().map.level.setValue(b.getContext(),d)),this.visibleNodeTextureOffsets&&l.program.getUniforms().map.vnStart&&(d=this.visibleNodeTextureOffsets.get(c),
149
- l.uniforms.vnStart.value=d,l.program.getUniforms().map.vnStart.setValue(b.getContext(),d)),l.program.getUniforms().map.pcIndex&&(d=c.pcIndex?c.pcIndex:this.visibleNodes.indexOf(c),l.uniforms.pcIndex.value=d,l.program.getUniforms().map.pcIndex.setValue(b.getContext(),d)))};c.geometryNode=a;c.sceneNode=e;c.pointcloud=this;c.children={};for(var d in a.children)c.children[d]=a.children[d];b?(d=parseInt(a.name[a.name.length-1]),b.sceneNode.add(e),b.children[d]=c):(this.root=c,this.add(e));a.oneTimeDisposeHandlers.push(function(){var d=
150
- parseInt(a.name[a.name.length-1]);b.sceneNode.remove(c.sceneNode);b.children[d]=a});return c}updateVisibleBounds(){for(var a=[],b=0;b<this.visibleNodes.length;b++){for(var c=this.visibleNodes[b],e=!0,d=0;d<c.children.length;d++){var f=c.children[d];f instanceof ba?e=e&&!f.sceneNode.visible:f instanceof O&&(e=!0)}e&&a.push(c)}this.visibleBounds.min=new THREE.Vector3(Infinity,Infinity,Infinity);this.visibleBounds.max=new THREE.Vector3(-Infinity,-Infinity,-Infinity);for(b=0;b<a.length;b++)c=a[b],this.visibleBounds.expandByPoint(c.getBoundingBox().min),
151
- this.visibleBounds.expandByPoint(c.getBoundingBox().max)}updateMaterial(a,b,c,e){a.fov=Math.PI/180*c.fov;a.screenWidth=e.domElement.clientWidth;a.screenHeight=e.domElement.clientHeight;a.spacing=this.pcoGeometry.spacing*Math.max(this.scale.x,this.scale.y,this.scale.z);a.near=c.near;a.far=c.far;a.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.getSize(new THREE.Vector3).x}computeVisibilityTextureData(a,b){u.measureTimings&&performance.mark('computeVisibilityTextureData-start');var c=new Uint8Array(4*
152
- a.length),e=new Map;a=a.slice();a.sort(function(a,b){a=a.geometryNode.name;b=b.geometryNode.name;return a.length!==b.length?a.length-b.length:a<b?-1:a>b?1:0});for(var d=new THREE.Vector3,f=(a,b)=>{d.subVectors(b.center,a.origin);a=d.dot(a.direction);var c=d.dot(d)-a*a;b=b.radius*b.radius;if(c>b)return null;b=a+Math.sqrt(b-c);return 0>b?null:b},g=new Map,k=new Map,h=0;h<a.length;h++){var l=a[h];e.set(l,h);for(var m=[],p=0;8>p;p++){var n=l.children[p];n&&n.constructor===ba&&a.includes(n,h)&&m.push(n)}c[4*
153
- h]=0;c[4*h+1]=0;c[4*h+2]=0;c[4*h+3]=l.getLevel();for(p=0;p<m.length;p++){n=m[p];var q=parseInt(n.geometryNode.name.substr(-1));c[4*h]+=Math.pow(2,q);0===p&&(n=a.indexOf(n,h),c[4*h+1]=n-h>>8,c[4*h+2]=(n-h)%256)}p=l.getBoundingBox().clone().getBoundingSphere(new THREE.Sphere);p.applyMatrix4(l.sceneNode.matrixWorld);p.applyMatrix4(b.matrixWorldInverse);m=new THREE.Ray(b.position,b.getWorldDirection(this.tempVector3));m=f(m,p);p=p.center.distanceTo(b.position)+p.radius;null===m&&(m=p);m=Math.max(m,p);
154
- g.has(l.getLevel())?(p=g.get(l.getLevel()),p=Math.max(p,m),g.set(l.getLevel(),p)):g.set(l.getLevel(),m);if(!l.geometryNode.hasChildren){var w={distance:m,i:h};k.set(l,w)}}for([l,w]of k)if(a=l.getLevel(),m=w.distance,h=w.i,!(4>a)){var r,v;for([r,v]of g)m<1.2*v&&(c[4*h+3]=r)}u.measureTimings&&(performance.mark('computeVisibilityTextureData-end'),performance.measure('render.computeVisibilityTextureData','computeVisibilityTextureData-start','computeVisibilityTextureData-end'));return{data:c,offsets:e}}nodeIntersectsProfile(a,
155
- b){a=a.boundingBox.clone().applyMatrix4(this.matrixWorld).getBoundingSphere(new THREE.Sphere);for(var c=!1,e=0;e<b.points.length-1;e++){var d=new THREE.Vector3(b.points[e+0].x,b.points[e+0].y,a.center.z),f=new THREE.Vector3(b.points[e+1].x,b.points[e+1].y,a.center.z);d=(new THREE.Line3(d,f)).closestPointToPoint(a.center,!0).distanceTo(a.center);c=c||d<a.radius+b.width}return c}nodesOnRay(a,b){var c=[];b=b.clone();for(var e=0;e<a.length;e++){var d=a[e],f=d.getBoundingSphere(new THREE.Sphere).clone().applyMatrix4(this.matrixWorld);
156
- b.intersectsSphere(f)&&c.push(d)}return c}updateMatrixWorld(a){!0===this.matrixAutoUpdate&&this.updateMatrix();if(!0===this.matrixWorldNeedsUpdate||!0===a)this.parent?this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1}hideDescendants(a){for(var b=[],c=0;c<a.children.length;c++){var e=a.children[c];e.visible&&b.push(e)}for(;0<b.length;)for(a=b.shift(),a.visible=!1,c=0;c<a.children.length;c++)e=a.children[c],e.visible&&
157
- b.push(e)}moveToOrigin(){this.position.set(0,0,0);this.updateMatrixWorld(!0);var a=L.computeTransformedBoundingBox(this.boundingBox,this.matrixWorld);this.position.set(0,0,0).sub(a.getCenter(new THREE.Vector3))}moveToGroundPlane(){this.updateMatrixWorld(!0);var a=L.computeTransformedBoundingBox(this.boundingBox,this.matrixWorld);this.position.y+=-a.min.y}getBoundingBoxWorld(){this.updateMatrixWorld(!0);return L.computeTransformedBoundingBox(this.boundingBox,this.matrixWorld)}getPointsInProfile(a,
158
- b,c){c={segments:[],boundingBox:new THREE.Box3,projectedBoundingBox:new THREE.Box2};for(var e=0;e<a.points.length-1;e++){var d=a.points[e],f=a.points[e+1],g=this.getProfile(d,f,a.width,b),k={start:d,end:f,points:g,project:null};c.segments.push(k);c.boundingBox.expandByPoint(g.boundingBox.min);c.boundingBox.expandByPoint(g.boundingBox.max)}a=new THREE.Vector3;for(e=0;e<c.segments.length;e++)k=c.segments[e],d=k.start,f=k.end,b=function(a,b,c,d){var e=new THREE.Vector3(1,0,0);b=(new THREE.Vector3).subVectors(b,
159
- a);b.y=0;b.normalize();var f=Math.acos(e.dot(b));0<b.z&&(f=-f);return function(b){var e=(new THREE.Matrix4).makeTranslation(-a.x,-d.min.y,-a.z),g=(new THREE.Matrix4).makeRotationY(-f),h=(new THREE.Matrix4).makeTranslation(c.x,0,0);b=b.clone();b.applyMatrix4(e);b.applyMatrix4(g);b.applyMatrix4(h);return b}}(d,f,a.clone(),c.boundingBox.clone()),k.project=b,a.x+=(new THREE.Vector3(d.x,0,d.z)).distanceTo(new THREE.Vector3(f.x,0,f.z)),a.y+=f.y-d.y;c.projectedBoundingBox.min.x=0;c.projectedBoundingBox.min.y=
160
- c.boundingBox.min.y;c.projectedBoundingBox.max.x=a.x;c.projectedBoundingBox.max.y=c.boundingBox.max.y;return c}getProfile(a,b,c,e,d){}getVisibleExtent(){return this.visibleBounds.applyMatrix4(this.matrixWorld)}pick(a,b,c,e={}){var d=a.renderer,f=a.pRenderer;performance.mark('pick-start');var g=(a,b)=>void 0!==a?a:b;a=g(e.pickWindowSize,17);g(e.pickOutsideClipRegion,!1);var k=d.getSize(new THREE.Vector3),h=Math.ceil(g(e.width,k.width));k=Math.ceil(g(e.height,k.height));var l=g(e.pointSizeType,this.material.pointSizeType);
161
- g=g(e.pointSize,this.material.size);c=this.nodesOnRay(this.visibleNodes,c);if(0===c.length)return null;if(!this.pickState){var m=new THREE.Scene,p=new M;p.pointColorType=A.POINT_INDEX;this.pickState={renderTarget:new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),material:p,scene:m}}m=this.pickState;p=m.material;p.pointSizeType=l;p.shape=this.material.shape;p.size=g;p.uniforms.minSize.value=this.material.uniforms.minSize.value;p.uniforms.maxSize.value=
162
- this.material.uniforms.maxSize.value;p.classification=this.material.classification;e.pickClipped?(p.clipBoxes=this.material.clipBoxes,p.clipTask=this.material.clipTask===T.HIGHLIGHT?T.NONE:this.material.clipTask):p.clipBoxes=[];this.updateMaterial(p,c,b,d);m.renderTarget.setSize(h,k);g=new THREE.Vector2(e.x,e.y);l=d.getContext();l.enable(l.SCISSOR_TEST);l.scissor(parseInt(g.x-(a-1)/2),parseInt(g.y-(a-1)/2),parseInt(a),parseInt(a));d.state.buffers.depth.setTest(p.depthTest);d.state.buffers.depth.setMask(p.depthWrite);
163
- d.state.setBlending(THREE.NoBlending);d.setRenderTarget(m.renderTarget);l.clearColor(0,0,0,0);d.clearTarget(m.renderTarget,!0,!0,!0);var n=this.material;this.material=p;f.renderOctree(this,c,b,m.renderTarget);this.material=n;b=parseInt(Math.min(Math.max(0,g.x-(a-1)/2),h));f=parseInt(Math.min(Math.max(0,g.y-(a-1)/2),k));h=parseInt(Math.min(b+a,h)-b);k=parseInt(Math.min(f+a,k)-f);h=new Uint8Array(4*h*k);l.readPixels(b,f,a,a,l.RGBA,l.UNSIGNED_BYTE,h);d.setRenderTarget(null);d.resetGLState();d.setScissorTest(!1);
164
- l.disable(l.SCISSOR_TEST);k=new Uint32Array(h.buffer);d=[];for(b=0;b<a;b++)for(f=0;f<a;f++)if(m=b+f*a,l=Math.pow(b-(a-1)/2,2)+Math.pow(f-(a-1)/2,2),g=h[4*m+3],h[4*m+3]=0,m=k[m],(0!==g||0!==m)&&void 0!==g&&void 0!==m){var q={pIndex:m,pcIndex:g,distanceToCenter:l};e.all?d.push(q):0<d.length?l<d[0].distanceToCenter&&(d[0]=q):d.push(q)}for(q of d){a={};if(!c[q.pcIndex])return null;k=c[q.pcIndex];h=k.sceneNode;k=k.geometryNode.geometry;for(var r in k.attributes)l=k.attributes[r],'position'===r&&(b=l.array[3*
165
- q.pIndex],f=l.array[3*q.pIndex+1],b=new THREE.Vector3(b,f,l.array[3*q.pIndex+2]),b.applyMatrix4(h.matrixWorld),a[r]=b);q.point=a}performance.mark('pick-end');performance.measure('pick','pick-start','pick-end');return e.all?d.map(a=>a.point):0===d.length?null:d[0].point}*getFittedBoxGen(a){var b=new THREE.Box3,c=(new THREE.Matrix4).getInverse(a.matrixWorld);for(q of this.visibleNodes)if(q.sceneNode){for(var e=q.geometryNode.buffer,d=e.offset('position'),f=e.stride,g=new DataView(e.data),k=(new THREE.Matrix4).multiplyMatrices(c,
166
- q.sceneNode.matrixWorld),h=new THREE.Vector4,l=0;l<e.numElements;l++){var m=g.getFloat32(l*f+d+0,!0),p=g.getFloat32(l*f+d+4,!0),n=g.getFloat32(l*f+d+8,!0);h.set(m,p,n,1);h.applyMatrix4(k);-.5<h.x&&.5>h.x&&-.5<h.y&&.5>h.y&&-.5<h.z&&.5>h.z&&b.expandByPoint(h)}yield}var q=b.getCenter(new THREE.Vector3).applyMatrix4(a.matrixWorld);c=new THREE.Object3D;c.position.copy(q);c.scale.copy(a.scale);c.rotation.copy(a.rotation);a=(new THREE.Vector3).subVectors(b.max,b.min);c.scale.multiply(a);yield c}getFittedBox(a,
167
- b=Infinity){var c=new THREE.Box3,e=(new THREE.Matrix4).getInverse(a.matrixWorld),d;for(d of this.visibleNodes)if(d.sceneNode&&!(d.getLevel()>b))for(var f=d.geometryNode.buffer,g=f.offset('position'),k=f.stride,h=new DataView(f.data),l=(new THREE.Matrix4).multiplyMatrices(e,d.sceneNode.matrixWorld),m=new THREE.Vector4,p=0;p<f.numElements;p++){var n=h.getFloat32(p*k+g+0,!0),q=h.getFloat32(p*k+g+4,!0),r=h.getFloat32(p*k+g+8,!0);m.set(n,q,r,1);m.applyMatrix4(l);-.5<m.x&&.5>m.x&&-.5<m.y&&.5>m.y&&-.5<m.z&&
168
- .5>m.z&&c.expandByPoint(m)}e=c.getCenter(new THREE.Vector3).applyMatrix4(a.matrixWorld);b=new THREE.Object3D;b.position.copy(e);b.scale.copy(a.scale);b.rotation.copy(a.rotation);a=(new THREE.Vector3).subVectors(c.max,c.min);b.scale.multiply(a);return b}get progress(){return this.visibleNodes.length/this.visibleGeometry.length}find(a){var b=null,c;for(c of a)b='r'===c?this.root:b.children[c];return b}}class ha extends V{constructor(){super();this.kdtree=this.sceneNode=this.right=this.left=null}getNumPoints(){return this.geometryNode.numPoints}isLoaded(){return!0}isTreeNode(){return!0}isGeometryNode(){return!1}getLevel(){return this.geometryNode.level}getBoundingSphere(){return this.geometryNode.boundingSphere}getBoundingBox(){return this.geometryNode.boundingBox}toTreeNode(a){var b=
169
- null;this.left===a?b=this.left:this.right===a&&(b=this.right);if(b.loaded){a=new ha;var c=THREE.PointCloud(b.geometry,this.kdtree.material);c.visible=!1;a.kdtree=this.kdtree;a.geometryNode=b;a.sceneNode=c;a.parent=this;a.left=this.geometryNode.left;a.right=this.geometryNode.right}}getChildren(){var a=[];this.left&&a.push(this.left);this.right&&a.push(this.right);return a}}class Ea extends S{constructor(a){super();this.root=null;a.root?this.root=a.root:a.addEventListener('hierarchy_loaded',()=>{this.root=
170
- a.root});this.visiblePointsTarget=2E6;this.minimumNodePixelSize=150;this.position.sub(a.offset);this.updateMatrix();this.numVisiblePoints=this.numVisibleNodes=0;this.boundingBoxNodes=[];this.loadQueue=[];this.visibleNodes=[];this.pcoGeometry=a;this.boundingBox=this.pcoGeometry.boundingBox;this.boundingSphere=this.pcoGeometry.boundingSphere;this.material=new M({vertexColors:THREE.VertexColors,size:.05,treeType:W.KDTREE});this.material.sizeType=Q.ATTENUATED;this.material.size=.05;this.profileRequests=
171
- [];this.name=''}getBoundingBoxWorld(){this.updateMatrixWorld(!0);return L.computeTransformedBoundingBox(this.boundingBox,this.matrixWorld)}setName(a){this.name!==a&&(this.name=a,this.dispatchEvent({type:'name_changed',name:a,pointcloud:this}))}getName(){return this.name}getLevel(){return this.level}toTreeNode(a,b){var c=new ha,e=new THREE.Points(a.geometry,this.material);e.frustumCulled=!0;e.onBeforeRender=(b,e,g,k,h,l)=>{h.program&&(b.getContext().useProgram(h.program.program),h.program.getUniforms().map.level&&
172
- (e=a.getLevel(),h.uniforms.level.value=e,h.program.getUniforms().map.level.setValue(b.getContext(),e)),this.visibleNodeTextureOffsets&&h.program.getUniforms().map.vnStart&&(e=this.visibleNodeTextureOffsets.get(c),h.uniforms.vnStart.value=e,h.program.getUniforms().map.vnStart.setValue(b.getContext(),e)),h.program.getUniforms().map.pcIndex&&(e=c.pcIndex?c.pcIndex:this.visibleNodes.indexOf(c),h.uniforms.pcIndex.value=e,h.program.getUniforms().map.pcIndex.setValue(b.getContext(),e)))};c.geometryNode=
173
- a;c.sceneNode=e;c.pointcloud=this;c.left=a.left;c.right=a.right;b?(b.sceneNode.add(e),b.left===a?b.left=c:b.right===a&&(b.right=c)):(this.root=c,this.add(e));a.oneTimeDisposeHandlers.push(function(){b.sceneNode.remove(c.sceneNode);b.left===c?b.left=a:b.right===c&&(b.right=a)});return c}updateMaterial(a,b,c,e){a.fov=Math.PI/180*c.fov;a.screenWidth=e.domElement.clientWidth;a.screenHeight=e.domElement.clientHeight;a.spacing=this.pcoGeometry.spacing;a.near=c.near;a.far=c.far;this.maxLevel>a.levels&&(a.levels=
174
- this.maxLevel+2);b=this.boundingBox.getSize(new THREE.Vector3);a.bbSize=[b.x,b.y,b.z]}updateVisibleBounds(){}hideDescendants(a){for(var b=[],c=0;c<a.children.length;c++){var e=a.children[c];e.visible&&b.push(e)}for(;0<b.length;)for(e=b.shift(),e.visible=!1,e.boundingBoxNode&&(e.boundingBoxNode.visible=!1),c=0;c<e.children.length;c++)a=e.children[c],a.visible&&b.push(a)}updateMatrixWorld(a){!0===this.matrixAutoUpdate&&this.updateMatrix();if(!0===this.matrixWorldNeedsUpdate||!0===a)void 0===this.parent?
175
- this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1}nodesOnRay(a,b){var c=[];b=b.clone();for(var e=0;e<a.length;e++){var d=a[e],f=d.getBoundingSphere(new THREE.Sphere).clone().applyMatrix4(d.sceneNode.matrixWorld);b.intersectsSphere(f)&&c.push(d)}return c}pick(a,b,c,e={}){var d=a.renderer,f=a.pRenderer;performance.mark('pick-start');var g=(a,b)=>void 0!==a?a:b;a=g(e.pickWindowSize,17);g(e.pickOutsideClipRegion,!1);
176
- var k=d.getSize(new THREE.Vector3),h=Math.ceil(g(e.width,k.width));k=Math.ceil(g(e.height,k.height));var l=g(e.pointSizeType,this.material.pointSizeType);g=g(e.pointSize,this.material.size);c=this.nodesOnRay(this.visibleNodes,c);if(0===c.length)return null;if(!this.pickState){var m=new THREE.Scene,p=new M;p.pointColorType=A.POINT_INDEX;this.pickState={renderTarget:new THREE.WebGLRenderTarget(1,1,{minFilter:THREE.LinearFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),material:p,scene:m}}m=
177
- this.pickState;p=m.material;p.pointSizeType=l;p.shape=this.material.shape;p.size=g;p.uniforms.minSize.value=this.material.uniforms.minSize.value;p.uniforms.maxSize.value=this.material.uniforms.maxSize.value;p.classification=this.material.classification;e.pickClipped?(p.clipBoxes=this.material.clipBoxes,p.clipTask=this.material.clipTask===T.HIGHLIGHT?T.NONE:this.material.clipTask):p.clipBoxes=[];this.updateMaterial(p,c,b,d);m.renderTarget.setSize(h,k);g=new THREE.Vector2(e.x,e.y);l=d.getContext();
178
- l.enable(l.SCISSOR_TEST);l.scissor(parseInt(g.x-(a-1)/2),parseInt(g.y-(a-1)/2),parseInt(a),parseInt(a));d.state.buffers.depth.setTest(p.depthTest);d.state.buffers.depth.setMask(p.depthWrite);d.state.setBlending(THREE.NoBlending);d.clearTarget(m.renderTarget,!0,!0,!0);d.setRenderTarget(m.renderTarget);l.clearColor(0,0,0,0);d.clearTarget(m.renderTarget,!0,!0,!0);var n=this.material;this.material=p;f.renderOctree(this,c,b,m.renderTarget);this.material=n;b=parseInt(Math.min(Math.max(0,g.x-(a-1)/2),h));
179
- f=parseInt(Math.min(Math.max(0,g.y-(a-1)/2),k));h=parseInt(Math.min(b+a,h)-b);k=parseInt(Math.min(f+a,k)-f);h=new Uint8Array(4*h*k);l.readPixels(b,f,a,a,l.RGBA,l.UNSIGNED_BYTE,h);d.setRenderTarget(null);d.resetGLState();d.setScissorTest(!1);l.disable(l.SCISSOR_TEST);k=new Uint32Array(h.buffer);d=[];for(b=0;b<a;b++)for(f=0;f<a;f++)if(m=b+f*a,l=Math.pow(b-(a-1)/2,2)+Math.pow(f-(a-1)/2,2),g=h[4*m+3],h[4*m+3]=0,m=k[m],(0!==g||0!==m)&&void 0!==g&&void 0!==m){var q={pIndex:m,pcIndex:g,distanceToCenter:l};
180
- e.all?d.push(q):0<d.length?l<d[0].distanceToCenter&&(d[0]=q):d.push(q)}for(q of d){a={};if(!c[q.pcIndex])return null;k=c[q.pcIndex];h=k.sceneNode;k=k.geometryNode.geometry;for(var r in k.attributes)l=k.attributes[r],'position'===r&&(b=l.array[3*q.pIndex],f=l.array[3*q.pIndex+1],b=new THREE.Vector3(b,f,l.array[3*q.pIndex+2]),b.applyMatrix4(h.matrixWorld),a[r]=b);q.point=a}performance.mark('pick-end');performance.measure('pick','pick-start','pick-end');return e.all?d.map(a=>a.point):0===d.length?null:
181
- d[0].point}computeVisibilityTextureData(a){u.measureTimings&&performance.mark('computeVisibilityTextureData-start');var b=new Uint8Array(3*a.length),c=new Map;a=a.slice();a.sort(function(a,b){var c=a.geometryNode.level,d=b.geometryNode.level;a=a.geometryNode.number;b=b.geometryNode.number;return c!==d?c-d:a<b?-1:a>b?1:0});for(var e=[],d=0;d<a.length;d++)e.push(a[d].geometryNode.number);for(d=0;d<a.length;d++){var f=a[d];c.set(f,d);var g=0,k=0,h=0;f.geometryNode.left&&0<e.indexOf(f.geometryNode.left.number)&&
182
- (g+=1,k=e.indexOf(f.geometryNode.left.number)-d);f.geometryNode.right&&0<e.indexOf(f.geometryNode.right.number)&&(g+=2,k=0===k?e.indexOf(f.geometryNode.right.number)-d:k);'X'===f.geometryNode.split?h=1:'Y'===f.geometryNode.split?h=2:'Z'===f.geometryNode.split&&(h=4);b[3*d]=g;b[3*d+1]=k;b[3*d+2]=h}u.measureTimings&&(performance.mark('computeVisibilityTextureData-end'),performance.measure('render.computeVisibilityTextureData','computeVisibilityTextureData-start','computeVisibilityTextureData-end'));
183
- return{data:b,offsets:c}}get progress(){return this.pcoGeometry.root?0<u.numNodesLoading?0:1:0}}class Na{constructor(){this.pcoGeometry=this.number=this.boundingBox=this.right=this.left=null;this.loaded=!1;this.level=this.numPoints=0;this.children=[];this.oneTimeDisposeHandlers=[]}isGeometryNode(){return!0}isTreeNode(){return!1}isLoaded(){return this.loaded}getBoundingSphere(){return this.boundingSphere}getBoundingBox(){return this.boundingBox}getChildren(){var a=[];this.left&&a.push(this.left);this.right&&
184
- a.push(this.right);return a}getLevel(){return this.level}load(){if(!(this.loaded||this.loading||u.numNodesLoading>=u.maxNodesLoading)){this.loading=!0;u.numNodesLoading++;var a=this,b=this.pcoGeometry.url+'?node='+this.number,c=new XMLHttpRequest;c.overrideMimeType('text/plain');c.open('GET',b,!0);c.responseType='arraybuffer';c.onload=function(){try{var b=c.response,d=new DataView(b),f=b.byteLength/17,g=new ArrayBuffer(28*f);new DataView(g);var k=new Float32Array(3*f),h=new Uint8Array(4*f),l=new Float32Array(f),
185
- m=new Uint8Array(f),p=new ArrayBuffer(4*f),n=new Uint32Array(p),q=new THREE.Box3;for(b=0;b<f;b++){var r=d.getFloat32(17*b,!0)+a.boundingBox.min.x,t=d.getFloat32(17*b+4,!0)+a.boundingBox.min.y,v=d.getFloat32(17*b+8,!0)+a.boundingBox.min.z,x=d.getUint8(17*b+12,!0),y=d.getUint8(17*b+13,!0),z=d.getUint8(17*b+14,!0),A=d.getUint8(17*b+15,!0),C=d.getUint8(17*b+16,!0);q.expandByPoint(new THREE.Vector3(r,t,v));k[3*b]=r;k[3*b+1]=t;k[3*b+2]=v;h[4*b]=x;h[4*b+1]=y;h[4*b+2]=z;h[4*b+3]=255;l[b]=A;m[b]=C;n[b]=b}var B=
186
- new THREE.BufferGeometry;B.addAttribute('position',new THREE.BufferAttribute(k,3));B.addAttribute('color',new THREE.BufferAttribute(h,4,!0));B.addAttribute('intensity',new THREE.BufferAttribute(l,1));B.addAttribute('classification',new THREE.BufferAttribute(m,1));var D=new THREE.BufferAttribute(new Uint8Array(p),4,!0);B.addAttribute('indices',D);a.geometry=B;a.numPoints=f;a.loaded=!0;a.loading=!1;u.numNodesLoading--}catch(Oa){console.error('Potree: Exception thrown parsing points.',Oa),u.numNodesLoading--}};
187
- c.onerror=function(){u.numNodesLoading--;console.log('Potree: Failed to load file, '+c.status+', file: '+b)};c.send(null)}}dispose(){if(this.geometry&&null!=this.parent){this.geometry.dispose();this.geometry=null;this.loaded=!1;for(var a=0;a<this.oneTimeDisposeHandlers.length;a++)(0,this.oneTimeDisposeHandlers[a])();this.oneTimeDisposeHandlers=[]}}getNumPoints(){return this.numPoints}}class ia extends THREE.EventDispatcher{constructor(){super();this.version=this.numPoints=0;this.boundingBox=null;
188
- this.numNodes=0;this.root=this.url=this.provider=this.name=null;this.levels=0;this._spacing=null;this.pointAttributes=new F(['POSITION_CARTESIAN','COLOR_PACKED'])}static load(a,b){var c=new XMLHttpRequest;c.overrideMimeType('text/plain');c.open('GET',a+'?info',!0);c.onreadystatechange=function(){try{if(4===c.readyState&&200===c.status){var e=JSON.parse(c.responseText),d=new ia;d.url=a;d.name=e.Name;d.provider=e.Provider;d.numNodes=e.Nodes;d.numPoints=e.Points;d.version=e.Version;d.boundingBox=new THREE.Box3((new THREE.Vector3).fromArray(e.BoundingBox.slice(0,
189
- 3)),(new THREE.Vector3).fromArray(e.BoundingBox.slice(3,6)));e.Spacing&&(d.spacing=e.Spacing);var f=d.boundingBox.min.clone().multiplyScalar(-1);d.boundingBox.min.add(f);d.boundingBox.max.add(f);d.offset=f;var g=new THREE.Vector3;d.boundingBox.getCenter(g);var k=d.boundingBox.getSize(new THREE.Vector3).length()/2;d.boundingSphere=new THREE.Sphere(g,k);d.loadHierarchy();b(d)}else 4===c.readyState&&b(null)}catch(h){console.error(h.message),b(null)}};c.send(null)}loadHierarchy(){var a=this.url+'?tree',
190
- b=new XMLHttpRequest;b.overrideMimeType('text/plain');b.open('GET',a,!0);b.responseType='arraybuffer';b.onreadystatechange=()=>{if(4===b.readyState&&200===b.status){var a=b.response,e=a.byteLength/3;a=new DataView(a);for(var d=[],f=null,g=0,k=0;k<e;k++){var h=a.getUint8(3*k,!0),l=0<(h&1),m=0<(h&2),p=0<(h&8),n=0<(h&16),q=null;0<(h&4)?q='X':p&&(q='Y');n&&(q='Z');h=new Na;h.hasLeft=l;h.hasRight=m;h.split=q;h.isLeaf=!l&&!m;h.number=k;h.left=null;h.right=null;h.pcoGeometry=this;h.level=d.length;g=Math.max(g,
191
- h.level);0<d.length?(l=d[d.length-1],h.boundingBox=l.boundingBox.clone(),m=l.boundingBox.getSize(new THREE.Vector3),l.hasLeft&&!l.left?(l.left=h,l.children.push(h),'X'===l.split?h.boundingBox.max.x=h.boundingBox.min.x+m.x/2:'Y'===l.split?h.boundingBox.max.y=h.boundingBox.min.y+m.y/2:'Z'===l.split&&(h.boundingBox.max.z=h.boundingBox.min.z+m.z/2),l=new THREE.Vector3,h.boundingBox.getCenter(l),m=h.boundingBox.getSize(new THREE.Vector3).length()/2):(l.right=h,l.children.push(h),'X'===l.split?h.boundingBox.min.x+=
192
- m.x/2:'Y'===l.split?h.boundingBox.min.y+=m.y/2:'Z'===l.split&&(h.boundingBox.min.z+=m.z/2),l=new THREE.Vector3,h.boundingBox.getCenter(l),m=h.boundingBox.getSize(new THREE.Vector3).length()/2),h.boundingSphere=new THREE.Sphere(l,m)):(f=h,f.boundingBox=this.boundingBox.clone(),l=new THREE.Vector3,f.boundingBox.getCenter(l),m=f.boundingBox.getSize(new THREE.Vector3).length()/2,f.boundingSphere=new THREE.Sphere(l,m));l=h.boundingBox.getSize(new THREE.Vector3);h.spacing=(l.x+l.y+l.z)/3/75;h.estimatedSpacing=
193
- h.spacing;d.push(h);if(h.isLeaf)for(h=!1;!h&&0<d.length;)d.pop(),h=d[d.length-1],h=0<d.length&&h.hasRight&&null==h.right}this.root=f;this.levels=g;this.dispatchEvent({type:'hierarchy_loaded'})}};b.send(null)}get spacing(){if(this._spacing)return this._spacing;if(this.root)return this.root.spacing}set spacing(a){this._spacing=a}}ea.prototype={push:function(a){this.content.push(a);this.bubbleUp(this.content.length-1)},pop:function(){var a=this.content[0],b=this.content.pop();0<this.content.length&&
194
- (this.content[0]=b,this.sinkDown(0));return a},remove:function(a){for(var b=this.content.length,c=0;c<b;c++)if(this.content[c]==a){a=this.content.pop();if(c==b-1)break;this.content[c]=a;this.bubbleUp(c);this.sinkDown(c);break}},size:function(){return this.content.length},bubbleUp:function(a){for(var b=this.content[a],c=this.scoreFunction(b);0<a;){var e=Math.floor((a+1)/2)-1,d=this.content[e];if(c>=this.scoreFunction(d))break;this.content[e]=b;this.content[a]=d;a=e}},sinkDown:function(a){for(var b=
195
- this.content.length,c=this.content[a],e=this.scoreFunction(c);;){var d=2*(a+1),f=d-1,g=null;if(f<b){var k=this.scoreFunction(this.content[f]);k<e&&(g=f)}d<b&&this.scoreFunction(this.content[d])<(null==g?e:k)&&(g=d);if(null==g)break;this.content[a]=this.content[g];this.content[g]=c;a=g}}};var Y={position:0,color:1,intensity:2,classification:3,returnNumber:4,numberOfReturns:5,pointSourceID:6,indices:7,normal:8,spacing:9},Da={DEFAULT:{0:new THREE.Vector4(.5,.5,.5,1),1:new THREE.Vector4(.5,.5,.5,1),2:new THREE.Vector4(.63,
196
- .32,.18,1),3:new THREE.Vector4(0,1,0,1),4:new THREE.Vector4(0,.8,0,1),5:new THREE.Vector4(0,.6,0,1),6:new THREE.Vector4(1,.66,0,1),7:new THREE.Vector4(1,0,1,1),8:new THREE.Vector4(1,0,0,1),9:new THREE.Vector4(0,0,1,1),12:new THREE.Vector4(1,1,0,1),DEFAULT:new THREE.Vector4(.3,.6,.6,.5)}},T={NONE:0,HIGHLIGHT:1,SHOW_INSIDE:2,SHOW_OUTSIDE:3},Q={FIXED:0,ATTENUATED:1,ADAPTIVE:2},X={SQUARE:0,CIRCLE:1,PARABOLOID:2},A={RGB:0,COLOR:1,DEPTH:2,HEIGHT:3,ELEVATION:3,INTENSITY:4,INTENSITY_GRADIENT:5,LOD:6,LEVEL_OF_DETAIL:6,
197
- POINT_INDEX:7,CLASSIFICATION:8,RETURN_NUMBER:9,SOURCE:10,NORMAL:11,PHONG:12,RGB_HEIGHT:13,COMPOSITE:50},W={OCTREE:0,KDTREE:1};class Pa{constructor(){this.boundingBox=new THREE.Box3;this.numPoints=0;this.data={}}add(a){var b=this.numPoints,c=b+a.numPoints,e=Object.keys(this.data),d=Object.keys(a.data),f=new Set([...e,...d]),g;for(g of f)if(e.includes(g)&&d.includes(g)){var k=this.data[g].constructor;f=new k(this.data[g].length+a.data[g].length);f.set(this.data[g],0);f.set(a.data[g],this.data[g].length);
198
- this.data[g]=f}else e.includes(g)&&!d.includes(g)?(f=this.data[g].length/this.numPoints,k=this.data[g].constructor,k=new k(f*c),k.set(this.data[g],0),this.data[g]=k):!e.includes(g)&&d.includes(g)&&(f=a.data[g].length/a.numPoints,k=a.data[g].constructor,k=new k(f*c),k.set(a.data[g],f*b),this.data[g]=k);this.numPoints=c;this.boundingBox.union(a.boundingBox)}}class ja{constructor(a,b){this.gl=a;this.texture=b;this.id=a.createTexture();this.target=a.TEXTURE_2D;this.version=-1;this.update(b)}update(){if(this.texture.image){var a=
199
- this.gl,b=this.texture;if(this.version!==b.version){this.target=a.TEXTURE_2D;a.bindTexture(this.target,this.id);var c=K(a,b.format),e=b.image.width,d=b.image.height,f=K(a,b.type);a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,b.flipY);a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,b.premultiplyAlpha);a.pixelStorei(a.UNPACK_ALIGNMENT,b.unpackAlignment);if(b instanceof THREE.DataTexture){var g=b.image.data;a.texParameteri(this.target,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE);a.texParameteri(this.target,a.TEXTURE_WRAP_T,
200
- a.CLAMP_TO_EDGE);a.texParameteri(this.target,a.TEXTURE_MAG_FILTER,K(a,b.magFilter));a.texParameteri(this.target,a.TEXTURE_MIN_FILTER,K(a,b.minFilter));a.texImage2D(this.target,0,c,e,d,0,c,f,g)}else b instanceof THREE.CanvasTexture&&(g=b.image,a.texParameteri(this.target,a.TEXTURE_WRAP_S,K(a,b.wrapS)),a.texParameteri(this.target,a.TEXTURE_WRAP_T,K(a,b.wrapT)),a.texParameteri(this.target,a.TEXTURE_MAG_FILTER,K(a,b.magFilter)),a.texParameteri(this.target,a.TEXTURE_MIN_FILTER,K(a,b.minFilter)),a.texImage2D(this.target,
201
- 0,c,c,f,g));a.bindTexture(this.target,null);this.version=b.version}}else this.version=this.texture.version}}class Fa{constructor(a,b,c,e){this.gl=a;this.name=b;this.vsSource=c;this.fsSource=e;this.cache=new Map;this.program=this.fs=this.vs=null;this.uniformLocations={};this.attributeLocations={};this.update(c,e)}update(a,b){this.vsSource=a;this.fsSource=b;this.linkProgram()}compileShader(a,b){var c=this.gl;c.shaderSource(a,b);c.compileShader(a);if(!c.getShaderParameter(a,c.COMPILE_STATUS))throw a=
202
- c.getShaderInfoLog(a),Error('Potree: Could not compile shader '+this.name+', '+a);}linkProgram(){var a=this.gl;this.uniformLocations={};this.attributeLocations={};a.useProgram(null);var b=this.cache.get(`${this.vsSource}, ${this.fsSource}`);if(b)this.program=b.program,this.vs=b.vs,this.fs=b.fs,this.attributeLocations=b.attributeLocations,this.uniformLocations=b.uniformLocations;else{this.vs=a.createShader(a.VERTEX_SHADER);this.fs=a.createShader(a.FRAGMENT_SHADER);this.program=a.createProgram();for(var c of Object.keys(Y))b=
203
- Y[c],a.bindAttribLocation(this.program,b,c);this.compileShader(this.vs,this.vsSource);this.compileShader(this.fs,this.fsSource);c=this.program;a.attachShader(c,this.vs);a.attachShader(c,this.fs);a.linkProgram(c);a.detachShader(c,this.vs);a.detachShader(c,this.fs);if(!a.getProgramParameter(c,a.LINK_STATUS))throw a=a.getProgramInfoLog(c),Error('Potree: Could not link program '+this.name+', '+a);for(var e=a.getProgramParameter(c,a.ACTIVE_ATTRIBUTES),d=0;d<e;d++){var f=a.getActiveAttrib(c,d);b=a.getAttribLocation(c,
204
- f.name);this.attributeLocations[f.name]=b}e=a.getProgramParameter(c,a.ACTIVE_UNIFORMS);for(d=0;d<e;d++)f=a.getActiveUniform(c,d),b=a.getUniformLocation(c,f.name),this.uniformLocations[f.name]=b;b={program:this.program,vs:this.vs,fs:this.fs,attributeLocations:this.attributeLocations,uniformLocations:this.uniformLocations};this.cache.set(`${this.vsSource}, ${this.fsSource}`,b)}}setUniformMatrix4(a,b){const c=this.gl;a=this.uniformLocations[a];null!=a&&(b=new Float32Array(b.elements),c.uniformMatrix4fv(a,
205
- !1,b))}setUniform1f(a,b){a=this.uniformLocations[a];null!=a&&this.gl.uniform1f(a,b)}setUniformBoolean(a,b){a=this.uniformLocations[a];null!=a&&this.gl.uniform1i(a,b)}setUniformTexture(a,b){a=this.uniformLocations[a];null!=a&&this.gl.uniform1i(a,b)}setUniform2f(a,b){a=this.uniformLocations[a];null!=a&&this.gl.uniform2f(a,b[0],b[1])}setUniform3f(a,b){a=this.uniformLocations[a];null!=a&&this.gl.uniform3f(a,b[0],b[1],b[2])}setUniform(a,b){b.constructor===THREE.Matrix4?this.setUniformMatrix4(a,b):'number'===
206
- typeof b?this.setUniform1f(a,b):'boolean'===typeof b?this.setUniformBoolean(a,b):b instanceof ja?this.setUniformTexture(a,b):b instanceof Array?2===b.length?this.setUniform2f(a,b):3===b.length&&this.setUniform3f(a,b):console.error('Potree: Unhandled uniform type: ',a,b)}setUniform1i(a,b){a=this.uniformLocations[a];null!=a&&this.gl.uniform1i(a,b)}}class Ga{constructor(){this.numElements=0;this.vao=null;this.vbos=new Map}}class Ha extends THREE.Mesh{constructor(){super(new THREE.Geometry,new THREE.MeshBasicMaterial({opacity:0,
207
- wireframe:!1,transparent:!0}));this.rotation.set(-Math.PI/2,0,0);this.frustumCulled=!0;this.pointclouds=[];this.nodeSize=30;this.pointBudget=1E10;this.nodeLoadRate=2}raycast(a,b){}setPointBudget(a){this.pointBudget=a}onBeforeRender(a,b,c,e,d,f){for(b=0;b<this.pointclouds.length;b++)this.pointclouds[b].minimumNodePixelSize=this.nodeSize;na(this.pointclouds,c,a)}recalculateBoxGeometry(){var a=this.getBoundingBox(),b=a.getSize(new THREE.Vector3),c=a.getCenter(new THREE.Vector3);a=new THREE.Matrix4;a.makeTranslation(c.x,
208
- -c.z,c.y);b=new THREE.BoxBufferGeometry(b.x,b.z,b.y);b.applyMatrix(a);this.geometry=b}add(a){THREE.Object3D.prototype.add.call(this,a);a instanceof S&&(a.showBoundingBox=!1,a.generateDEM=!1,this.pointclouds.push(a),this.recalculateBoxGeometry())}remove(a){THREE.Object3D.prototype.remove.call(this,a);a instanceof S&&(a=this.pointclouds.indexOf(a),-1!==a&&(this.pointclouds.splice(a,1),this.recalculateBoxGeometry()))}getBoundingBox(){var a=new THREE.Box3;this.updateMatrixWorld(!0);for(var b=0;b<this.pointclouds.length;b++){var c=
209
- this.pointclouds[b];c.updateMatrixWorld(!0);c=L.computeTransformedBoundingBox(c.pcoGeometry.tightBoundingBox?c.pcoGeometry.tightBoundingBox:c.boundingBox,c.matrixWorld);a.union(c)}return a}estimateHeightAt(a){var b=null,c=Infinity,e;for(e of this.pointclouds)if(void 0!==e.root.geometryNode){var d=null,f=Infinity,g=a.clone().sub(e.position);g.z=0;g=new THREE.Ray(g,new THREE.Vector3(0,0,1));for(var k=[e.root];0<k.length;){var h=k.pop(),l=h.getBoundingBox();if(g.intersectBox(l)){l=h.geometryNode.mean.z+
210
- e.position.z+h.geometryNode.boundingBox.min.z;h.geometryNode.spacing<=f&&(d=l,f=h.geometryNode.spacing);for(var m of Object.keys(h.children))h.children[m].geometryNode&&k.push(h.children[m])}}if(null===b||f<c)b=d,c=f}return b}}class Qa extends Ha{constructor(){super();this.buffers=new Map;this.shaders=new Map;this.textures=new Map;this.types=new Map}getExtensions(a){this.types.set(Float32Array,a.FLOAT);this.types.set(Uint8Array,a.UNSIGNED_BYTE);this.types.set(Uint16Array,a.UNSIGNED_SHORT);var b=a.getExtension('OES_vertex_array_object');
211
- a.createVertexArray=b.createVertexArrayOES.bind(b);a.bindVertexArray=b.bindVertexArrayOES.bind(b)}onBeforeRender(a,b,c,e,d,f){super.onBeforeRender(a,b,c,e,d,f);b=a.context;void 0===b.bindVertexArray&&this.getExtensions(b);e=this.fetchOctrees();for(var g of e.octrees)this.renderOctree(a,g,g.visibleNodes,c);b.activeTexture(b.TEXTURE1);b.bindTexture(b.TEXTURE_2D,null);a.state.reset()}createBuffer(a,b){var c=new Ga;c.vao=a.createVertexArray();c.numElements=b.attributes.position.count;a.bindVertexArray(c.vao);
212
- for(var e in b.attributes){var d=b.attributes[e],f=a.createBuffer();a.bindBuffer(a.ARRAY_BUFFER,f);a.bufferData(a.ARRAY_BUFFER,d.array,a.STATIC_DRAW);var g=Y[e],k=d.normalized,h=this.types.get(d.array.constructor);void 0!==h&&(a.vertexAttribPointer(g,d.itemSize,h,k,0,0),a.enableVertexAttribArray(g));c.vbos.set(e,{handle:f,name:e,count:d.count,itemSize:d.itemSize,type:b.attributes.position.array.constructor,version:0})}a.bindBuffer(a.ARRAY_BUFFER,null);a.bindVertexArray(null);return c}updateBuffer(a,
213
- b){var c=this.buffers.get(b);a.bindVertexArray(c.vao);for(var e in b.attributes){var d=b.attributes[e],f=Y[e],g=d.normalized,k=this.types.get(d.array.constructor);if(c.vbos.has(e)){var h=c.vbos.get(e).handle;c.vbos.get(e).version=d.version}else h=a.createBuffer(),c.vbos.set(e,{handle:h,name:e,count:d.count,itemSize:d.itemSize,type:b.attributes.position.array.constructor,version:d.version});a.bindBuffer(a.ARRAY_BUFFER,h);a.bufferData(a.ARRAY_BUFFER,d.array,a.STATIC_DRAW);a.vertexAttribPointer(f,d.itemSize,
214
- k,g,0,0);a.enableVertexAttribArray(f)}a.bindBuffer(a.ARRAY_BUFFER,null);a.bindVertexArray(null)}fetchOctrees(){for(var a=[],b=[this];0<b.length;){var c=b.pop();c instanceof S?a.push(c):(c=c.children.filter(a=>a.visible),b.push(...c))}return{octrees:a}}renderNodes(a,b,c,e,d,f){a=a.context;b=b.material;d=d.matrixWorldInverse;var g=new THREE.Matrix4,k=new Float32Array(16),h;for(h of c)if(void 0===u.debug.allowedNodes||u.debug.allowedNodes.includes(h.name)){var l=h.sceneNode.matrixWorld;g.multiplyMatrices(d,
215
- l);e&&(c=e.offsets.get(h),f.setUniform1f('uVNStart',c));c=h.getLevel();f.setUniform('uDebug',!0===h.debug);if(h instanceof ba)var m=0===Object.keys(h.children).length;else h instanceof ha&&(m=h.geometryNode.isLeaf);f.setUniform('uIsLeafNode',m);var p=f.uniformLocations.modelMatrix;p&&(k.set(l.elements),a.uniformMatrix4fv(p,!1,k));p=f.uniformLocations.modelViewMatrix;k.set(g.elements);a.uniformMatrix4fv(p,!1,k);if(b.clipPolygons&&0<b.clipPolygons.length){p=[];var n=[];for(r of b.clipPolygons){d=r.viewMatrix;
216
- var q=r.projMatrix.clone().multiply(d).multiply(l);p.push(r.markers.length);n.push(q)}l=[].concat(...n.map(a=>a.elements));q=Array(24*b.clipPolygons.length);for(n=0;n<b.clipPolygons.length;n++){var r=b.clipPolygons[n];for(var t=0;t<r.markers.length;t++)q[24*n+3*t]=r.markers[t].position.x,q[24*n+(3*t+1)]=r.markers[t].position.y,q[24*n+(3*t+2)]=r.markers[t].position.z}a.uniform1iv(f.uniformLocations['uClipPolygonVCount[0]'],p);a.uniformMatrix4fv(f.uniformLocations['uClipPolygonWVP[0]'],!1,l);a.uniform3fv(f.uniformLocations['uClipPolygonVertices[0]'],
217
- q)}f.setUniform1f('uLevel',c);f.setUniform1f('uNodeSpacing',h.geometryNode.estimatedSpacing);f.setUniform1f('uPCIndex',n);c=h.geometryNode.geometry;l=null;if(this.buffers.has(c)){l=this.buffers.get(c);for(var v in c.attributes)c.attributes[v].version>l.vbos.get(v).version&&this.updateBuffer(a,c)}else l=this.createBuffer(a,c),this.buffers.set(c,l);a.bindVertexArray(l.vao);a.drawArrays(a.POINTS,0,l.numElements)}a.bindVertexArray(null)}renderOctree(a,b,c,e){var d=a.context,f=b.material,g=e.matrixWorldInverse,
218
- k=e.matrixWorld,h=e.projectionMatrix,l=(new THREE.Matrix4).getInverse(h);new THREE.Matrix4;var m=null,p=0;if(f.pointSizeType===Q.ADAPTIVE||f.pointColorType===A.LOD){m=b.computeVisibilityTextureData(c,e);var n=f.visibleNodesTexture;n.image.data.set(m.data);n.needsUpdate=!0}n=null;this.shaders.has(f)?n=this.shaders.get(f):(n=new Fa(d,'pointcloud',f.vertexShader,f.fragmentShader),this.shaders.set(f,n));var q=['#define num_shadowmaps0','#define num_snapshots'+(f.snapEnabled?f.numSnapshots:0),'#define num_clipboxes'+
219
- (f.clipBoxes&&f.clipBoxes.length?f.clipBoxes.length:0),'#define num_clipspheres0','#define num_clippolygons'+(f.clipPolygons&&f.clipPolygons.length?f.clipPolygons.length:0)].join('\n');n.update(q+'\n'+f.vertexShader,q+'\n'+f.fragmentShader);f.needsUpdate=!1;for(var r of Object.keys(f.uniforms))if(q=f.uniforms[r],'t'==q.type&&(q=q.value)){if(!this.textures.has(q)){var t=new ja(d,q);this.textures.set(q,t)}this.textures.get(q).update()}d.useProgram(n.program);1>f.opacity?(d.enable(d.BLEND),d.blendFunc(d.SRC_ALPHA,
220
- d.ONE),d.depthMask(!1),d.disable(d.DEPTH_TEST)):(d.disable(d.BLEND),d.depthMask(!0),d.enable(d.DEPTH_TEST));n.setUniformMatrix4('projectionMatrix',h);n.setUniformMatrix4('viewMatrix',g);n.setUniformMatrix4('uViewInv',k);n.setUniformMatrix4('uProjInv',l);q=f.screenHeight;n.setUniform1f('uScreenWidth',f.screenWidth);n.setUniform1f('uScreenHeight',q);n.setUniform1f('fov',Math.PI*e.fov/180);n.setUniform1f('near',e.near);n.setUniform1f('far',e.far);a.capabilities.logarithmicDepthBuffer&&n.setUniform('logDepthBufFC',
221
- 2/(Math.log(e.far+1)/Math.LN2));e instanceof THREE.OrthographicCamera?(n.setUniform('uUseOrthographicCamera',!0),n.setUniform('uOrthoWidth',e.right-e.left),n.setUniform('uOrthoHeight',e.top-e.bottom)):n.setUniform('uUseOrthographicCamera',!1);0===f.clipBoxes.length+f.clipPolygons.length?n.setUniform1i('clipTask',T.NONE):n.setUniform1i('clipTask',f.clipTask);n.setUniform1i('clipMethod',f.clipMethod);f.clipBoxes&&0<f.clipBoxes.length&&d.uniformMatrix4fv(n.uniformLocations['clipBoxes[0]'],!1,f.uniforms.clipBoxes.value);
222
- n.setUniform1f('size',f.size);n.setUniform1f('maxSize',f.uniforms.maxSize.value);n.setUniform1f('minSize',f.uniforms.minSize.value);n.setUniform1f('uOctreeSpacing',f.spacing);n.setUniform('uOctreeSize',f.uniforms.octreeSize.value);n.setUniform3f('uColor',f.color.toArray());n.setUniform1f('uOpacity',f.opacity);n.setUniform2f('elevationRange',f.elevationRange);n.setUniform2f('intensityRange',f.intensityRange);n.setUniform1f('intensityGamma',f.intensityGamma);n.setUniform1f('intensityContrast',f.intensityContrast);
223
- n.setUniform1f('intensityBrightness',f.intensityBrightness);n.setUniform1f('rgbGamma',f.rgbGamma);n.setUniform1f('rgbContrast',f.rgbContrast);n.setUniform1f('rgbBrightness',f.rgbBrightness);n.setUniform1f('uTransition',f.transition);n.setUniform1f('wRGB',f.weightRGB);n.setUniform1f('wIntensity',f.weightIntensity);n.setUniform1f('wElevation',f.weightElevation);n.setUniform1f('wClassification',f.weightClassification);n.setUniform1f('wReturnNumber',f.weightReturnNumber);n.setUniform1f('wSourceID',f.weightSourceID);
224
- q=this.textures.get(f.visibleNodesTexture);n.setUniform1i('visibleNodesTexture',p);d.activeTexture(d.TEXTURE0+p);d.bindTexture(q.target,q.id);p++;q=this.textures.get(f.gradientTexture);n.setUniform1i('gradient',p);d.activeTexture(d.TEXTURE0+p);d.bindTexture(q.target,q.id);p++;q=this.textures.get(f.classificationTexture);n.setUniform1i('classificationLUT',p);d.activeTexture(d.TEXTURE0+p);d.bindTexture(q.target,q.id);p++;if(!0===f.snapEnabled){q=n.uniformLocations['uSnapshot[0]'];h=n.uniformLocations['uSnapshotDepth[0]'];
225
- g=Array(5).fill(p).map((a,b)=>a+b);k=Array(5).fill(1+Math.max(...g)).map((a,b)=>a+b);p=1+Math.max(...k);d.uniform1iv(q,g);d.uniform1iv(h,k);for(p=0;5>p;p++){q=f.uniforms.uSnapshot.value[p];h=f.uniforms.uSnapshotDepth.value[p];if(!q)break;q=a.properties.get(q).__webglTexture;h=a.properties.get(h).__webglTexture;l=k[p];d.activeTexture(d[`TEXTURE${g[p]}`]);d.bindTexture(d.TEXTURE_2D,q);d.activeTexture(d[`TEXTURE${l}`]);d.bindTexture(d.TEXTURE_2D,h)}p=[].concat(...f.uniforms.uSnapView.value.map(a=>a.elements));
226
- d.uniformMatrix4fv(n.uniformLocations['uSnapView[0]'],!1,p);p=[].concat(...f.uniforms.uSnapProj.value.map(a=>a.elements));d.uniformMatrix4fv(n.uniformLocations['uSnapProj[0]'],!1,p);p=[].concat(...f.uniforms.uSnapProjInv.value.map(a=>a.elements));d.uniformMatrix4fv(n.uniformLocations['uSnapProjInv[0]'],!1,p);p=[].concat(...f.uniforms.uSnapViewInv.value.map(a=>a.elements));d.uniformMatrix4fv(n.uniformLocations['uSnapViewInv[0]'],!1,p)}this.renderNodes(a,b,c,m,e,n);d.activeTexture(d.TEXTURE2);d.bindTexture(d.TEXTURE_2D,
227
- null);d.activeTexture(d.TEXTURE0)}}r.AttributeLocations=Y;r.BasicGroup=Ha;r.BinaryHeap=ea;r.BinaryLoader=ua;r.Classification=Da;r.ClipMethod={INSIDE_ANY:0,INSIDE_ALL:1};r.ClipTask=T;r.DEM=ra;r.DEMNode=fa;r.EptBinaryLoader=xa;r.EptLaszipLoader=ya;r.EptLoader=Ba;r.Global=u;r.Gradients=Ca;r.GreyhoundBinaryLoader=ta;r.GreyhoundLoader=N;r.GreyhoundUtils=H;r.Group=Qa;r.HelperUtils=L;r.LASLAZLoader=va;r.LASLoader=R;r.LRU=oa;r.POCLoader=Z;r.PointAttribute=t;r.PointAttributeNames=x;r.PointAttributeTypes=C;
228
- r.PointAttributes=F;r.PointCloudArena4D=Ea;r.PointCloudArena4DGeometry=ia;r.PointCloudEptGeometry=za;r.PointCloudGreyhoundGeometry=sa;r.PointCloudMaterial=M;r.PointCloudOctree=ca;r.PointCloudOctreeGeometry=wa;r.PointCloudTree=S;r.PointColorType=A;r.PointShape=X;r.PointSizeType=Q;r.Points=Pa;r.Shader=Fa;r.Shaders=P;r.TreeType=W;r.VersionUtils=E;r.WebGLBuffer=Ga;r.WebGLTexture=ja;r.WorkerManager=y;r.loadPointCloud=function(a,b,c){var e=function(a){void 0!==b&&(a.name=b);c({type:'pointcloud_loaded',
229
- pointcloud:a})};if(0===a.indexOf('greyhound://'))N.load(a,function(a){void 0!==a&&e(new ca(a))});else if(0<a.indexOf('cloud.js'))Z.load(a,function(a){void 0!==a&&e(new ca(a))});else if(0<a.indexOf('ept.json'))Ba.load(a,function(a){void 0!==a&&e(new ca(a))});else if(0<a.indexOf('.vpc'))ia.load(a,function(a){void 0!==a&&e(new Ea(a))});else throw Error('Potree: Failed to load point cloud from URL '+a);};r.updatePointClouds=na;r.updateVisibility=la;r.updateVisibilityStructures=ma;Object.defineProperty(r,
230
- '__esModule',{value:!0})});