@realsee/five 5.0.0-alpha.11 → 5.0.0-alpha.112

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 (445) hide show
  1. package/README.md +75 -63
  2. package/docs/.nojekyll +1 -0
  3. package/docs/assets/highlight.css +134 -0
  4. package/docs/assets/icons.css +1043 -0
  5. package/docs/assets/{images/icons.png → icons.png} +0 -0
  6. package/docs/assets/{images/icons@2x.png → icons@2x.png} +0 -0
  7. package/docs/assets/main.js +52 -0
  8. package/docs/assets/search.js +1 -0
  9. package/docs/assets/style.css +1413 -0
  10. package/docs/assets/{images/widgets.png → widgets.png} +0 -0
  11. package/docs/assets/{images/widgets@2x.png → widgets@2x.png} +0 -0
  12. package/docs/classes/five.AnimationFrameLoop.html +15 -0
  13. package/docs/classes/five.BVH.html +10 -0
  14. package/docs/classes/five.BVHIntersect.html +1 -0
  15. package/docs/classes/five.BVHNode.html +7 -0
  16. package/docs/classes/five.BVHVector3.html +1 -0
  17. package/docs/classes/five.Camera.html +11 -0
  18. package/docs/classes/five.Five.html +303 -0
  19. package/docs/classes/five.InternalWebGLRenderer.html +1 -0
  20. package/docs/classes/five.IntersectMesh.html +1 -0
  21. package/docs/classes/five.LegacyPanoCircleMesh.html +5 -0
  22. package/docs/classes/five.Model.html +77 -0
  23. package/docs/classes/five.NetworkSubscribe.html +50 -0
  24. package/docs/classes/five.PBMContainer.html +17 -0
  25. package/docs/classes/five.PBMGroup.html +19 -0
  26. package/docs/classes/five.PBMMaterial.html +15 -0
  27. package/docs/classes/five.PBMMesh.html +7 -0
  28. package/docs/classes/five.PanoCircleMesh.html +7 -0
  29. package/docs/classes/five.Scene.html +3 -0
  30. package/docs/classes/five.Subscribe.html +56 -0
  31. package/docs/classes/five.Work.html +30 -0
  32. package/docs/classes/gltf_loader.GLTFLoader.html +17 -0
  33. package/docs/classes/gltf_loader.GLTFObject.html +7 -0
  34. package/docs/classes/line.Line.html +1 -0
  35. package/docs/classes/line.LineGeometry.html +1 -0
  36. package/docs/classes/line.LineMaterial.html +1 -0
  37. package/docs/classes/line.LineSegmentsGeometry.html +1 -0
  38. package/docs/classes/line.THREE_Line2.html +1 -0
  39. package/docs/classes/line.THREE_LineSegments2.html +1 -0
  40. package/docs/classes/react.Store.html +29 -0
  41. package/docs/classes/server.BVH.html +10 -0
  42. package/docs/classes/server.BVHIntersect.html +1 -0
  43. package/docs/classes/server.BVHNode.html +7 -0
  44. package/docs/classes/server.BVHVector3.html +1 -0
  45. package/docs/classes/server.Model.html +63 -0
  46. package/docs/classes/server.PBMGroup.html +9 -0
  47. package/docs/classes/server.PBMMesh.html +7 -0
  48. package/docs/classes/sticker.Sticker.html +32 -0
  49. package/docs/index.html +166 -420
  50. package/docs/interfaces/five.AddableObject.html +1 -0
  51. package/docs/interfaces/five.AnimationFrame.html +1 -0
  52. package/docs/interfaces/five.CameraPose.html +1 -0
  53. package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +28 -0
  54. package/docs/interfaces/five.EventCallback.html +391 -0
  55. package/docs/interfaces/five.FiveInitArgs.html +96 -0
  56. package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +15 -0
  57. package/docs/interfaces/five.ImageOptions.html +18 -0
  58. package/docs/interfaces/five.ImageURLOptions.html +15 -0
  59. package/docs/interfaces/five.IntersectMeshInterface.html +3 -0
  60. package/docs/interfaces/five.Intersection.html +7 -0
  61. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +20 -0
  62. package/docs/interfaces/five.ModelEventCallback.html +22 -0
  63. package/docs/interfaces/five.MovePanoOptions.html +40 -0
  64. package/docs/interfaces/five.PBMPanoPicture.html +7 -0
  65. package/docs/interfaces/five.PBMParameters.html +15 -0
  66. package/docs/interfaces/five.PanoCircleMeshInterface.html +19 -0
  67. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +28 -0
  68. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +20 -0
  69. package/docs/interfaces/five.Pose.html +35 -0
  70. package/docs/interfaces/five.Scissor.html +14 -0
  71. package/docs/interfaces/five.State.html +19 -0
  72. package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -0
  73. package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -0
  74. package/docs/interfaces/five.SubscribeMixinType.off.html +1 -0
  75. package/docs/interfaces/five.SubscribeMixinType.on.html +1 -0
  76. package/docs/interfaces/five.SubscribeMixinType.once.html +1 -0
  77. package/docs/interfaces/five.TextureOptions.html +20 -0
  78. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +7 -0
  79. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +24 -0
  80. package/docs/interfaces/five.WorkCubeImage.html +13 -0
  81. package/docs/interfaces/five.WorkImage.html +21 -0
  82. package/docs/interfaces/five.WorkInitial.html +13 -0
  83. package/docs/interfaces/five.WorkModel.html +11 -0
  84. package/docs/interfaces/five.WorkObserver.html +25 -0
  85. package/docs/interfaces/five.WorkTile.html +1 -0
  86. package/docs/interfaces/five.WorkVideo.html +9 -0
  87. package/docs/interfaces/gltf_loader.GLTF.html +7 -0
  88. package/docs/interfaces/react.FiveActionReactCallbacks.html +62 -0
  89. package/docs/interfaces/react.FiveInjectionTypes.html +191 -0
  90. package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -0
  91. package/docs/interfaces/server.Intersection.html +7 -0
  92. package/docs/interfaces/server.ModelEventCallback.html +18 -0
  93. package/docs/interfaces/sticker.IntersectionLike.html +8 -0
  94. package/docs/modules/five.SubscribeMixinType.html +1 -0
  95. package/docs/modules/five.html +481 -0
  96. package/docs/modules/gltf_loader.html +1 -0
  97. package/docs/modules/line.html +1 -0
  98. package/docs/modules/react.html +130 -941
  99. package/docs/modules/server.html +18 -0
  100. package/docs/modules/sticker.html +1 -0
  101. package/docs/modules.html +1 -119
  102. package/exporters/staticify.js +203 -0
  103. package/five/index.d.ts +2073 -0
  104. package/five/index.js +372 -0
  105. package/gltf-loader/index.d.ts +75 -0
  106. package/gltf-loader/index.js +260 -0
  107. package/line/index.d.ts +68 -0
  108. package/line/index.js +260 -0
  109. package/package.json +20 -18
  110. package/react/index.d.ts +812 -17
  111. package/react/index.js +260 -1
  112. package/resource/{basis_transcoder.js → basis/basis_transcoder.js} +0 -0
  113. package/resource/{basis_transcoder.wasm → basis/basis_transcoder.wasm} +0 -0
  114. package/resource/gltf/draco_decoder.js +31 -0
  115. package/resource/gltf/draco_decoder.wasm +0 -0
  116. package/resource/gltf/draco_wasm_wrapper.js +119 -0
  117. package/scripts/five-staticify.js +21 -0
  118. package/server/index.d.ts +568 -5
  119. package/server/index.js +367 -1
  120. package/sticker/index.d.ts +70 -0
  121. package/sticker/index.js +260 -0
  122. package/templates/plugin/examples/index.html +1 -1
  123. package/templates/quick-start/README.md +1 -1
  124. package/templates/quick-start/index.tsx +1 -1
  125. package/templates/quick-start/package.json +1 -1
  126. package/templates/react-component/examples/index.html +1 -1
  127. package/templates/react-component/examples/index.tsx +4 -4
  128. package/templates/react-component/lib/index.tsx +5 -5
  129. package/umd/five-gltf-loader.js +2 -0
  130. package/umd/five-gltf-loader.js.LICENSE.txt +14 -0
  131. package/umd/five-line.js +2 -0
  132. package/umd/five-line.js.LICENSE.txt +14 -0
  133. package/umd/five-react.js +2 -0
  134. package/umd/five-react.js.LICENSE.txt +14 -0
  135. package/umd/five-sticker.js +2 -0
  136. package/umd/five-sticker.js.LICENSE.txt +14 -0
  137. package/umd/five.js +2 -0
  138. package/umd/five.js.LICENSE.txt +116 -0
  139. package/application/constant.d.ts +0 -6
  140. package/application/constant.js +0 -1
  141. package/application/controllers.d.ts +0 -31
  142. package/application/controllers.js +0 -1
  143. package/application/events.d.ts +0 -140
  144. package/application/events.js +0 -1
  145. package/application/five.d.ts +0 -418
  146. package/application/five.js +0 -1
  147. package/application/fiveInitArgs.d.ts +0 -157
  148. package/application/fiveInitArgs.js +0 -1
  149. package/application/generateDefaultVideoElement.d.ts +0 -2
  150. package/application/generateDefaultVideoElement.js +0 -1
  151. package/application/getViewportScale.d.ts +0 -2
  152. package/application/getViewportScale.js +0 -1
  153. package/application/initLights.d.ts +0 -3
  154. package/application/initLights.js +0 -1
  155. package/bundles/five.js +0 -2
  156. package/bundles/five.js.LICENSE.txt +0 -160
  157. package/controllers/base.d.ts +0 -80
  158. package/controllers/base.js +0 -1
  159. package/controllers/depthPanorama.d.ts +0 -40
  160. package/controllers/depthPanorama.js +0 -1
  161. package/controllers/events.d.ts +0 -273
  162. package/controllers/events.js +0 -1
  163. package/controllers/floorplan.d.ts +0 -102
  164. package/controllers/floorplan.js +0 -1
  165. package/controllers/model.d.ts +0 -23
  166. package/controllers/model.js +0 -1
  167. package/controllers/panorama.d.ts +0 -69
  168. package/controllers/panorama.js +0 -1
  169. package/controllers/panoramaLike.d.ts +0 -88
  170. package/controllers/panoramaLike.js +0 -1
  171. package/controllers/topview.d.ts +0 -28
  172. package/controllers/topview.js +0 -1
  173. package/controllers/vrPanorama.d.ts +0 -40
  174. package/controllers/vrPanorama.js +0 -1
  175. package/core/camera.d.ts +0 -15
  176. package/core/camera.js +0 -1
  177. package/core/cubeTexture.d.ts +0 -6
  178. package/core/cubeTexture.js +0 -1
  179. package/core/internalWebGLRenderer.d.ts +0 -11
  180. package/core/internalWebGLRenderer.js +0 -1
  181. package/core/pbmGroup.d.ts +0 -22
  182. package/core/pbmGroup.js +0 -1
  183. package/core/pbmMaterial.d.ts +0 -39
  184. package/core/pbmMaterial.js +0 -1
  185. package/core/pbmMesh.d.ts +0 -10
  186. package/core/pbmMesh.js +0 -1
  187. package/core/pbmParameters.d.ts +0 -36
  188. package/core/pbmParameters.js +0 -1
  189. package/core/scene.d.ts +0 -5
  190. package/core/scene.js +0 -1
  191. package/core/subscribe.d.ts +0 -76
  192. package/core/subscribe.js +0 -1
  193. package/core/updatableTexture.d.ts +0 -12
  194. package/core/updatableTexture.js +0 -1
  195. package/docs/assets/css/main.css +0 -2660
  196. package/docs/assets/js/main.js +0 -248
  197. package/docs/assets/js/search.js +0 -1
  198. package/docs/classes/index.five.html +0 -2567
  199. package/docs/classes/index.fivecamera.html +0 -427
  200. package/docs/classes/index.fiveline.html +0 -458
  201. package/docs/classes/index.fivescene.html +0 -302
  202. package/docs/classes/index.internalwebglrenderer.html +0 -316
  203. package/docs/classes/index.model.html +0 -999
  204. package/docs/classes/index.pbmgroup.html +0 -531
  205. package/docs/classes/index.pbmmaterial.html +0 -637
  206. package/docs/classes/index.pbmmesh.html +0 -358
  207. package/docs/classes/index.subscribe.html +0 -672
  208. package/docs/interfaces/index.depthpanoramacontrollercustominitargs.html +0 -524
  209. package/docs/interfaces/index.fiveeventcallback.html +0 -2568
  210. package/docs/interfaces/index.fiveinitargs.html +0 -811
  211. package/docs/interfaces/index.floorplancontrollercustominitargs.html +0 -399
  212. package/docs/interfaces/index.imageoptions.html +0 -436
  213. package/docs/interfaces/index.intersection.html +0 -331
  214. package/docs/interfaces/index.intersectmeshinterface.html +0 -292
  215. package/docs/interfaces/index.modelcontrollercustominitargs.html +0 -470
  216. package/docs/interfaces/index.modeleventcallback.html +0 -432
  217. package/docs/interfaces/index.movepanooptions.html +0 -573
  218. package/docs/interfaces/index.panocirclemeshinterface.html +0 -465
  219. package/docs/interfaces/index.panoramacontrollercustominitargs.html +0 -549
  220. package/docs/interfaces/index.panoramalikecontrollercustominitargs.html +0 -468
  221. package/docs/interfaces/index.pbmparameters.html +0 -578
  222. package/docs/interfaces/index.pose.html +0 -374
  223. package/docs/interfaces/index.scissor.html +0 -356
  224. package/docs/interfaces/index.state.html +0 -404
  225. package/docs/interfaces/index.topviewcontrollercustominitargs.html +0 -330
  226. package/docs/interfaces/index.vrpanoramacontrollercustominitargs.html +0 -536
  227. package/docs/interfaces/react.fiveactionreactcallbacks.html +0 -530
  228. package/docs/interfaces/react.injectfivetoprops.html +0 -231
  229. package/docs/modules/index.html +0 -925
  230. package/five.js.LICENSE.txt +0 -160
  231. package/index.d.ts +0 -33
  232. package/index.js +0 -1
  233. package/loaders/basis/BasisTextureLoader.d.ts +0 -116
  234. package/loaders/basis/BasisTextureLoader.js +0 -1
  235. package/loaders/basis/index.d.ts +0 -3
  236. package/loaders/basis/index.js +0 -1
  237. package/loaders/cubeTexture/imagePool.d.ts +0 -7
  238. package/loaders/cubeTexture/imagePool.js +0 -1
  239. package/loaders/cubeTexture/index.d.ts +0 -58
  240. package/loaders/cubeTexture/index.js +0 -1
  241. package/loaders/depthTexture/index.d.ts +0 -60
  242. package/loaders/depthTexture/index.js +0 -1
  243. package/loaders/model/at3d.d.ts +0 -7
  244. package/loaders/model/at3d.js +0 -1
  245. package/loaders/model/dome.d.ts +0 -14
  246. package/loaders/model/dome.js +0 -1
  247. package/loaders/model/domez.d.ts +0 -7
  248. package/loaders/model/domez.js +0 -1
  249. package/loaders/model/index.d.ts +0 -135
  250. package/loaders/model/index.js +0 -1
  251. package/loaders/model/pbm.d.ts +0 -27
  252. package/loaders/model/pbm.js +0 -1
  253. package/loaders/model/tools/bvhtree/index.d.ts +0 -2
  254. package/loaders/model/tools/bvhtree/index.js +0 -1
  255. package/loaders/model/tools/lzma/index.d.ts +0 -2
  256. package/loaders/model/tools/lzma/index.js +0 -1
  257. package/loaders/model/tools/lzma/lzma-caller.d.ts +0 -13
  258. package/loaders/model/tools/lzma/lzma-caller.js +0 -1
  259. package/loaders/model/tools/lzma/lzma.d.ts +0 -2
  260. package/loaders/model/tools/lzma/lzma.js +0 -1
  261. package/loaders/model/tools/lzma/lzmaWorker.d.ts +0 -1
  262. package/loaders/model/tools/lzma/lzmaWorker.js +0 -1
  263. package/loaders/tileTexture/index.d.ts +0 -26
  264. package/loaders/tileTexture/index.js +0 -1
  265. package/meshes/boundingMesh.d.ts +0 -9
  266. package/meshes/boundingMesh.js +0 -1
  267. package/meshes/intersectMesh.d.ts +0 -11
  268. package/meshes/intersectMesh.js +0 -1
  269. package/meshes/panoCircleMesh.d.ts +0 -29
  270. package/meshes/panoCircleMesh.js +0 -1
  271. package/meshes/panoSphereMesh.d.ts +0 -16
  272. package/meshes/panoSphereMesh.js +0 -1
  273. package/objects/line/circle_png.d.ts +0 -1
  274. package/objects/line/circle_png.js +0 -1
  275. package/objects/line/index.d.ts +0 -12
  276. package/objects/line/index.js +0 -1
  277. package/objects/line/utils/Line2.d.ts +0 -7
  278. package/objects/line/utils/Line2.js +0 -1
  279. package/objects/line/utils/LineGeometry.d.ts +0 -10
  280. package/objects/line/utils/LineGeometry.js +0 -1
  281. package/objects/line/utils/LineMaterial.d.ts +0 -20
  282. package/objects/line/utils/LineMaterial.js +0 -1
  283. package/objects/line/utils/LineSegments2.d.ts +0 -11
  284. package/objects/line/utils/LineSegments2.js +0 -1
  285. package/objects/line/utils/LineSegmentsGeometry.d.ts +0 -15
  286. package/objects/line/utils/LineSegmentsGeometry.js +0 -1
  287. package/react/canvas.d.ts +0 -19
  288. package/react/canvas.js +0 -1
  289. package/react/context.d.ts +0 -9
  290. package/react/context.js +0 -1
  291. package/react/createProvider.d.ts +0 -65
  292. package/react/createProvider.js +0 -1
  293. package/react/createStore.d.ts +0 -138
  294. package/react/createStore.js +0 -1
  295. package/react/hooks/unsafe__useFiveInstance.d.ts +0 -9
  296. package/react/hooks/unsafe__useFiveInstance.js +0 -1
  297. package/react/hooks/useFiveAction.d.ts +0 -154
  298. package/react/hooks/useFiveAction.js +0 -1
  299. package/react/hooks/useFiveCameraDirection.d.ts +0 -7
  300. package/react/hooks/useFiveCameraDirection.js +0 -1
  301. package/react/hooks/useFiveCameraRaycaster.d.ts +0 -7
  302. package/react/hooks/useFiveCameraRaycaster.js +0 -1
  303. package/react/hooks/useFiveCurrentState.d.ts +0 -15
  304. package/react/hooks/useFiveCurrentState.js +0 -1
  305. package/react/hooks/useFiveEvent.d.ts +0 -12
  306. package/react/hooks/useFiveEvent.js +0 -1
  307. package/react/hooks/useFiveModelIntersectRaycaster.d.ts +0 -21
  308. package/react/hooks/useFiveModelIntersectRaycaster.js +0 -1
  309. package/react/hooks/useFiveModelReadyState.d.ts +0 -8
  310. package/react/hooks/useFiveModelReadyState.js +0 -1
  311. package/react/hooks/useFiveProject2d.d.ts +0 -20
  312. package/react/hooks/useFiveProject2d.js +0 -1
  313. package/react/hooks/useFiveScene.d.ts +0 -16
  314. package/react/hooks/useFiveScene.js +0 -1
  315. package/react/hooks/useFiveState.d.ts +0 -6
  316. package/react/hooks/useFiveState.js +0 -1
  317. package/react/hooks/useFiveWork.d.ts +0 -30
  318. package/react/hooks/useFiveWork.js +0 -1
  319. package/react/rendererPool.d.ts +0 -8
  320. package/react/rendererPool.js +0 -1
  321. package/react/withFive.d.ts +0 -239
  322. package/react/withFive.js +0 -1
  323. package/scripts/export-five-resource/chfs.exe +0 -0
  324. package/scripts/export-five-resource/fileify.js +0 -192
  325. package/scripts/export-five-resource/format-work.js +0 -71
  326. package/scripts/export-five-resource/staticify.js +0 -327
  327. package/scripts/transcode-model/BufferGeometryUtils.js +0 -832
  328. package/scripts/transcode-model/LoaderSupport.js +0 -1545
  329. package/scripts/transcode-model/MTLLoader.js +0 -602
  330. package/scripts/transcode-model/OBJLoader2.js +0 -1470
  331. package/scripts/transcode-model/obj2pbm.js +0 -65
  332. package/server/core/pbmGroup.d.ts +0 -11
  333. package/server/core/pbmGroup.js +0 -1
  334. package/server/core/pbmMesh.d.ts +0 -9
  335. package/server/core/pbmMesh.js +0 -1
  336. package/server/model/at3d.d.ts +0 -5
  337. package/server/model/at3d.js +0 -1
  338. package/server/model/dome.d.ts +0 -11
  339. package/server/model/dome.js +0 -1
  340. package/server/model/domez.d.ts +0 -5
  341. package/server/model/domez.js +0 -1
  342. package/server/model/index.d.ts +0 -134
  343. package/server/model/index.js +0 -1
  344. package/server/model/pbm.d.ts +0 -24
  345. package/server/model/pbm.js +0 -1
  346. package/server/model/tools/bvhtree/index.d.ts +0 -2
  347. package/server/model/tools/bvhtree/index.js +0 -1
  348. package/server/model/tools/fetchArraybuffer.d.ts +0 -2
  349. package/server/model/tools/fetchArraybuffer.js +0 -1
  350. package/server/model/tools/lzma/index.d.ts +0 -2
  351. package/server/model/tools/lzma/index.js +0 -1
  352. package/server/model/tools/lzma/lzma.d.ts +0 -2
  353. package/server/model/tools/lzma/lzma.js +0 -1
  354. package/shaders/depth/fragment.d.ts +0 -2
  355. package/shaders/depth/fragment.js +0 -1
  356. package/shaders/depth/vertex.d.ts +0 -2
  357. package/shaders/depth/vertex.js +0 -1
  358. package/shaders/pbm/fragment.d.ts +0 -2
  359. package/shaders/pbm/fragment.js +0 -1
  360. package/shaders/pbm/vertex.d.ts +0 -2
  361. package/shaders/pbm/vertex.js +0 -1
  362. package/three-version-check.d.ts +0 -1
  363. package/three-version-check.js +0 -1
  364. package/types/imageOptions.d.ts +0 -24
  365. package/types/imageOptions.js +0 -1
  366. package/types/mode.d.ts +0 -23
  367. package/types/mode.js +0 -1
  368. package/types/movePanoOptions.d.ts +0 -40
  369. package/types/movePanoOptions.js +0 -1
  370. package/types/plugin.d.ts +0 -26
  371. package/types/plugin.js +0 -1
  372. package/types/pose.d.ts +0 -16
  373. package/types/pose.js +0 -1
  374. package/types/scissor.d.ts +0 -18
  375. package/types/scissor.js +0 -1
  376. package/types/state.d.ts +0 -18
  377. package/types/state.js +0 -1
  378. package/utils/BufferGeometryUtils.d.ts +0 -31
  379. package/utils/BufferGeometryUtils.js +0 -1
  380. package/utils/ajax.d.ts +0 -13
  381. package/utils/ajax.js +0 -1
  382. package/utils/animationFrame.d.ts +0 -24
  383. package/utils/animationFrame.js +0 -1
  384. package/utils/arrayMax.d.ts +0 -10
  385. package/utils/arrayMax.js +0 -1
  386. package/utils/arrayMin.d.ts +0 -11
  387. package/utils/arrayMin.js +0 -1
  388. package/utils/busy.d.ts +0 -13
  389. package/utils/busy.js +0 -1
  390. package/utils/calculateProgress.d.ts +0 -37
  391. package/utils/calculateProgress.js +0 -1
  392. package/utils/calculateThreeMouse.d.ts +0 -13
  393. package/utils/calculateThreeMouse.js +0 -1
  394. package/utils/cameraWorldToLocal.d.ts +0 -13
  395. package/utils/cameraWorldToLocal.js +0 -1
  396. package/utils/coordinatesToVector.d.ts +0 -7
  397. package/utils/coordinatesToVector.js +0 -1
  398. package/utils/createImage.d.ts +0 -2
  399. package/utils/createImage.js +0 -1
  400. package/utils/detector.d.ts +0 -13
  401. package/utils/detector.js +0 -1
  402. package/utils/formatRad.d.ts +0 -7
  403. package/utils/formatRad.js +0 -1
  404. package/utils/headingToLongitude.d.ts +0 -6
  405. package/utils/headingToLongitude.js +0 -1
  406. package/utils/imageLoader.d.ts +0 -10
  407. package/utils/imageLoader.js +0 -1
  408. package/utils/imageURL.d.ts +0 -9
  409. package/utils/imageURL.js +0 -1
  410. package/utils/isAbsoluteURL.d.ts +0 -6
  411. package/utils/isAbsoluteURL.js +0 -1
  412. package/utils/isNil.d.ts +0 -6
  413. package/utils/isNil.js +0 -1
  414. package/utils/longitudeToHeading.d.ts +0 -6
  415. package/utils/longitudeToHeading.js +0 -1
  416. package/utils/mouseWheel.d.ts +0 -17
  417. package/utils/mouseWheel.js +0 -1
  418. package/utils/noop.d.ts +0 -6
  419. package/utils/noop.js +0 -1
  420. package/utils/now.d.ts +0 -5
  421. package/utils/now.js +0 -1
  422. package/utils/preload.d.ts +0 -5
  423. package/utils/preload.js +0 -1
  424. package/utils/tween.d.ts +0 -88
  425. package/utils/tween.js +0 -1
  426. package/utils/uuid.d.ts +0 -5
  427. package/utils/uuid.js +0 -1
  428. package/utils/vectorTocoordinates.d.ts +0 -7
  429. package/utils/vectorTocoordinates.js +0 -1
  430. package/utils/webglError.d.ts +0 -7
  431. package/utils/webglError.js +0 -1
  432. package/webvr/helper.img.d.ts +0 -1
  433. package/webvr/helper.img.js +0 -1
  434. package/webvr/vrEffect.d.ts +0 -13
  435. package/webvr/vrEffect.js +0 -1
  436. package/work/index.d.ts +0 -5
  437. package/work/index.js +0 -1
  438. package/work/looseWorkType.d.ts +0 -61
  439. package/work/looseWorkType.js +0 -1
  440. package/work/parse.d.ts +0 -4
  441. package/work/parse.js +0 -1
  442. package/work/stringify.d.ts +0 -4
  443. package/work/stringify.js +0 -1
  444. package/work/workType.d.ts +0 -49
  445. package/work/workType.js +0 -1
@@ -1,102 +0,0 @@
1
- /// <reference types="hammerjs" />
2
- import * as THREE from "three";
3
- import { BaseController, BaseControllerInitArgs } from "./base";
4
- import { Pose } from "../types/pose";
5
- import { Work } from "../work";
6
- import { Model } from "../loaders/model";
7
- import { State } from "../types/state";
8
- interface FloorplanControllerCustomInitArgs {
9
- /** 默认偏航角 */
10
- defaultLongitude?: number;
11
- /** 默认俯仰角 */
12
- defaultLatitude?: number;
13
- /** 最大俯仰角 */
14
- maxLatitude?: number;
15
- /** 最小俯仰角 */
16
- minLatitude?: number;
17
- /** 默认相机可视角度(垂直),可作为 `zoom` */
18
- defaultFov?: number;
19
- /** 最大相机可视角度 */
20
- maxFov?: number;
21
- /** 最小相机可视角度 */
22
- minFov?: number;
23
- }
24
- declare class FloorplanController extends BaseController {
25
- protected defaultLongitude: number;
26
- protected defaultLatitude: number;
27
- protected defaultFov: number;
28
- protected maxFov: number;
29
- protected minFov: number;
30
- protected maxLatitude: number;
31
- protected minLatitude: number;
32
- protected interiaMovement?: boolean;
33
- protected lastPanPoint?: {
34
- x: number;
35
- y: number;
36
- pointerLength: number;
37
- };
38
- protected lastPinchPoint?: number;
39
- protected onMouseWheelFinalInterval?: number;
40
- static parseArgs(args: BaseControllerInitArgs & FloorplanControllerCustomInitArgs): Required<BaseControllerInitArgs & FloorplanControllerCustomInitArgs>;
41
- static initAnimationEndPose(args: BaseControllerInitArgs & FloorplanControllerCustomInitArgs): Pose;
42
- constructor(args: BaseControllerInitArgs & FloorplanControllerCustomInitArgs);
43
- /**
44
- * 析构函数,清理绑定的事件添加的额外mesh
45
- */
46
- destroy(): void;
47
- updateWork(work: Work, state: Omit<State, "mode" | "offset">, duration: number | undefined, userAction: boolean): boolean;
48
- resetModel(model: Model, userAction: boolean): void;
49
- /**
50
- * 初始化动画
51
- */
52
- protected initAnimation(pose: Partial<Omit<Pose, "offset">>, duration: number, userAction: boolean): Promise<void>;
53
- /**
54
- * 获取摄像机距离
55
- * @return
56
- */
57
- protected cameraDistance(): number;
58
- protected calculateCameraPosition(coordinates: {
59
- longitude: number;
60
- latitude: number;
61
- }, distance: number, positionVector: THREE.Vector3 | null, limit: boolean): THREE.Vector3;
62
- /**
63
- * 更新摄像机观测位置
64
- * @param {Number} options.longitude
65
- * @param {Number} options.latitude
66
- * @param {Number} options.fov
67
- * @param {Number} options.offset
68
- */
69
- updateCamera(pose: Partial<Pose>, userAction: boolean, limit: boolean): void;
70
- protected getForwardPanoIndexOrNot(raycaster: THREE.Raycaster): number;
71
- protected coordinatesChangeWithOffset(coordinates: {
72
- longitude: number;
73
- latitude: number;
74
- }, offset: {
75
- x: number;
76
- y: number;
77
- }): {
78
- longitude: number;
79
- latitude: number;
80
- };
81
- protected requestInteriaMovement(offset: {
82
- x: number;
83
- y: number;
84
- }, userAction: boolean): void;
85
- /**
86
- * 拖动事件, 用于挂册
87
- */
88
- protected onPanGesture(input: HammerInput): void;
89
- /**
90
- * 点击事件, 用户选择
91
- */
92
- protected onTapGesture(input: HammerInput): void;
93
- /**
94
- * 触摸事件, 摄像头缩放
95
- */
96
- protected onPinchGesture(input: HammerInput): void;
97
- /**
98
- * 鼠标事件, 摄像头缩放
99
- */
100
- protected onMouseWheel(event: WheelEvent): void;
101
- }
102
- export { FloorplanController, FloorplanControllerCustomInitArgs, };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FloorplanController=void 0;var t=require("tslib"),e=t.__importStar(require("three")),i=require("../utils/isNil"),a=require("../utils/tween"),n=require("../utils/arrayMin"),o=require("../utils/calculateProgress"),s=require("../utils/animationFrame"),r=require("../utils/formatRad"),u=require("../utils/busy"),l=require("./base"),d=function(l){function d(t){var e=this,i=d.parseArgs(t);return(e=l.call(this,i)||this).defaultLongitude=i.defaultLongitude,e.defaultLatitude=i.defaultLatitude,e.defaultFov=i.defaultFov,e.maxFov=i.maxFov,e.minFov=i.minFov,e.maxLatitude=i.maxLatitude,e.minLatitude=i.minLatitude,e}return t.__extends(d,l),d.parseArgs=function(e){var i,a,n,o,s,r,u,d=l.parseArgs.call(this,e);return t.__assign(t.__assign({},d),{defaultLongitude:null!==(i=e.defaultLongitude)&&void 0!==i?i:Math.PI/4,defaultLatitude:null!==(a=e.defaultLatitude)&&void 0!==a?a:Math.PI/4,defaultFov:null!==(n=e.defaultFov)&&void 0!==n?n:80,maxFov:null!==(o=e.maxFov)&&void 0!==o?o:120,minFov:null!==(s=e.minFov)&&void 0!==s?s:40,maxLatitude:null!==(r=e.maxLatitude)&&void 0!==r?r:+Math.PI/2,minLatitude:null!==(u=e.minLatitude)&&void 0!==u?u:-Math.PI/2})},d.initAnimationEndPose=function(t){var e,i,a,n=this.parseArgs(t),o=t.initial[0],s=null!==(e=o.longitude)&&void 0!==e?e:n.defaultLongitude,r=Math.max(n.minLatitude,Math.min(n.maxLatitude,null!==(i=o.latitude)&&void 0!==i?i:n.defaultLatitude)),u=null!==(a=o.fov)&&void 0!==a?a:n.defaultFov,l=d.prototype.cameraDistance.call(n);return{longitude:s,latitude:r,fov:u,offset:d.prototype.calculateCameraPosition.call(n,{longitude:r,latitude:r},l,null,!1).clone()}},d.prototype.destroy=function(){l.prototype.destroy.call(this)},d.prototype.updateWork=function(t,e,i,a){return this.work=t,this.currentPanoIndex=e.panoIndex,!0},d.prototype.resetModel=function(t,e){l.prototype.resetModel.call(this,t,e),this.initAnimation({longitude:this.defaultLongitude,latitude:this.defaultLatitude,fov:this.defaultFov},0,e)},d.prototype.initAnimation=function(t,i,n){var s,r,u,l,d,h,m=this;if(this.destroyed)return Promise.resolve();var c=this.camera,p=this.model;this.preventPanGesture=!0,this.preventTapGesture=!0,this.preventPinchGesture=!0;var v=c.pose.longitude,f=c.pose.latitude,g=c.pose.fov,P=c.pose.offset.clone(),y=(null===(s=p.getMaterial())||void 0===s?void 0:s.modelAlpha)||0,x=null!==(u=null===(r=this.model.getMaterial())||void 0===r?void 0:r.perspToOrtho)&&void 0!==u?u:0,M=null!==(l=t.longitude)&&void 0!==l?l:this.defaultLongitude,w=Math.max(this.minLatitude,Math.min(this.maxLatitude,null!==(d=t.latitude)&&void 0!==d?d:this.defaultLatitude)),F=null!==(h=t.fov)&&void 0!==h?h:this.defaultFov,C=p.bounding.getCenter(new e.Vector3),L=this.cameraDistance(),G=this.calculateCameraPosition({longitude:w,latitude:w},L,null,!1),I={longitude:M,latitude:w,fov:F,offset:G.clone()};return this.emit("initAnimationWillStart",this.currentPanoIndex,I,n),new Promise((function(t){m.tweenCoordinates&&(m.tweenCoordinates.destroy(),delete m.tweenCoordinates);var s=function(t){var e=t.progress,i=o.progressRad(v,M,e),a=o.progressNumber(f,w,e),s=o.progressNumber(g,F,e);m.updateCamera({longitude:i,latitude:a,fov:s,offset:m.camera.pose.offset},n,!1)},r=function(){s({progress:1}),m.tweenCoordinates&&(m.tweenCoordinates.destroy(),delete m.tweenCoordinates)};i>0?m.tweenCoordinates=a.tweenProgress(i,a.Easing.Quadratic.InOut).onUpdate(s).onComplete(r):r(),m.tweenPosition&&(m.tweenPosition.destroy(),delete m.tweenPosition);var u=function(t){var i=t.progress,a=o.progressNumber(0,L,i),s=new e.Vector3(o.progressNumber(P.x-C.x,0,i),o.progressNumber(P.y-C.y,0,i),o.progressNumber(P.z-C.z,0,i)),r=o.progressNumber(y,1,i),u=o.progressNumber(x,0,i);p.setMaterial({modelAlpha:r,perspToOrtho:u});var l=m.calculateCameraPosition(m.camera.pose,a,s,!1);m.updateCamera({offset:l},n,!1)};r=function(){u({progress:1}),m.updateCamera(m.camera.copyPose(),n,!1),m.tweenPosition&&(m.tweenPosition.destroy(),delete m.tweenPosition),m.needsRender=!0,m.preventPanGesture=!1,m.preventTapGesture=!1,m.preventPinchGesture=!1,t(),m.emit("initAnimationEnded",m.currentPanoIndex,m.camera.copyPose(),n)};i>0?m.tweenPosition=a.tweenProgress(i,a.Easing.Quadratic.InOut).onUpdate(u).onComplete(r).onCancel((function(){m.preventPanGesture=!1,m.preventTapGesture=!1,m.preventPinchGesture=!1,t(),m.emit("initAnimationEnded",m.currentPanoIndex,m.camera.copyPose(),n)})):r()}))},d.prototype.cameraDistance=function(){var t=this.model.bounding,e=this.camera.aspect,i=Math.pow(Math.pow(t.max.x-t.min.x+2,2)+Math.pow(t.max.y-t.min.y+2,2)+Math.pow(t.max.z-t.min.z+2,2),.5),a=i/2/Math.tan(Math.PI*this.defaultFov/360);return e<1&&(a/=e),isNaN(a)?i:a},d.prototype.calculateCameraPosition=function(t,i,a,n){var o=t.longitude,s=Math.max(-Math.PI/2+.01,Math.min(Math.PI/2-.01,t.latitude));n&&(s=Math.max(this.minLatitude,Math.min(this.maxLatitude,s)));var r=this.model.bounding.getCenter(new e.Vector3),u=i*Math.cos(s),l=new e.Vector3(Math.sin(o)*u+r.x,Math.sin(s)*i+r.y,Math.cos(o)*u+r.z);return null!==a&&l.add(a),l},d.prototype.updateCamera=function(t,e,i){var a,n,o;void 0===t&&(t={});var s=this,r=s.minFov,l=s.maxFov,d=s.maxLatitude,h=s.minLatitude,m=null!==(a=t.longitude)&&void 0!==a?a:this.camera.pose.longitude,c=null!==(n=t.latitude)&&void 0!==n?n:this.camera.pose.latitude,p=void 0===t.fov||this.emit("wantsChangeCameraFov",t.fov)?this.camera.pose.fov:t.fov,v=null!==(o=t.offset)&&void 0!==o?o:this.calculateCameraPosition({longitude:m,latitude:c},this.cameraDistance(),null,i);i&&(c=Math.max(h,Math.min(d,c)),p=Math.max(r,Math.min(l,p)));var f=m!==this.camera.pose.longitude||c!==this.camera.pose.latitude,g=p!==this.camera.pose.fov,P=!v.equals(this.camera.pose.offset);this.camera.setFromPose({longitude:m,latitude:c,fov:p,offset:v}),g&&this.emit("cameraFovUpdate",this.camera.pose.fov,e),f&&this.emit("cameraDirectionUpdate",{longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},e),P&&this.emit("cameraPositionUpdate",this.camera.pose.offset.clone(),e),(g||f||P)&&this.emit("cameraUpdate",this.camera.copyPose(),e),this.needsRender=!0,u.busy()},d.prototype.getForwardPanoIndexOrNot=function(t){var e=this.work.observers.filter((function(t){return t.active})),i=this.model.intersectRaycaster(t)[0];if(!i)return null;var a=n.arrayMin(e,(function(t){return t.standingPosition.distanceTo(i.point)}),!0),o=a[0];return a[1]<5?this.work.observers.indexOf(o):null},d.prototype.coordinatesChangeWithOffset=function(t,e){var i=this.element,a=this.camera,n=i.offsetWidth,o=i.offsetHeight,s=2*e.x/n*a.fov/30,u=2*e.y/o*a.fov/30;return{longitude:r.formatRad(t.longitude+s),latitude:Math.max(this.minLatitude,Math.min(this.maxLatitude,t.latitude+u))}},d.prototype.requestInteriaMovement=function(t,e){var i=this;if(!1!==this.interiaMovement){var a=this.coordinatesChangeWithOffset(this.camera.pose,t),n=a.longitude,o=a.latitude;this.updateCamera({longitude:n,latitude:o},e,!0);var r=Math.abs(t.x)>1||Math.abs(t.y)>1;this.emit("interiaPan",this.camera.copyPose(),!r),r&&s.nextFrame((function(){i.requestInteriaMovement({x:.8*t.x,y:.8*t.y},e)}))}},d.prototype.onPanGesture=function(t){var e=this;if(!this.tweenCoordinates){this.interiaMovement=!1;var i=this.lastPanPoint&&this.lastPanPoint.pointerLength===t.pointers.length?{x:t.center.x-this.lastPanPoint.x,y:t.center.y-this.lastPanPoint.y}:{x:0,y:0},a=this.relativeClientPosition(t.center),n=this.camera.pose.latitude<Math.PI/6||a.y<0?-1:1,o=this.coordinatesChangeWithOffset(this.camera.pose,{x:i.x*n,y:i.y}),r=o.longitude,u=o.latitude,l=this.calculateCameraPosition({longitude:r,latitude:u},this.cameraDistance(),null,!0),d=t.pointers.map((function(t){return{x:t.x,y:t.y}}));if(!(this.emit("wantsGesture","pan",d,t.isFinal)||this.emit("wantsPanGesture",{longitude:r,latitude:u,fov:this.camera.pose.fov,offset:l.clone()},t.isFinal)))if(this.updateCamera({longitude:r,latitude:u,offset:l},!0,!0),this.emit("gesture","pan",d,t.isFinal),this.emit("panGesture",this.camera.copyPose(),t.isFinal),this.lastPanPoint=t.isFinal?void 0:{pointerLength:t.pointers.length,x:t.center.x,y:t.center.y},t.isFinal)this.emit("wantsInteriaPan",this.camera.copyPose())||(this.interiaMovement=!0,s.getFrameTime((function(i){var a=t.velocityX*i*n,o=t.velocityY*i,s=Math.sqrt(a*a+o*o);s>100&&(a=a/s*100,o=o/s*100),e.requestInteriaMovement({x:a,y:o},!0)})))}},d.prototype.onTapGesture=function(t){if(this.interiaMovement=!1,!this.tweenPosition){var a=this.relativeClientPosition(t.center),n=new e.Raycaster;n.setFromCamera(a,this.camera);var o=t.pointers.map((function(t){return{x:t.x,y:t.y}}));if(!(this.emit("wantsGesture","tap",o,!0)||this.emit("wantsTapGesture",n,a))){this.emit("gesture","tap",o,!0),this.emit("tapGesture",n,a);var s;s=this.getForwardPanoIndexOrNot(n),i.isNil(s)||(this.emit("panoSelected",s),this.emit("wantsMoveToPano",s,{longitude:this.camera.pose.longitude,latitude:0},!0))}}},d.prototype.onPinchGesture=function(t){this.interiaMovement=!1;var e=this.camera,i=this.lastPinchPoint;if("pinchstart"===t.type)return delete this.lastPanPoint,void(this.lastPinchPoint=e.fov);"pinchend"===t.type&&(delete this.lastPanPoint,delete this.lastPinchPoint);var a="pinchend"===t.type;if(i){var n=i/t.scale,o=t.pointers.map((function(t){return{x:t.x,y:t.y}}));if(this.emit("wantsGesture","pinch",o,a)||this.emit("wantsPinchGesture",t.scale,n,a))return;this.updateCamera({fov:n},!0,!0),this.emit("gesture","pinch",o,a),this.emit("pinchGesture",t.scale,n,a)}},d.prototype.onMouseWheel=function(t){var e=this;this.interiaMovement=!1;var i=t.delta,a=this.minFov,n=this.maxFov,o=Math.max(a,Math.min(n,this.camera.fov-i)),s=[{x:t.clientX,y:t.clientY}];this.emit("wantsGesture","mouseWheel",s,!1)||this.emit("wantsMouseWheel",i,o,!1)||(this.updateCamera({fov:o},!0,!0),this.emit("gesture","mouseWheel",s,!1),this.emit("mouseWheel",i,o,!1),clearTimeout(this.onMouseWheelFinalInterval),this.onMouseWheelFinalInterval=window.setTimeout((function(){e.emit("wantsGesture","mouseWheel",s,!0)||e.emit("wantsMouseWheel",i,o,!0)||(e.emit("gesture","mouseWheel",s,!0),e.emit("mouseWheel",0,o,!0))}),200))},d}(l.BaseController);exports.FloorplanController=d;
@@ -1,23 +0,0 @@
1
- /// <reference types="hammerjs" />
2
- import * as THREE from "three";
3
- import { MovePanoOptions } from "../types/movePanoOptions";
4
- import { Work } from "../work";
5
- import { State } from "../types/state";
6
- import { Pose } from "../types/pose";
7
- import { BaseControllerInitArgs } from "./base";
8
- import { PanoramaLikeController, PanoramaLikeControllerCustomInitArgs } from "./panoramaLike";
9
- import { PBMParameters } from "../core/pbmParameters";
10
- interface ModelControllerCustomInitArgs extends PanoramaLikeControllerCustomInitArgs {
11
- }
12
- declare class ModelController extends PanoramaLikeController {
13
- static parseArgs(args: BaseControllerInitArgs & ModelControllerCustomInitArgs): Required<BaseControllerInitArgs & ModelControllerCustomInitArgs>;
14
- static initAnimationEndPose(args: BaseControllerInitArgs & ModelControllerCustomInitArgs): Pose;
15
- constructor(args: BaseControllerInitArgs & ModelControllerCustomInitArgs);
16
- destroy(): void;
17
- updateWork(work: Work, state: Omit<State, "mode" | "offset">, duration: number | undefined, userAction: boolean): boolean;
18
- moveToPano(panoIndex: number, options: MovePanoOptions, userAction: boolean): void;
19
- moveToPosition(position: THREE.Vector3, options: MovePanoOptions, userAction: boolean): void;
20
- protected setModelAndBoundingUniforms(uniforms: Partial<PBMParameters>): void;
21
- protected onTapGesture(input: HammerInput): void;
22
- }
23
- export { ModelController, ModelControllerCustomInitArgs, };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ModelController=void 0;var e=require("tslib"),t=e.__importStar(require("three")),o=require("../utils/arrayMin"),r=require("../utils/calculateProgress"),n=require("../utils/tween"),i=function(i){function s(e){var t=s.parseArgs(e);return i.call(this,t)||this}return e.__extends(s,i),s.parseArgs=function(e){return i.parseArgs.call(this,e)},s.initAnimationEndPose=function(e){var t=this.parseArgs(e);return i.initAnimationEndPose.call(this,t)},s.prototype.destroy=function(){i.prototype.destroy.call(this)},s.prototype.updateWork=function(e,t,o,r){return this.work=e,this.currentPanoIndex=t.panoIndex,this.hideIntersectMesh(),this.moveToPano(t.panoIndex,{duration:0,longitude:t.longitude,latitude:t.latitude,fov:t.fov},r),!0},s.prototype.moveToPano=function(e,t,o){void 0===t&&(t={});var r=this.work.observers[e];r&&this.moveToPosition(r.position,t,o)},s.prototype.moveToPosition=function(e,i,s){var a,l,u,d,p,c,v=this;void 0===i&&(i={});var m=this,h=m.camera,f=m.model,g=m.currentPanoIndex,y=i.duration,P=i.limit,w=void 0===P||P,C=i.easing,b=void 0===C?n.Easing.Quadratic.InOut:C,M=this.calculateMovingDuration(y,h.pose.offset.distanceTo(e)),T=o.arrayMin(this.work.observers,(function(t){return t.position.distanceTo(e)})),k=this.work.observers.indexOf(T);this.emit("moveToPano",k,s);var x=h.pose.longitude,A=h.pose.latitude,G=h.pose.fov,E=h.pose.offset.clone(),I=(null===(a=f.getMaterial())||void 0===a?void 0:a.modelAlpha)||0,N=null!==(u=null===(l=this.model.getMaterial())||void 0===l?void 0:l.perspToOrtho)&&void 0!==u?u:0,q=null!==(d=i.longitude)&&void 0!==d?d:x,O=null!==(p=i.latitude)&&void 0!==p?p:A,_=null!==(c=i.fov)&&void 0!==c?c:G,R=e.clone(),U={longitude:q,latitude:O,fov:_,offset:R.clone()};i.moveStartCallback&&i.moveStartCallback(k,U),this.emit("panoWillArrive",k,U,s),this.tweenPosition&&(this.tweenPosition.destroy(),delete this.tweenPosition);var L=function(e){var o=e.progress;v.setModelAndBoundingUniforms({modelAlpha:r.progressNumber(I,1,o),perspToOrtho:r.progressNumber(N,0,Math.min(5*o,1))});var n=new t.Vector3(r.progressNumber(E.x,R.x,o),r.progressNumber(E.y,R.y,o),r.progressNumber(E.z,R.z,o));v.updateCamera({offset:n},s,w),o>.7&&(v.preventTapGesture=!1),v.emit("movingToPano",k,g,o),s&&v.lastMouseMoveEvent&&v.onMouseMove(v.lastMouseMoveEvent),v.needsRender=!0},S=function(){L({progress:1}),v.preventTapGesture=!1,v.emit("panoArrived",k,v.camera.copyPose(),s),v.needsRender=!0};if(this.preventTapGesture=!0,M>0?this.tweenPosition=n.tweenProgress(M,b).onUpdate(L).onComplete((function(){v.tweenPosition&&v.tweenPosition.destroy(),delete v.tweenPosition,i.moveEndCallback&&i.moveEndCallback(k,v.camera.copyPose()),S()})).onCancel((function(){i.moveCancelCallback&&i.moveCancelCallback()})):S(),this.tweenCoordinates&&(this.tweenCoordinates.destroy(),delete this.tweenCoordinates),x!==q||A!==O||G!==_){var V=function(e){var t=e.progress,o=r.progressRad(x,q,t),n=r.progressNumber(A,O,t),i=r.progressNumber(G,_,t);v.updateCamera({longitude:o,latitude:n,fov:i},s,w)},j=function(){return V({progress:1})};M>0?this.tweenCoordinates=n.tweenProgress(M,b).onUpdate(V).onComplete((function(){v.tweenCoordinates&&(v.tweenCoordinates.destroy(),delete v.tweenCoordinates),j()})):j()}},s.prototype.setModelAndBoundingUniforms=function(e){for(var t=0,o=[this.model];t<o.length;t++){o[t].setMaterial(e)}},s.prototype.onTapGesture=function(e){if(this.interiaMovement=!1,!0!==this.preventTapGesture){var r=this.camera,n=this.model,i=this.relativeClientPosition(e.center),s=new t.Raycaster;s.setFromCamera(i,r);var a=e.pointers.map((function(e){return{x:e.x,y:e.y}}));if(!(this.emit("wantsGesture","tap",a,!0)||this.emit("wantsTapGesture",s,i))){var l=g(s);if(l&&l.face){var u=l.face.normal,d=l.point;if(new t.Vector3(0,1,0).angleTo(u)>Math.PI/3){var p=r.pose.offset.clone().setY(d.y),c=d.clone().sub(p).setLength(.3),v=d.clone().sub(c);s.set(v,new t.Vector3(0,-1,0)),l=g(s)}}if(l){var m=l.point.clone(),h=this.work.observers.filter((function(e){return Math.abs(e.standingPosition.y-m.y)<1})),f=o.arrayMin(h,(function(e){return e.standingPosition.distanceTo(m)}));f&&(m.y=f.position.y,this.emit("gesture","tap",a,!0),this.emit("tapGesture",s,i),this.moveToPosition(m,{},!0))}}}function g(e){return(!0===n.empty?e.intersectObjects(n.children):n.intersectRaycaster(e))[0]}},s}(require("./panoramaLike").PanoramaLikeController);exports.ModelController=i;
@@ -1,69 +0,0 @@
1
- /// <reference types="hammerjs" />
2
- import * as THREE from "three";
3
- import { Model } from "../loaders/model";
4
- import { Work } from "../work";
5
- import { CubeTextureLoader } from "../loaders/cubeTexture";
6
- import { TileTextureLoader } from "../loaders/tileTexture";
7
- import { generateBoundingMesh } from "../meshes/boundingMesh";
8
- import { MovePanoOptions } from "../types/movePanoOptions";
9
- import { BaseControllerInitArgs } from "./base";
10
- import { PanoramaLikeController, PanoramaLikeControllerCustomInitArgs } from "./panoramaLike";
11
- import { Pose } from "../types/pose";
12
- import { State } from "../types/state";
13
- import { PBMGroup } from "../core/pbmGroup";
14
- import { PBMParameters } from "../core/pbmParameters";
15
- import { HashCubeTexture as CubeTexture } from "../core/cubeTexture";
16
- import { PanoCircleMeshInterface } from "../meshes/panoCircleMesh";
17
- interface PanoramaControllerCustomInitArgs extends PanoramaLikeControllerCustomInitArgs {
18
- /** 最远可移动观察点距离 */
19
- maxAccessibleDistance?: number;
20
- /**
21
- * 点击地面观察点标识的判定范围
22
- * @description
23
- * 如果在判定范围内则确定去到目标点,
24
- * 否则寻找点击位置方向最适合的点(可能会走到一个离相机更近的点)。
25
- */
26
- panoTapTriggerRadius?: number;
27
- /** 地面观察点标识自定义创建器 */
28
- panoCircleMeshCreator?: () => PanoCircleMeshInterface;
29
- }
30
- declare class PanoramaController extends PanoramaLikeController {
31
- protected maxAccessibleDistance: number;
32
- protected panoTapTriggerRadius: number;
33
- protected panoCircleMeshCreator: () => PanoCircleMeshInterface;
34
- protected cubeTextureLoader: CubeTextureLoader;
35
- protected tileTextureLoader?: TileTextureLoader;
36
- protected boundingMesh: ReturnType<typeof generateBoundingMesh>;
37
- protected panoCircleMeshes: PanoCircleMeshInterface[];
38
- protected pendingLoadTextureHashAndCallback?: [
39
- hash: string,
40
- callback: (error: Error | null, cubeTexture?: CubeTexture) => void
41
- ];
42
- protected depthCamera?: THREE.CubeCamera;
43
- static parseArgs(args: BaseControllerInitArgs & PanoramaControllerCustomInitArgs): Required<BaseControllerInitArgs & PanoramaControllerCustomInitArgs>;
44
- static initAnimationEndPose(args: BaseControllerInitArgs & PanoramaLikeControllerCustomInitArgs): Pose;
45
- constructor(args: BaseControllerInitArgs & PanoramaControllerCustomInitArgs);
46
- getCurrentTileIndicesInCamera(): number[];
47
- tilingPanoIfNeeds(): void;
48
- updateWork(work: Work, state: Omit<State, "mode" | "offset">, duration: number | undefined, userAction: boolean): boolean;
49
- protected updatePanoCircleMeshes(modelGroundTest?: boolean): void;
50
- destroy(): void;
51
- render(): void;
52
- /**
53
- * 设置外包围 Mesh, 用于补充模型的破洞
54
- * 因为在 updateWork 时可能存在相机当前位置在新模型外的情况,所以需要将camera 也包括在 boundingMesh 的返回中
55
- * @param containCamera 是否要包含 摄像机位置
56
- * @returns
57
- */
58
- protected generateBoundingMesh(containCamera?: boolean): import("../meshes/boundingMesh").BoundingMesh;
59
- resetModel(model: Model, userAction: boolean): void;
60
- moveToPano(panoIndex: number, options: MovePanoOptions, userAction: boolean): void;
61
- updateCamera(pose: Partial<Pose>, userAction: boolean, limit: boolean): void;
62
- protected canNotMoveAnimation(): void;
63
- protected getModelAndBoundingMaterial(): ReturnType<PBMGroup["getMaterial"]>;
64
- protected setModelAndBoundingMaterial(uniforms: Partial<PBMParameters>): void;
65
- protected doMoveToPano(panoIndex: number, texture: CubeTexture, options: MovePanoOptions, userAction: boolean): void;
66
- protected getForwardPanoIndexOrNot(raycaster?: THREE.Raycaster): number;
67
- protected onTapGesture(input: HammerInput): void;
68
- }
69
- export { PanoramaController, PanoramaControllerCustomInitArgs, };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PanoramaController=void 0;for(var e=require("tslib"),t=e.__importStar(require("three")),o=e.__importStar(require("json-hash")),n=require("../utils/isNil"),i=require("../utils/animationFrame"),r=require("../utils/arrayMin"),a=require("../utils/calculateProgress"),s=require("../utils/tween"),d=require("../utils/busy"),l=require("../loaders/cubeTexture"),u=require("../loaders/tileTexture"),h=require("../meshes/boundingMesh"),c=require("./panoramaLike"),p=require("../meshes/panoCircleMesh"),v=require("../utils/coordinatesToVector"),g=(new t.Matrix4).makeRotationAxis(new t.Vector3(0,1,0),Math.PI),M=new t.Vector2(16,8),f=[],m=0;m<M.x;m++)for(var b=0;b<M.y;b++){f[b*M.x+m]=[];var x=2*Math.PI/M.x*(m+.5),C=Math.PI/M.y*(b+.5)-Math.PI/2,w=v.coordinatesToVector({longitude:x,latitude:C});f[b*M.x+m].push(w);for(var T=0;T<=8;T++)for(var y=0;y<=8;y++){var P=2*Math.PI/M.x*(m+T/8),A=Math.PI/M.y*(b+y/8)-Math.PI/2,k=v.coordinatesToVector({longitude:P,latitude:A});f[b*M.x+m].push(k)}}var I=new t.MeshDistanceMaterial({nearDistance:0,farDistance:10}),L=function(c){function v(e){var o=this,n=v.parseArgs(e);(o=c.call(this,n)||this).maxAccessibleDistance=n.maxAccessibleDistance,o.panoTapTriggerRadius=n.panoTapTriggerRadius,o.panoCircleMeshCreator=n.panoCircleMeshCreator;var i=o.model.getMaterial()||{},r=i.pano0Map,a=i.pano1Map;return a&&a!==r&&(o.model.setMaterial({pano1Map:r}),a.dispose()),o.boundingMesh=o.generateBoundingMesh(),o.boundingMesh.setMaterial(o.model.getMaterial()||{}),o.boundingMesh.name="bounding",o.boundingMesh.visible=!1,o.scene.add(o.boundingMesh),o.panoCircleMeshes=[],o.updatePanoCircleMeshes(),o.model.loaded||o.panoCircleMeshes.forEach((function(e){return e.visible=!1})),o.depthCamera=new t.CubeCamera(.01,10,new t.WebGLCubeRenderTarget(64)),o.cubeTextureLoader=new l.CubeTextureLoader(o.renderer),o.cubeTextureLoader.on("start",(function(e){var t,n=e.index;null===(t=o.panoCircleMeshes[n])||void 0===t||t.setProgress(0),o.emit("textureStartLoad",n,o.work.observers[n])})),o.cubeTextureLoader.on("progress",(function(e,t){var n,i=t.index;null===(n=o.panoCircleMeshes[i])||void 0===n||n.setProgress(e),o.emit("textureLoading",e,i,o.work.observers[i])})),o.cubeTextureLoader.on("abort",(function(e){var t,n=e.index;null===(t=o.panoCircleMeshes[n])||void 0===t||t.setProgress(0),o.emit("textureAbort",n,o.work.observers[n])})),o.cubeTextureLoader.on("load",(function(e,t){var n,i=t.index;null===(n=o.panoCircleMeshes[i])||void 0===n||n.setProgress(1),o.emit("textureLoaded",i,o.work.observers[i])})),o.cubeTextureLoader.on("error",(function(e,t){var n,i=t.index;null===(n=o.panoCircleMeshes[i])||void 0===n||n.setProgress(0),o.emit("textureError",e,i,o.work.observers[i]),o.emit("error",e)})),o.once("initAnimationWillStart",(function(){(new t.Box3).expandByObject(o.boundingMesh).containsPoint(o.camera.position)&&(o.boundingMesh.visible=!0)})),o.once("initAnimationEnded",(function(){o.boundingMesh.visible=!0})),o}return e.__extends(v,c),v.parseArgs=function(t){var o,n,i,r=c.parseArgs.call(this,t);return e.__assign(e.__assign({},r),{maxAccessibleDistance:null!==(o=t.maxAccessibleDistance)&&void 0!==o?o:5,panoTapTriggerRadius:null!==(n=t.panoTapTriggerRadius)&&void 0!==n?n:1,panoCircleMeshCreator:null!==(i=t.panoCircleMeshCreator)&&void 0!==i?i:p.generatePanoCircleMesh})},v.initAnimationEndPose=function(e){var t=this.parseArgs(e);return c.initAnimationEndPose.call(this,t)},v.prototype.getCurrentTileIndicesInCamera=function(){for(var e=this.work.observers[this.currentPanoIndex],o=(new t.Matrix4).compose(e.position,e.quaternion,new t.Vector3(-1,1,1)),n=this.camera.getWorldDirection(new t.Vector3),i=(new t.Matrix4).multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),r=(new t.Frustum).setFromProjectionMatrix(i),a=[],s=0;s<f.length;s++)for(var d=0,l=f[s];d<l.length;d++){var u=l[d];if(r.containsPoint(u.clone().applyMatrix4(o))){a.push(s);break}}return a.sort((function(e,t){return f[e][0].angleTo(n)-f[t][0].angleTo(n)})),a},v.prototype.tilingPanoIfNeeds=function(){var e,o=this,n=this.camera.pose.fov<=70,i=this.work.observers[this.currentPanoIndex],r=i.images.tiles;if(n&&r&&i.position.equals(this.camera.pose.offset)){this.tileTextureLoader||(this.tileTextureLoader=new u.TileTextureLoader(this.renderer),this.tileTextureLoader.on("update",(function(e){o.setModelAndBoundingMaterial({panoTileMap:o.tileTextureLoader.texutre,panoTileMappings:e}),o.needsRender=!0})));for(var a=this.getCurrentTileIndicesInCamera(),s=[],d=0;d<M.x*M.y;d++)if(-1!==a.indexOf(d)){var l=Math.floor(d%M.x),h=Math.floor(d/M.x),c=new t.Vector4(l/M.x,h/M.y,1/M.x,1/M.y),p=r+"/row-"+(h+1)+"-column-"+(l+1)+".jpg";s.push({resource:p,clip:c})}this.tileTextureLoader.loadTiles(s)}else null===(e=this.tileTextureLoader)||void 0===e||e.cleanTiles()},v.prototype.updateWork=function(e,t,o,n){var i=this;this.work=e,this.currentPanoIndex=t.panoIndex;var r={},a=!0;return this.boundingMesh&&(r=this.boundingMesh.getMaterial()||{},a=this.boundingMesh.visible,this.scene.remove(this.boundingMesh),this.boundingMesh.dispose()),this.boundingMesh=this.generateBoundingMesh(!0),this.boundingMesh.name="bounding",this.boundingMesh.visible=a,this.boundingMesh.setMaterial(r),this.scene.add(this.boundingMesh),this.hideIntersectMesh(),this.moveToPano(t.panoIndex,{effect:"fade",duration:o,longitude:t.longitude,latitude:t.latitude,fov:t.fov,moveStartCallback:function(){return i.updatePanoCircleMeshes(!1)}},n),!0},v.prototype.updatePanoCircleMeshes=function(e){var o=this;void 0===e&&(e=!0);var n=[];this.panoCircleMeshes&&(this.panoCircleMeshes.forEach((function(e){e.loading&&n.push(e.panoIndex),o.scene.remove(e),e.dispose()})),this.panoCircleMeshes.length=0);var i=new t.Vector3(0,-1,0);this.panoCircleMeshes=this.work.observers.map((function(r,a){var s=o.panoCircleMeshCreator();if(s.position.copy(r.standingPosition),e&&o.model.loaded){var d=s.position.clone().add(new t.Vector3(0,1,0)),l=new t.Raycaster(d,i,0,1),u=o.model.intersectRaycaster(l)[0];u&&u.point.distanceTo(s.position)>.1&&(s.position.copy(u.point.clone()),s.needsRender=!0)}return s.name="panoCircle_"+a,s.panoIndex=a,o.scene.add(s),s.needsRender=!0,!1===r.active&&(s.setDisabled(!0),n.indexOf(a)>=0&&(s.setDisabled(!1),s.setLoading(!0))),s}));var r=this.work.observers[this.currentPanoIndex].visibleNodes;r=r.filter((function(e){var t=o.work.observers[e];return t.loadable||t.active})),this.panoCircleMeshes.forEach((function(e){e.visible=r.indexOf(e.panoIndex)>=0}));var a=this.camera.position;this.panoCircleMeshes.forEach((function(e){var t=e.position.distanceTo(a);e.setOpacity(Math.min(1.5/t,1))}))},v.prototype.destroy=function(){var e,o,n,i=this;c.prototype.destroy.call(this),this.cubeTextureLoader.off(),null===(e=this.tileTextureLoader)||void 0===e||e.dispose(),delete this.pendingLoadTextureHashAndCallback,this.boundingMesh&&(this.scene.remove(this.boundingMesh),this.boundingMesh.dispose()),this.panoCircleMeshes&&(this.panoCircleMeshes.forEach((function(e){i.scene.remove(e),e.dispose()})),this.panoCircleMeshes.length=0),this.interiaMovement=!1;var r=this.videoTexture.image;r.pause(),r.oncanplay=function(){},r.ontimeupdate=function(){};var a={pano0DepthMap:null,panoVideoMap:null,panoVideoSize:new t.Vector2,panoVideoMatrix:new t.Matrix4,panoVideoAlpha:0};this.setModelAndBoundingMaterial(a),null===(o=this.depthCamera)||void 0===o||o.renderTarget.texture.dispose(),null===(n=this.depthCamera)||void 0===n||n.renderTarget.dispose(),delete this.depthCamera},v.prototype.render=function(){this.work.observers[this.currentPanoIndex].video&&(this.needsRender=!0),c.prototype.render.call(this)},v.prototype.generateBoundingMesh=function(e){void 0===e&&(e=!1);var o=this.model.bounding.clone();return this.work.observers.forEach((function(e){o.expandByPoint(e.standingPosition),o.expandByPoint((new t.Vector3).fromArray([e.position.x,2*e.position.y-e.standingPosition.y,e.position.z]))})),e&&o.expandByPoint(this.camera.pose.offset),h.generateBoundingMesh(o,new t.Vector3(1,0,1))},v.prototype.resetModel=function(e,t){var o=this;this.model=e;var n={};this.boundingMesh&&(n=this.boundingMesh.getMaterial()||{},this.boundingMesh.visible,this.scene.remove(this.boundingMesh),this.boundingMesh.dispose()),this.boundingMesh=this.generateBoundingMesh(),this.boundingMesh.visible=!0,this.boundingMesh.name="bounding",this.boundingMesh.setMaterial(n),this.scene.add(this.boundingMesh),this.needsRender=!0,d.delay((function(){o.updatePanoCircleMeshes(),o.updateCamera({},t,!0),o.needsRender=!0}))},v.prototype.moveToPano=function(e,t,n){var r=this;this.interiaMovement=!1;var a={index:e,images:this.work.observers[e].images,imageOptions:this.imageOptions},s=o.digest(a),d=function(o,a){if(o)return t.moveCancelCallback&&t.moveCancelCallback(),r.emit("panoLoadError",o,e),void r.emit("moveToPanoCanceled",e);var s=a;r.destroyed?s.dispose():(r.emit("panoLoaded",e),i.nextFrame((function(){return r.doMoveToPano(e,s,t,n)})))},l=this.pendingLoadTextureHashAndCallback||[],u=l[0],h=l[1];if(s!==u){if(delete this.pendingLoadTextureHashAndCallback,h&&h(new Error("texture aborted")),this.emit("moveToPano",e,n),this.emit("panoWillLoad",e),!a.images)return void d(new Error("pano images were not existed"));var c=this.getModelAndBoundingMaterial()||{},p=c.pano0Map,v=c.pano1Map,g=void 0;if(p&&p.hash===s?g=p:v&&v.hash===s&&(g=v),g)return void d(null,g);this.pendingLoadTextureHashAndCallback=[s,d],this.cubeTextureLoader.load(a,(function(e,t){var o=r.pendingLoadTextureHashAndCallback||[],n=o[0],i=o[1];s===n&&i?(i(e,t),delete r.pendingLoadTextureHashAndCallback):null==t||t.dispose()}))}},v.prototype.updateCamera=function(e,t,o){var n=this;void 0===e&&(e={}),c.prototype.updateCamera.call(this,e,t,o),this.panoCircleMeshes.forEach((function(e){var t=e.position.distanceTo(n.camera.pose.offset);e.setOpacity(Math.min(1.5/t,1))}));var i=this.getForwardPanoIndexOrNot();null!==i&&this.panoCircleMeshes[i].setOpacity(1),this.needsRender=!0,d.busy(),this.tilingPanoIfNeeds()},v.prototype.canNotMoveAnimation=function(){var e=this;if(this.interiaMovement=!1,!this.tweenCoordinates){var t=this.camera.fov,o=.98*t,n=function(t){var o=t.fov;e.updateCamera({fov:o},!0,!0)};this.tweenCoordinates=s.tween({fov:t},{fov:o},200).onUpdate(n).onComplete((function(){var i;null===(i=e.tweenCoordinates)||void 0===i||i.destroy(),e.tweenCoordinates=s.tween({fov:o},{fov:t},200).onUpdate(n).onComplete((function(){var t;null===(t=e.tweenCoordinates)||void 0===t||t.destroy(),delete e.tweenCoordinates}))}))}},v.prototype.getModelAndBoundingMaterial=function(){for(var e=0,t=[this.model,this.boundingMesh];e<t.length;e++){return t[e].getMaterial()}return null},v.prototype.setModelAndBoundingMaterial=function(e){for(var t=0,o=[this.model,this.boundingMesh];t<o.length;t++){o[t].setMaterial(e)}},v.prototype.doMoveToPano=function(e,o,n,r){var d,l,u,h,c,p,v,M,f,m,b,x=this;void 0===n&&(n={});var C=n.effect,w=void 0===C?"fly":C,T=n.limit,y=void 0===T||T,P=n.easing,A=void 0===P?s.Easing.Quadratic.InOut:P,k=this.currentPanoIndex,L=this.work.observers[e],V=this.work.observers[k].accessibleNodes.indexOf(e)>=0,B=L.video,N=L.visibleNodes;N=N.filter((function(e){var t=x.work.observers[e];return t.loadable||t.active})),this.currentPanoIndex=e;var R=this.calculateMovingDuration(n.duration,this.camera.pose.offset.distanceTo(L.standingPosition)),E=this.camera.pose.offset.clone(),O=null!==(l=null===(d=this.getModelAndBoundingMaterial())||void 0===d?void 0:d.modelAlpha)&&void 0!==l?l:0,q=null!==(h=null===(u=this.model.getMaterial())||void 0===u?void 0:u.perspToOrtho)&&void 0!==h?h:0,D=this.camera.pose.longitude,_=this.camera.pose.latitude,S=this.camera.pose.fov,z=L.position,F=null!==(p=null===(c=this.getModelAndBoundingMaterial())||void 0===c?void 0:c.pano0Matrix)&&void 0!==p?p:new t.Matrix4,G=(new t.Matrix4).compose(L.position,L.quaternion,new t.Vector3(-1,1,1)),W=null!==(v=n.longitude)&&void 0!==v?v:D,j=null!==(M=n.latitude)&&void 0!==M?M:_,H=null!==(f=n.fov)&&void 0!==f?f:S,U={fov:H,longitude:W,latitude:j,offset:z.clone()};n.moveStartCallback&&n.moveStartCallback(e,U),this.emit("panoWillArrive",e,U,r),this.needsRender=!0,this.tweenPosition&&(this.tweenPosition.destroy(),delete this.tweenPosition),V&&(this.scene.overrideMaterial=I,I.referencePosition.copy(E),null===(m=this.depthCamera)||void 0===m||m.position.copy(E),null===(b=this.depthCamera)||void 0===b||b.update(this.renderer,this.scene),this.scene.overrideMaterial=null);var Y=function(){var t=x.getModelAndBoundingMaterial()||{},a=t.pano0Map,d=t.pano1Map;a&&a!==d&&a!==o&&a.dispose();var l={modelAlpha:0,perspToOrtho:0,pano0Matrix:G,pano0Map:o,pano0DepthMap:x.depthCamera?x.depthCamera.renderTarget.texture:null,pano1Matrix:G,pano1Map:o,progress:0};if(B&&Object.keys(B).length>0){var u=x.videoTexture.image;u.oncanplay=function(){u.oncanplay=function(){},u.currentTime=0,u.play(),x.setModelAndBoundingMaterial({panoVideoAlpha:0,panoVideoMap:x.videoTexture,panoVideoSize:B.size,panoVideoMatrix:g.clone().multiply(G).multiply(B.matrix)})},u.src=B.source,u.ontimeupdate=function(){if(u.currentTime>.5&&u.src===(null==B?void 0:B.source)){u.ontimeupdate=function(){};var e=s.tweenProgress(230,A).onUpdate((function(e){var t=e.progress;return x.setModelAndBoundingMaterial({panoVideoAlpha:t})})).onComplete((function(){return e.destroy()}))}}}x.setModelAndBoundingMaterial(l),x.panoCircleMeshes.forEach((function(e){e.visible=N.indexOf(e.panoIndex)>=0})),x.updateCamera({offset:z},r,y),x.panoCircleMeshes[e]&&x.panoCircleMeshes[e].setProgress(0),n.moveEndCallback&&n.moveEndCallback(e,x.camera.copyPose()),x.preventTapGesture=!1,i.nextFrame((function(){x.emit("panoArrived",e,x.camera.copyPose(),r)})),x.needsRender=!0};if(this.preventTapGesture=!0,R){var Q=this.videoTexture.image;Q.pause(),Q.removeAttribute("src"),Q.oncanplay=function(){},Q.ontimeupdate=function(){},this.videoTexture.needsUpdate=!0;var J=this.getModelAndBoundingMaterial()||{},K=J.pano0Map,X=J.pano1Map;X&&X!==K&&X!==o&&X.dispose();var Z={pano1Matrix:G,pano1Map:o,pano0DepthMap:V&&this.depthCamera?this.depthCamera.renderTarget.texture:null,panoVideoMap:null,panoVideoSize:new t.Vector2,panoVideoMatrix:new t.Matrix4,panoVideoAlpha:0,useBlackTransition:"instant"===w};if("fade"===w){var $=F.clone();$.setPosition(z),Z.pano0Matrix=$,E.copy(z),this.updateCamera({offset:z},r,y)}this.setModelAndBoundingMaterial(Z),"fly"!==w&&this.panoCircleMeshes.forEach((function(e){return e.visible=!1})),this.renderer.compile(this.scene,this.camera),this.tweenPosition=s.tweenProgress(R,A).onUpdate((function(o){var n=o.progress;x.setModelAndBoundingMaterial({progress:n,modelAlpha:a.progressNumber(O,0,n),perspToOrtho:a.progressNumber(q,0,Math.min(5*n,1))});var i=new t.Vector3(a.progressNumber(E.x,z.x,n),a.progressNumber(E.y,z.y,n),a.progressNumber(E.z,z.z,n));x.updateCamera({offset:i},r,y),n>.9&&(x.preventTapGesture=!1),x.emit("movingToPano",e,k,n),"fly"===w?r&&x.lastMouseMoveEvent&&x.onMouseMove(x.lastMouseMoveEvent):x.hideIntersectMesh(),x.needsRender=!0})).onComplete((function(){x.tweenPosition&&(x.tweenPosition.completed=!0,x.tweenPosition.destroy()),delete x.tweenPosition,Y()})).onCancel((function(){n.moveCancelCallback&&n.moveCancelCallback()}))}else Y();if(this.tweenCoordinates&&(this.tweenCoordinates.destroy(),delete this.tweenCoordinates),D!==W||_!==j||S!==H){var ee=function(e){var t=e.progress,o=a.progressRad(D,W,t),n=a.progressNumber(_,j,t),i=a.progressNumber(S,H,t);x.updateCamera({longitude:o,latitude:n,fov:i},r,y)},te=function(){return ee({progress:1})};R>0?this.tweenCoordinates=s.tweenProgress(R,A).onUpdate(ee).onComplete((function(){x.tweenCoordinates&&(x.tweenCoordinates.destroy(),delete x.tweenCoordinates),te()})):te()}},v.prototype.getForwardPanoIndexOrNot=function(e){var o=this,n=this.camera,i=this.currentPanoIndex,r=this.work.observers[i].accessibleNodes;r=r.filter((function(e){var t=o.work.observers[e];return t.loadable||t.active}));var a,s=n.getWorldDirection(new t.Vector3);a=e?e.ray.direction.clone():s.clone();var d=n.pose.offset.clone();if(a.y=d.y=0,0===a.length()||0===d.length())return null;for(var l=0,u=r.filter((function(e){var t=o.work.observers[e].standingPosition.clone().sub(n.pose.offset);return 0!==t.length()&&t.angleTo(s)<n.fov/2/180*Math.PI})).map((function(e){var t=o.work.observers[e].standingPosition.clone();return Object.assign(t,{y:0,panoIndex:e})})).sort((function(e,t){return e.distanceTo(d)-t.distanceTo(d)}));l<u.length;l++){var h=u[l],c=h.clone().sub(d);if(0!==c.length()&&a.angleTo(c)<Math.PI/6)return h.panoIndex}return null},v.prototype.onTapGesture=function(o){var i=this;if(this.interiaMovement=!1,!0!==this.preventTapGesture){var a=null,s=this.work.observers[this.currentPanoIndex],d=s.accessibleNodes.filter((function(e){return i.work.observers[e].position.distanceTo(i.camera.pose.offset)<i.maxAccessibleDistance})),l=this.relativeClientPosition(o.center),u=new t.Raycaster;u.setFromCamera(l,this.camera);var h=o.pointers.map((function(e){return{x:e.x,y:e.y}}));if(!(this.emit("wantsGesture","tap",h,!0)||this.emit("wantsTapGesture",u,l))){this.emit("gesture","tap",h,!0),this.emit("tapGesture",u,l);var c=this.camera.getWorldDirection(new t.Vector3).setY(0).normalize(),p=this.model.intersectRaycaster(u)[0];if(p){var v=r.arrayMin(d,(function(e){var t=i.work.observers[e].standingPosition.clone();return t.clone().sub(i.camera.pose.offset).setY(0).angleTo(c)>Math.PI/2?1/0:t.distanceTo(p.point)}),!0),g=v[0];v[1]<this.panoTapTriggerRadius&&(a=g)}if(n.isNil(a)&&(a=this.getForwardPanoIndexOrNot(u)),n.isNil(a))this.canNotMoveAnimation();else{var M=this.work.observers[a];if(this.emit("panoSelected",a),M.active){for(var f=Math.PI/6,m=Math.PI/12,b=M.position.clone().setY(0).sub(s.position.clone().setY(0)).normalize(),x=b.clone().applyAxisAngle(new t.Vector3(0,1,0),f),C=b.clone().applyAxisAngle(new t.Vector3(0,1,0),-f),w=[],T=[],y=[],P=0,A=M.accessibleNodes;P<A.length;P++){if((g=A[P])!==this.currentPanoIndex&&g!==a){var k=this.work.observers[g].position.clone().setY(0).sub(M.position.clone().setY(0));b.angleTo(k)<f?y.push(k):x.angleTo(k)<f?w.push(k):C.angleTo(k)<f&&T.push(k)}}var I=(y.length>0?y:e.__spreadArray(e.__spreadArray([],w),T)).slice().sort((function(e,t){return e.angleTo(b)-t.angleTo(b)}))[0],L={};I&&I.angleTo(c)>m&&(L.longitude=Math.atan2(-I.x,-I.z)),this.emit("wantsMoveToPano",a,L,!0)}else this.panoCircleMeshes[a]&&(this.panoCircleMeshes[a].setDisabled(!1),this.panoCircleMeshes[a].setLoading(!0))}}}},v}(c.PanoramaLikeController);exports.PanoramaController=L;
@@ -1,88 +0,0 @@
1
- /// <reference types="hammerjs" />
2
- import { BaseController, BaseControllerInitArgs } from "./base";
3
- import { IntersectMeshInterface } from "../meshes/intersectMesh";
4
- import { Pose } from "../types/pose";
5
- import { MovePanoOptions } from "../types/movePanoOptions";
6
- interface PanoramaLikeControllerCustomInitArgs {
7
- /** 默认相机偏航角 */
8
- defaultLongitude?: number;
9
- /** 默认相机俯仰角 */
10
- defaultLatitude?: number;
11
- /** 最大相机俯仰角 */
12
- maxLatitude?: number;
13
- /** 最小相机俯仰角 */
14
- minLatitude?: number;
15
- /** 默认相机可视角度(垂直),可作为 `zoom` */
16
- defaultFov?: number;
17
- /** 最大默认相机可视角度(垂直) */
18
- maxFov?: number;
19
- /** 最小默认相机可视角度(垂直) */
20
- minFov?: number;
21
- /**
22
- * 点位间移动动画速度 单位 m/s
23
- * @description
24
- * 这边设置的是速度,整体耗时会通过距离除速度计算得到
25
- */
26
- moveSpeed?: number;
27
- /** 鼠标焦点环自定义创建器 */
28
- intersectMeshCreator?: () => IntersectMeshInterface;
29
- }
30
- declare class PanoramaLikeController extends BaseController {
31
- protected defaultLongitude: number;
32
- protected defaultLatitude: number;
33
- protected defaultFov: number;
34
- protected maxFov: number;
35
- protected minFov: number;
36
- protected maxLatitude: number;
37
- protected minLatitude: number;
38
- protected moveSpeed: number;
39
- protected intersectMeshCreator: () => IntersectMeshInterface;
40
- protected intersectMesh: IntersectMeshInterface;
41
- /** 相机旋转是否在惯性运动 */
42
- protected interiaMovement: boolean;
43
- protected lastPanPoint?: {
44
- x: number;
45
- y: number;
46
- pointerLength: number;
47
- };
48
- protected lastMouseMoveEvent?: {
49
- clientX: number;
50
- clientY: number;
51
- };
52
- protected lastPinchFov?: number;
53
- protected onMouseWheelFinalInterval?: number;
54
- static parseArgs(args: BaseControllerInitArgs & PanoramaLikeControllerCustomInitArgs): Required<BaseControllerInitArgs & PanoramaLikeControllerCustomInitArgs>;
55
- static initAnimationEndPose(args: BaseControllerInitArgs & PanoramaLikeControllerCustomInitArgs): Pose;
56
- constructor(args: BaseControllerInitArgs & PanoramaLikeControllerCustomInitArgs);
57
- destroy(): void;
58
- updateCamera(pose: Partial<Pose>, userAction: boolean, limit: boolean): void;
59
- protected calculateMovingDuration(duration: MovePanoOptions["duration"], distance: number): number;
60
- protected initAnimation(pose: Partial<Omit<Pose, "offset">>, duration: number, userAction: boolean): Promise<void>;
61
- protected hideIntersectMesh(): void;
62
- protected coordinatesChangeWithOffset(coordinates: {
63
- longitude: number;
64
- latitude: number;
65
- }, offset: {
66
- x: number;
67
- y: number;
68
- }): {
69
- longitude: number;
70
- latitude: number;
71
- };
72
- protected requestInteriaMovement(offset: {
73
- x: number;
74
- y: number;
75
- }, userAction: boolean): void;
76
- protected onPanGesture(input: HammerInput): void;
77
- /**
78
- * 触摸事件, 摄像头缩放
79
- */
80
- protected onPinchGesture(input: HammerInput): void;
81
- /**
82
- * 鼠标事件, 摄像头缩放
83
- */
84
- protected onMouseWheel(event: WheelEvent): void;
85
- protected onMouseMove(event: MouseEvent): void;
86
- protected onMouseOut(): void;
87
- }
88
- export { PanoramaLikeController, PanoramaLikeControllerCustomInitArgs, };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PanoramaLikeController=void 0;var e=require("tslib"),t=e.__importStar(require("three")),i=require("./base"),n=require("../meshes/intersectMesh"),a=require("../utils/busy"),s=require("../utils/animationFrame"),o=function(i){function o(e){var t=this,n=o.parseArgs(e);return(t=i.call(this,n)||this).defaultLongitude=n.defaultLongitude,t.defaultLatitude=n.defaultLongitude,t.defaultFov=n.defaultFov,t.maxFov=n.maxFov,t.minFov=n.minFov,t.maxLatitude=n.maxLatitude,t.minLatitude=n.minLatitude,t.moveSpeed=n.moveSpeed,t.intersectMeshCreator=n.intersectMeshCreator,t.interiaMovement=!1,t.intersectMesh=t.intersectMeshCreator(),t.intersectMesh.name="intersect",t.intersectMesh.visible=!1,t.scene.add(t.intersectMesh),t}return e.__extends(o,i),o.parseArgs=function(t){var a,s,o,r,h,l,u,d,c,m=i.parseArgs.call(this,t);return e.__assign(e.__assign({},m),{defaultLongitude:null!==(a=t.defaultLongitude)&&void 0!==a?a:0,defaultLatitude:null!==(s=t.defaultLongitude)&&void 0!==s?s:0,defaultFov:null!==(o=t.defaultFov)&&void 0!==o?o:80,maxFov:null!==(r=t.maxFov)&&void 0!==r?r:120,minFov:null!==(h=t.minFov)&&void 0!==h?h:40,maxLatitude:null!==(l=t.maxLatitude)&&void 0!==l?l:+Math.PI/2,minLatitude:null!==(u=t.minLatitude)&&void 0!==u?u:-Math.PI/2,moveSpeed:null!==(d=t.moveSpeed)&&void 0!==d?d:3.2,intersectMeshCreator:null!==(c=t.intersectMeshCreator)&&void 0!==c?c:n.generateIntersectMesh})},o.initAnimationEndPose=function(e){var t,i,n,a=this.parseArgs(e),s=e.initial[0];return{longitude:null!==(t=s.longitude)&&void 0!==t?t:a.defaultLongitude,latitude:null!==(i=s.latitude)&&void 0!==i?i:a.defaultLatitude,fov:null!==(n=s.fov)&&void 0!==n?n:a.defaultFov,offset:a.work.observers[a.panoIndex].position.clone()}},o.prototype.destroy=function(){i.prototype.destroy.call(this),this.interiaMovement=!1,this.hideIntersectMesh(),this.intersectMesh&&(this.scene.remove(this.intersectMesh),this.intersectMesh.dispose())},o.prototype.updateCamera=function(e,t,i){var n,s,o;void 0===e&&(e={});var r=this,h=r.minFov,l=r.maxFov,u=r.maxLatitude,d=r.minLatitude,c=null!==(n=e.longitude)&&void 0!==n?n:this.camera.pose.longitude,m=null!==(s=e.latitude)&&void 0!==s?s:this.camera.pose.latitude,v=void 0===e.fov||this.emit("wantsChangeCameraFov",e.fov)?this.camera.pose.fov:e.fov,p=null!==(o=e.offset)&&void 0!==o?o:this.camera.pose.offset;i&&(m=Math.max(d,Math.min(u,m)),v=Math.max(h,Math.min(l,v)));var f=c!==this.camera.pose.longitude||m!==this.camera.pose.latitude,M=v!==this.camera.pose.fov,y=!p.equals(this.camera.pose.offset);this.camera.setFromPose({longitude:c,latitude:m,fov:v,offset:p}),M&&this.emit("cameraFovUpdate",this.camera.pose.fov,t),f&&this.emit("cameraDirectionUpdate",{longitude:this.camera.pose.longitude,latitude:this.camera.pose.latitude},t),y&&this.emit("cameraPositionUpdate",this.camera.pose.offset.clone(),t),(M||f||y)&&this.emit("cameraUpdate",this.camera.copyPose(),t),this.needsRender=!0,a.busy()},o.prototype.calculateMovingDuration=function(e,t){switch(typeof e){case"function":return e(t,this.moveSpeed);case"number":return e;case"string":return Number(e);default:return Math.floor(Math.max(Math.min(t/this.moveSpeed*1e3,1500),500))}},o.prototype.initAnimation=function(e,t,i){var n,a,s,o=this;if(this.destroyed)return Promise.resolve();var r=null!==(n=e.longitude)&&void 0!==n?n:this.defaultLongitude,h=null!==(a=e.latitude)&&void 0!==a?a:this.defaultLatitude,l=null!==(s=e.fov)&&void 0!==s?s:this.defaultFov;return new Promise((function(e){o.moveToPano(o.currentPanoIndex,{longitude:r,latitude:h,fov:l,limit:!1,duration:t,moveStartCallback:function(e,t){o.preventPanGesture=!0,o.preventTapGesture=!0,o.emit("initAnimationWillStart",e,t,i)},moveEndCallback:function(t,n){o.preventPanGesture=!1,o.preventTapGesture=!1,e(),o.emit("initAnimationEnded",t,n,i)},moveCancelCallback:function(){o.preventPanGesture=!1,o.preventTapGesture=!1,e(),o.emit("initAnimationEnded",o.currentPanoIndex,o.camera.copyPose(),i)}},i)}))},o.prototype.hideIntersectMesh=function(){this.intersectMesh.visible=!1,this.emit("intersectionHidden"),this.needsRender=!0},o.prototype.coordinatesChangeWithOffset=function(e,t){var i=2*t.x/this.element.offsetWidth*this.camera.fov/95*this.camera.aspect,n=-2*t.y/this.element.offsetHeight*this.camera.fov/95;return{longitude:e.longitude+i,latitude:e.latitude+n}},o.prototype.requestInteriaMovement=function(e,t){var i=this;if(!1!==this.interiaMovement){var n=this.coordinatesChangeWithOffset(this.camera.pose,e),a=n.longitude,o=n.latitude;this.updateCamera({longitude:a,latitude:o},t,!0);var r=Math.abs(e.x)>1||Math.abs(e.y)>1;this.emit("interiaPan",this.camera.copyPose(),!r),r?s.nextFrame((function(){i.requestInteriaMovement({x:.9*e.x,y:.9*e.y*.7},t)})):this.interiaMovement=!1}},o.prototype.onPanGesture=function(e){var t=this;this.interiaMovement=!1,this.hideIntersectMesh();var i=this.lastPanPoint&&this.lastPanPoint.pointerLength===e.pointers.length?{x:e.center.x-this.lastPanPoint.x,y:e.center.y-this.lastPanPoint.y}:{x:0,y:0},n=this.coordinatesChangeWithOffset(this.camera.pose,i),a=n.longitude,o=n.latitude;Math.abs(e.overallVelocityX)>.2&&Math.atan2(Math.abs(e.overallVelocityY),Math.abs(e.overallVelocityX))<Math.PI/6.923&&(o=this.camera.pose.latitude);var r=e.pointers.map((function(e){return{x:e.x,y:e.y}}));this.emit("wantsGesture","pan",r,e.isFinal)||this.emit("wantsPanGesture",this.camera.copyPose(),e.isFinal)||(this.tweenCoordinates&&(this.tweenCoordinates.destroy(),delete this.tweenCoordinates),this.updateCamera({longitude:a,latitude:o},!0,!0),this.emit("gesture","pan",r,e.isFinal),this.emit("panGesture",this.camera.copyPose(),e.isFinal),this.lastPanPoint=e.isFinal?void 0:{pointerLength:e.pointers.length,x:e.center.x,y:e.center.y},e.isFinal&&(this.emit("wantsInteriaPan",this.camera.copyPose())||s.getFrameTime((function(i){t.interiaMovement=!0;var n=e.velocityX*i,a=e.velocityY*i,s=Math.sqrt(n*n+a*a);s>100&&(n=n/s*100,a=a/s*100),Math.abs(a/n)<Math.tan(20/180*Math.PI)&&(a=0),t.requestInteriaMovement({x:n,y:a},!0)}))))},o.prototype.onPinchGesture=function(e){this.tweenCoordinates&&(this.tweenCoordinates.destroy(),delete this.tweenCoordinates),this.interiaMovement=!1;var t=this.camera,i=this.lastPinchFov,n=e.scale,a=e.type;if("pinchstart"===a)return this.lastPinchFov=t.fov,void delete this.lastPanPoint;"pinchend"===a&&(delete this.lastPanPoint,delete this.lastPinchFov);var s="pinchend"===a;if(i){var o=i/n,r=e.pointers.map((function(e){return{x:e.x,y:e.y}}));if(this.emit("wantsGesture","pinch",r,s)||this.emit("wantsPinchGesture",n,o,s))return;this.updateCamera({fov:o},!0,!0),this.emit("gesture","pinch",r,s),this.emit("pinchGesture",n,o,s)}},o.prototype.onMouseWheel=function(e){var t=this;this.tweenCoordinates&&(this.tweenCoordinates.destroy(),delete this.tweenCoordinates),this.interiaMovement=!1;var i=e.delta,n=this.minFov,a=this.maxFov,s=Math.max(n,Math.min(a,this.camera.fov-i)),o=[{x:e.clientX,y:e.clientY}];this.emit("wantsGesture","mouseWheel",o,!1)||this.emit("wantsMouseWheel",i,s,!1)||(this.updateCamera({fov:s},!0,!0),this.emit("gesture","mouseWheel",o,!1),this.emit("mouseWheel",i,s,!1),clearTimeout(this.onMouseWheelFinalInterval),this.onMouseWheelFinalInterval=window.setTimeout((function(){t.emit("wantsGesture","mouseWheel",o,!0)||t.emit("wantsMouseWheel",i,s,!0)||(t.emit("gesture","mouseWheel",o,!0),t.emit("mouseWheel",0,s,!0))}),200))},o.prototype.onMouseMove=function(e){var i=this,n=i.camera,a=i.model,s=i.intersectMesh,o=i.lastPanPoint;if(s&&!a.empty&&a.bvhs&&!0===a.bvhs.loaded&&!o){var r=this.relativeClientPosition({x:e.clientX,y:e.clientY}),h=new t.Raycaster;if(h.setFromCamera(r,n),this.emit("wantsShowIntersectionOnModel",h))return this.hideIntersectMesh(),void(this.needsRender=!0);var l=a.intersectRaycaster(h)[0];if(l&&l.face){var u=l.face.normal,d=u.clone().multiplyScalar(.05),c=l.point.clone().add(d);s.position.copy(c);var m=c.clone().add(d);if(s.lookAt(m),Math.abs(u.y)>.99){var v=n.pose.offset.clone().sub(c);s.rotation.z=-Math.atan2(v.z,v.x)}s.visible=!0,this.emit("intersectionOnModelUpdate",l,s),this.needsRender=!0}else this.hideIntersectMesh(),this.needsRender=!0;this.lastMouseMoveEvent={clientX:e.clientX,clientY:e.clientY}}},o.prototype.onMouseOut=function(){this.intersectMesh&&!0===this.intersectMesh.visible&&this.hideIntersectMesh()},o}(i.BaseController);exports.PanoramaLikeController=o;
@@ -1,28 +0,0 @@
1
- /// <reference types="hammerjs" />
2
- import * as THREE from "three";
3
- import { Pose } from "../types/pose";
4
- import { BaseControllerInitArgs } from "./base";
5
- import { FloorplanController, FloorplanControllerCustomInitArgs } from "./floorplan";
6
- interface TopviewControllerCustomInitArgs extends Omit<FloorplanControllerCustomInitArgs, "defaultLongitude" | "defaultLatitude" | "maxLatitude" | "minLatitude"> {
7
- }
8
- declare class TopviewController extends FloorplanController {
9
- static parseArgs(args: BaseControllerInitArgs & TopviewControllerCustomInitArgs): Required<BaseControllerInitArgs & FloorplanControllerCustomInitArgs>;
10
- static initAnimationEndPose(args: BaseControllerInitArgs & TopviewControllerCustomInitArgs): Pose;
11
- constructor(args: BaseControllerInitArgs & TopviewControllerCustomInitArgs);
12
- /**
13
- * 初始化动画
14
- */
15
- protected initAnimation(pose: Partial<Omit<Pose, "offset">>, duration: number, userAction: boolean): Promise<void>;
16
- protected getZoomOffsetFromFov(mouse: THREE.Vector2, camera: THREE.PerspectiveCamera, nextFov: number): THREE.Vector3;
17
- /**
18
- * 拖动事件, 用于挂册
19
- */
20
- protected onPanGesture(input: HammerInput): void;
21
- protected onMouseWheel(event: WheelEvent): void;
22
- /**
23
- * 触摸事件, 摄像头缩放
24
- */
25
- protected onPinchGesture(input: HammerInput): void;
26
- __requestInteriaMovement(): void;
27
- }
28
- export { TopviewController, TopviewControllerCustomInitArgs, };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TopviewController=void 0;var t=require("tslib"),e=t.__importStar(require("three")),i=require("../utils/tween"),n=require("../utils/calculateProgress"),a=function(a){function o(t){var e=o.parseArgs(t);return a.call(this,e)||this}return t.__extends(o,a),o.parseArgs=function(e){var i=[t.__assign(t.__assign({},e.initial[0]),{longitude:0,latitude:Math.PI/2}),e.initial[1],e.initial[2]],n=t.__assign(t.__assign({},e),{initial:i,maxLatitude:Math.PI/2,minLatitude:Math.PI/2,defaultLongitude:0,defaultlatitude:Math.PI/2});return a.parseArgs.call(this,n)},o.initAnimationEndPose=function(t){var e=this.parseArgs(t);return a.initAnimationEndPose.call(this,e)},o.prototype.initAnimation=function(t,e,o){var s=this;return a.prototype.initAnimation.call(this,t,e,o).then((function(){var t,a;if(!s.destroyed){var o=null!==(a=null===(t=s.model.getMaterial())||void 0===t?void 0:t.perspToOrtho)&&void 0!==a?a:0;if(0===e)s.model.setMaterial({perspToOrtho:1}),s.needsRender=!0;else var r=i.tweenProgress(250,i.Easing.Linear.None).onUpdate((function(t){var e=t.progress;s.destroyed||(s.model.setMaterial({perspToOrtho:n.progressNumber(o,1,e)}),s.needsRender=!0)})).onComplete((function(){return r.destroy()}))}}))},o.prototype.getZoomOffsetFromFov=function(t,i,n){var a=new e.Vector3(0,-1,0),o=Math.tan(n/2*Math.PI/180),s=Math.tan(i.fov/2*Math.PI/180),r=(s-o)/s,l=new e.Raycaster;l.setFromCamera(t,i);var h=l.ray.direction,u=h.angleTo(a),m=this.cameraDistance(),c=m*Math.tan(u),p=h.clone().setLength(m*Math.cos(u)).projectOnPlane(a),d=p.length(),f=r/d*p.x*c,v=r/d*p.z*c;return new e.Vector3(f,0,v)},o.prototype.onPanGesture=function(t){if(!this.tweenCoordinates){var i=this.element,n=this.camera,a=n.fov,o=n.matrix,s=n.up,r=i.offsetHeight,l=this.lastPanPoint&&this.lastPanPoint.pointerLength===t.pointers.length?{x:t.center.x-this.lastPanPoint.x,y:t.center.y-this.lastPanPoint.y}:{x:0,y:0},h=this.camera.pose.offset.clone(),u=n.position.y*Math.tan(a/2*Math.PI/180);h.add(function(t,i){var n=new e.Vector3;return n.setFromMatrixColumn(i,0),n.multiplyScalar(-t),n}(2*l.x*u/r,o)),h.add(function(t,i,n){var a=new e.Vector3;return a.setFromMatrixColumn(n,0),a.crossVectors(i,a),a.multiplyScalar(t),a}(2*l.y*u/r,s,o));var m=this.model.bounding,c=m.getCenter(new e.Vector3),p=(m.max.x-m.min.x)/this.defaultFov*n.fov,d=(m.max.y,m.min.y,this.defaultFov,n.fov,(m.max.z-m.min.z)/this.defaultFov*n.fov);h.x=Math.max(c.x-p,Math.min(c.x+p,h.x)),h.z=Math.max(c.z-d,Math.min(c.z+d,h.z));var f=t.pointers.map((function(t){return{x:t.x,y:t.y}}));this.emit("wantsGesture","pan",f,t.isFinal)||this.emit("wantsPanGesture",{longitude:this.camera.pose.longitude,latitude:this.camera.pose.longitude,fov:this.camera.pose.fov,offset:h},t.isFinal)||(this.updateCamera({offset:h},!0,!0),this.emit("gesture","pan",f,t.isFinal),this.emit("panGesture",this.camera.copyPose(),t.isFinal),this.lastPanPoint=t.isFinal?void 0:{pointerLength:t.pointers.length,x:t.center.x,y:t.center.y})}},o.prototype.onMouseWheel=function(t){var e=this,i=t.delta,n=t.clientX,a=t.clientY,o=this.camera,s=this.minFov,r=this.maxFov,l=Math.max(s,Math.min(r,this.camera.fov-i)),h=[{x:t.clientX,y:t.clientY}];if(!(this.emit("wantsGesture","mouseWheel",h,!1)||this.emit("wantsMouseWheel",i,l,!1))){var u=this.relativeClientPosition({x:n,y:a}),m=this.getZoomOffsetFromFov(u,o,l),c=this.camera.pose.offset.clone().add(m);this.updateCamera({longitude:0,latitude:Math.PI/2,offset:c,fov:l},!0,!0),this.emit("gesture","mouseWheel",h,!1),this.emit("mouseWheel",i,l,!1),clearTimeout(this.onMouseWheelFinalInterval),this.onMouseWheelFinalInterval=window.setTimeout((function(){e.emit("wantsGesture","mouseWheel",h,!0)||e.emit("wantsMouseWheel",i,l,!0)||(e.emit("gesture","mouseWheel",h,!0),e.emit("mouseWheel",0,l,!0))}),200)}},o.prototype.onPinchGesture=function(t){var e=this.camera,i=this.lastPinchPoint,n=t.scale,a=t.type,o=t.center,s=this.minFov,r=this.maxFov;if("pinchstart"===a)return delete this.lastPanPoint,void(this.lastPinchPoint=e.fov);"pinchend"===a&&(delete this.lastPanPoint,delete this.lastPinchPoint);var l="pinchend"===a;if(i){var h=i/n,u=t.pointers.map((function(t){return{x:t.x,y:t.y}}));if(this.emit("wantsGesture","pinch",u,l)||this.emit("wantsPinchGesture",n,h,l))return;h=Math.max(s,Math.min(r,h));var m=this.relativeClientPosition(o),c=this.getZoomOffsetFromFov(m,e,h),p=this.camera.pose.offset.clone().add(c);this.updateCamera({longitude:0,latitude:Math.PI/2,offset:p,fov:h},!0,!0),this.emit("gesture","pinch",u,l),this.emit("pinchGesture",n,h,l)}},o.prototype.__requestInteriaMovement=function(){},o}(require("./floorplan").FloorplanController);exports.TopviewController=a;
@@ -1,40 +0,0 @@
1
- import * as THREE from "three";
2
- import { Pose } from "../types/pose";
3
- import { BaseControllerInitArgs } from "./base";
4
- import { PanoramaController, PanoramaControllerCustomInitArgs } from "./panorama";
5
- import { PanoSphereMesh } from "../meshes/panoSphereMesh";
6
- interface VRPanoramaControllerCustomInitArgs extends Omit<PanoramaControllerCustomInitArgs, "maxLatitude" | "minLatitude"> {
7
- /**
8
- * webvrPolyfill 的设置对象
9
- * @description
10
- * 只可被设置一次,所有的 five 实例共用这个设置
11
- */
12
- webvrPolyfillConfig?: any;
13
- }
14
- declare class VRPanoramaController extends PanoramaController {
15
- protected effect: any;
16
- protected panoSphereMeshes: PanoSphereMesh[];
17
- protected helperElement?: HTMLElement;
18
- protected intersectCameraPosition?: THREE.Vector3;
19
- protected intersectCameraVector?: THREE.Vector3;
20
- protected intersectActiveSphereMesh?: PanoSphereMesh;
21
- protected intersectActiveDate?: number;
22
- static parseArgs(args: BaseControllerInitArgs & VRPanoramaControllerCustomInitArgs): Required<BaseControllerInitArgs & PanoramaControllerCustomInitArgs>;
23
- static initAnimationEndPose(args: BaseControllerInitArgs & VRPanoramaControllerCustomInitArgs): Pose;
24
- constructor(args: BaseControllerInitArgs & VRPanoramaControllerCustomInitArgs);
25
- destroy(): void;
26
- protected initHelper(element: HTMLElement): void;
27
- protected setHelperElementSize(): void;
28
- protected destroyHelper(): void;
29
- resize(): void;
30
- protected doMoveToPano(...args: Parameters<PanoramaController["doMoveToPano"]>): void;
31
- protected vrWantsToExit(): void;
32
- protected onPanGesture(): void;
33
- protected onTapGesture(): void;
34
- protected onPinchGesture(): void;
35
- protected onMouseMove(): void;
36
- protected onMouseOut(): void;
37
- protected renderIntersect(): void;
38
- render(): void;
39
- }
40
- export { VRPanoramaController, VRPanoramaControllerCustomInitArgs, };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.VRPanoramaController=void 0;var e=require("tslib"),t=e.__importDefault(require("webvr-polyfill")),n=e.__importStar(require("three")),r=e.__importDefault(require("hammerjs")),i=require("../webvr/vrEffect"),s=require("../webvr/helper.img"),o=require("../utils/isNil"),a=require("../utils/uuid"),l=require("../utils/now"),p=require("./panorama"),h=require("../meshes/panoSphereMesh"),c=null,f=function(p){function f(e){var n=this;o.isNil(c)&&(c=new t.default(e.webvrPolyfillConfig||{}));var r=f.parseArgs(e);n=p.call(this,r)||this;var s=r.element,a=r.renderer,l=r.panoIndex,d=void 0===l?0:l;n.effect=new i.VREffect(a);var u=s.offsetWidth,m=s.offsetHeight;n.element=s,n.effect.setSize(u,m),n.effect.isPresenting=!0,n.panoSphereMeshes=n.work.observers.map((function(e,t){var r=h.generatePanoSphereMesh();return r.name="panoSphereMesh_"+t,r.position.copy(e.position),Object.assign(r,{panoIndex:t}),n.scene.add(r),r}));var v=n.work.observers[d].visibleNodes;v=v.filter((function(e){return n.work.observers[e].active}));var y=n.panoSphereMeshes.filter((function(e){return e.panoIndex===d}))[0];return n.panoSphereMeshes.forEach((function(e){if(e.visible=v.indexOf(e.panoIndex)>=0,y){var t=y.position.distanceTo(e.position)<5;e.visible=e.visible&&t}})),n.intersectMesh.parent&&n.intersectMesh.parent.remove(n.intersectMesh),n.initHelper(s),n}return e.__extends(f,p),f.parseArgs=function(t){var n=e.__assign(e.__assign({},t),{maxLatitude:Math.PI/2,minLatitude:-Math.PI/2});return p.parseArgs.call(this,n)},f.initAnimationEndPose=function(e){var t=this.parseArgs(e);return p.initAnimationEndPose.call(this,t)},f.prototype.destroy=function(){var e=this;p.prototype.destroy.call(this),this.panoSphereMeshes&&(this.panoSphereMeshes.forEach((function(t){e.scene.remove(t),t.dispose()})),this.panoSphereMeshes.length=0),this.destroyHelper()},f.prototype.initHelper=function(e){for(var t="five_webvr_helper_"+a.uuid(),n=1,i=document.getElementsByTagName("meta"),o=0;o<i.length;o++){var l=i[o];if("viewport"===l.getAttribute("name")){var p=(l.getAttribute("content")||"").match(/initial\-scale\=([\d|\.]+)/);p&&(n=Number(p[1])),isNaN(n)&&(n=1)}}var h=function(e){return Math.floor(e*n)+"px"},c=document.createElement("style"),f="\n ."+t+"{\n font-family:sans-serif;\n background:#394043;color:#ffffff;\n position:absolute;display:none;\n -webkit-tap-highlight-color:rgba(0,0,0,0);\n }\n ."+t+" img{\n position:absolute;top:50%;left:50%;\n -webkit-transform:translate(-50%,-100%);\n -moz-transform:translate(-50%,-100%);\n transform:translate(-50%,-100%);\n pointer-events:none;\n width:"+h(132)+";\n height:"+h(162)+";\n }\n ."+t+" ol{\n position:absolute;top:50%;left:50%;\n -webkit-transform:translate(-50%,0);\n -moz-transform:translate(-50%,0);\n transform:translate(-50%,0);\n pointer-events:none;\n margin-top:"+h(38)+";\n font-size:"+h(16)+";\n line-height:"+h(30)+";\n }\n ."+t+" li{\n list-style-type:none;\n white-space:nowrap;\n position:relative;\n padding-left:"+h(14)+";\n }\n ."+t+" li:before{\n content:'';display:block;height:"+h(6)+";width:"+h(6)+";\n position:absolute;top:50%;left:0;\n -webkit-transform:translate(0,-50%);\n -moz-transform:translate(0,-50%);\n transform:translate(0,-50%);\n border-radius:50%;background:#ffffff;\n }\n @media screen and (orientation: portrait){\n ."+t+"{display: block!important}\n }\n ";c.setAttribute("type","text/css"),"styleSheet"in c?c.styleSheet.cssText=f:c.appendChild(document.createTextNode(f));var d=this.helperElement=document.createElement("div");d.className=t,d.innerHTML='\n <img src="'+s.helpImageURL+'"/>\n <ol style="">\n <li>进入:将手机横屏放入VR眼镜中</li>\n <li>前进:视角中心对准蓝点,直至变绿</li>\n <li>退出:将手机竖屏再触碰屏幕</li>\n </ol>\n ';var u=new r.default(d);e.parentNode&&(e.parentNode.insertBefore(c,e),e.parentNode.insertBefore(d,e),this.setHelperElementSize(),u.on("tap",this.vrWantsToExit.bind(this))),this.destroyHelper=function(){u.destroy(),c.parentNode&&c.parentNode.removeChild(c),d.parentNode&&d.parentNode.removeChild(d)}},f.prototype.setHelperElementSize=function(){if(this.helperElement){var e=this.renderer.domElement,t=new n.Vector2(e.offsetWidth,e.offsetHeight),r=t.x*this.scissor.left,i=t.y*(1-this.scissor.bottom-this.scissor.height),s=t.x*this.scissor.width,o=t.y*this.scissor.height;this.helperElement.style.marginLeft=r+"px",this.helperElement.style.marginTop=i+"px",this.helperElement.style.width=s+"px",this.helperElement.style.height=o+"px"}},f.prototype.destroyHelper=function(){},f.prototype.resize=function(){var e=this.element,t=e.offsetWidth,n=e.offsetHeight;this.effect.isPresenting=!1,this.effect.setSize(t,n),this.effect.isPresenting=!0,this.needsRender=!0,this.setHelperElementSize()},f.prototype.doMoveToPano=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];p.prototype.doMoveToPano.apply(this,t);var r=t[0],i=this.work.observers[r],s=i.visibleNodes;s=s.filter((function(t){return e.work.observers[t].active}));var o=this.panoSphereMeshes.filter((function(e){return e.panoIndex===r}))[0];this.panoSphereMeshes.forEach((function(e){if(e.visible=s.indexOf(e.panoIndex)>=0,o){var t=o.position.distanceTo(e.position)<5;e.visible=e.visible&&t}})),this.needsRender=!0},f.prototype.vrWantsToExit=function(){this.emit("vrWantsToExit")},f.prototype.onPanGesture=function(){},f.prototype.onTapGesture=function(){},f.prototype.onPinchGesture=function(){},f.prototype.onMouseMove=function(){},f.prototype.onMouseOut=function(){},f.prototype.renderIntersect=function(){var e=this,t=e.camera,r=e.model,i=e.intersectMesh,s=e.panoSphereMeshes,o=e.intersectCameraPosition,a=e.intersectCameraVector,p=e.intersectActiveSphereMesh,h=e.intersectActiveDate;if(i){p&&h&&l.now()-h>2e3&&(delete this.intersectActiveDate,p.setCurrent(),this.moveToPano(p.panoIndex,{},!0));var c=t.getWorldDirection(new n.Vector3);if(!(o&&a&&t.pose.offset.equals(o)&&c.equals(a))){var f=t.pose.offset.clone(),d=new n.Raycaster(f,c),u=null,m=null;if(!u)for(var v=0,y=s.filter((function(e){return e.visible}));v<y.length;v++){var g=y[v],b=d.intersectObject(g,!0)[0];if(b){u=b,m=g;break}}if(u||r.empty||(u=r.intersectRaycaster(d)[0]),u&&u.face){var M=u.face.normal,w=new n.Quaternion;w.setFromUnitVectors(new n.Vector3(0,0,-1),M),i.quaternion.copy(w);var x=M.clone().multiplyScalar(.05),S=u.point.clone().add(x);if(i.position.copy(S),i.visible=!0,this.emit("intersectionOnModelUpdate",u,i),s.forEach((function(e){return e.reset()})),m)(g=m).setActive(),this.intersectActiveSphereMesh!==g&&(this.intersectActiveSphereMesh=g,this.intersectActiveDate=l.now());else delete this.intersectActiveSphereMesh,delete this.intersectActiveDate}else i.visible=!1,this.emit("intersectionHidden"),delete this.intersectActiveSphereMesh,delete this.intersectActiveDate;this.intersectCameraPosition=t.pose.offset.clone(),this.intersectCameraVector=c.clone(),this.needsRender=!0}}},f.prototype.render=function(){var e=this,t=e.effect,r=e.camera,i=e.scene,s=t.getVRDisplay(),a=this.camera.pose,l=a.longitude,p=a.latitude;if(s){var h=s.getPose();if(o.isNil(h.orientation)||r.quaternion.fromArray(h.orientation),s.stageParameters){r.updateMatrix();var c=s.stageParameters.sittingToStandingTransform,f=new n.Matrix4;f.fromArray(c),r.applyMatrix4(f)}}r.updateMatrixWorld(),r.computePose();var d=this.camera.pose,u=d.longitude,m=d.latitude;l===u&&p===m||(this.emit("cameraDirectionUpdate",{longitude:u,latitude:m},!0),this.emit("cameraUpdate",this.camera.copyPose(),!0)),this.renderIntersect(),t.render(i,r)},f}(p.PanoramaController);exports.VRPanoramaController=f;
package/core/camera.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import { Pose } from "../types/pose";
2
- import * as THREE from "three";
3
- /** Five 相机 */
4
- declare class Camera extends THREE.PerspectiveCamera {
5
- /** 相机姿态 */
6
- pose: Pose;
7
- constructor(fov: number);
8
- /** 通过相机参数反算姿态 */
9
- computePose(): void;
10
- /** 设置相机姿态 */
11
- setFromPose(pose: Partial<Pose>): void;
12
- /** 拷贝相机姿态 */
13
- copyPose(): Pose;
14
- }
15
- export { Camera };
package/core/camera.js DELETED
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Camera=void 0;var t=require("tslib"),o=t.__importStar(require("three")),e=2*Math.PI;function s(t){return(t%e+e)%e}var i=function(e){function i(t){var s=e.call(this,t,1,.1,1e3)||this;return s.pose={longitude:0,latitude:0,fov:t,offset:new o.Vector3},s.computePose(),s}return t.__extends(i,e),i.prototype.computePose=function(){var t=this.getWorldDirection(new o.Vector3);this.pose.longitude=s(-Math.atan2(t.x,-t.z)),this.pose.latitude=-Math.asin(t.y/1),this.pose.fov=this.fov,this.pose.offset.copy(this.position)},i.prototype.setFromPose=function(t){var e,i,a,r,n=s(null!==(e=t.longitude)&&void 0!==e?e:this.pose.longitude),h=Math.max(-Math.PI/2+.01,Math.min(Math.PI/2-.01,null!==(i=t.latitude)&&void 0!==i?i:this.pose.latitude)),p=null!==(a=t.fov)&&void 0!==a?a:this.pose.fov,u=null!==(r=t.offset)&&void 0!==r?r:this.pose.offset;this.position.copy(u);var l=Math.abs(Math.cos(h)),f=new o.Vector3(-Math.sin(n)*l,-Math.sin(h),-Math.cos(n)*l);this.lookAt(u.clone().add(f)),this.fov!==p&&(this.fov=p,this.updateProjectionMatrix()),this.updateMatrixWorld(),this.pose.longitude=n,this.pose.latitude=h,this.pose.fov=p,this.pose.offset.copy(u)},i.prototype.copyPose=function(){return{longitude:this.pose.longitude,latitude:this.pose.latitude,fov:this.pose.fov,offset:this.pose.offset.clone()}},i}(o.PerspectiveCamera);exports.Camera=i;
@@ -1,6 +0,0 @@
1
- import * as THREE from "three";
2
- declare class HashCubeTexture extends THREE.CubeTexture {
3
- /** 识别哈希 */
4
- hash: string;
5
- }
6
- export { HashCubeTexture };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.HashCubeTexture=void 0;var e=require("tslib"),r=e.__importStar(require("three")),t=require("../utils/uuid"),u=function(r){function u(){var e=null!==r&&r.apply(this,arguments)||this;return e.hash=t.uuid(),e}return e.__extends(u,r),u}(r.CubeTexture);exports.HashCubeTexture=u;
@@ -1,11 +0,0 @@
1
- import * as THREE from "three";
2
- declare class InternalWebGLRenderer extends THREE.WebGLRenderer {
3
- constructor({ preserveDrawingBuffer, backgroundColor, backgroundAlpha, pixelRatio, antialias }: {
4
- preserveDrawingBuffer?: boolean;
5
- backgroundColor?: number | THREE.Color;
6
- backgroundAlpha?: number;
7
- pixelRatio?: number;
8
- antialias?: boolean;
9
- });
10
- }
11
- export { InternalWebGLRenderer };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.InternalWebGLRenderer=void 0;var e=require("tslib"),r=function(r){function t(e){var t=e.preserveDrawingBuffer,i=void 0===t||t,a=e.backgroundColor,o=void 0===a?1579548:a,n=e.backgroundAlpha,l=void 0===n?1:n,s=e.pixelRatio,d=void 0===s?1:s,u=e.antialias,v=void 0!==u&&u,p=r.call(this,{antialias:v,preserveDrawingBuffer:i,alpha:l<1})||this;return p.setPixelRatio(d),p.setClearColor(o,l),p.autoClear=!0,p}return e.__extends(t,r),t}(e.__importStar(require("three")).WebGLRenderer);exports.InternalWebGLRenderer=r;
@@ -1,22 +0,0 @@
1
- import * as THREE from "three";
2
- import { PBMParameters } from "./PBMParameters";
3
- /** PBM 模型组 */
4
- declare class PBMGroup extends THREE.Group {
5
- /** 楼层序号 */
6
- floorIndex: number;
7
- /** 是否需要更新按需渲染 */
8
- needsRender: boolean;
9
- /** 获取是否有透明参数 */
10
- getTransparent(): boolean;
11
- /** 设置透明参数 */
12
- setTransparent(bool: boolean): void;
13
- /** 获取材质参数 */
14
- getMaterial(): PBMParameters | null;
15
- /** 设置材质参数 */
16
- setMaterial(parameters: Partial<PBMParameters>): void;
17
- /** 析构材质 */
18
- disposeMaterial(): void;
19
- /** 析构模型网格 */
20
- disposeGeometry(): void;
21
- }
22
- export { PBMGroup };
package/core/pbmGroup.js DELETED
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PBMGroup=void 0;var o=require("tslib"),a=o.__importStar(require("three")),p=require("./pbmMesh"),e=function(a){function e(){var o=null!==a&&a.apply(this,arguments)||this;return o.floorIndex=0,o.needsRender=!0,o}return o.__extends(e,a),e.prototype.getTransparent=function(){var o;return this.traverse((function(a){void 0===o&&a instanceof p.PBMMesh&&a.material.forEach((function(a){void 0===o&&1===a.uniforms.originOpacity.value&&(o=a.transparent)}))})),null!=o&&o},e.prototype.setTransparent=function(o){this.traverse((function(a){a instanceof p.PBMMesh&&a.material.forEach((function(a){1===a.uniforms.originOpacity.value&&(a.transparent=o)}))}))},e.prototype.getMaterial=function(){var o=null;return this.traverse((function(a){if(null===o&&a instanceof p.PBMMesh){var e=a.material[0];o={pano0Map:e.pano0Map,pano0Matrix:e.pano0Matrix,pano1Map:e.pano1Map,pano1Matrix:e.pano1Matrix,modelAlpha:e.modelAlpha,progress:e.progress,useBlackTransition:e.useBlackTransition,perspToOrtho:e.perspToOrtho,opacity:e.opacity,pano0DepthMap:e.pano0DepthMap,panoVideoMap:e.panoVideoMap,panoVideoSize:e.panoVideoSize,panoVideoMatrix:e.panoVideoMatrix,panoVideoAlpha:e.panoVideoAlpha,panoTileMap:e.panoTileMap,panoTileMappings:e.panoTileMappings}}})),o},e.prototype.setMaterial=function(o){this.traverse((function(a){a instanceof p.PBMMesh&&a.material.forEach((function(a){void 0!==o.pano0Map&&(a.pano0Map=o.pano0Map),void 0!==o.pano0Matrix&&(a.pano0Matrix=o.pano0Matrix),void 0!==o.pano1Map&&(a.pano1Map=o.pano1Map),void 0!==o.pano1Matrix&&(a.pano1Matrix=o.pano1Matrix),void 0!==o.modelAlpha&&(a.modelAlpha=o.modelAlpha),void 0!==o.progress&&(a.progress=o.progress),void 0!==o.useBlackTransition&&(a.useBlackTransition=o.useBlackTransition),void 0!==o.perspToOrtho&&(a.perspToOrtho=o.perspToOrtho),void 0!==o.opacity&&(a.opacity=o.opacity),void 0!==o.pano0DepthMap&&(a.pano0DepthMap=o.pano0DepthMap),void 0!==o.panoVideoMap&&(a.panoVideoMap=o.panoVideoMap),void 0!==o.panoVideoSize&&(a.panoVideoSize=o.panoVideoSize),void 0!==o.panoVideoMatrix&&(a.panoVideoMatrix=o.panoVideoMatrix),void 0!==o.panoVideoAlpha&&(a.panoVideoAlpha=o.panoVideoAlpha),void 0!==o.panoTileMap&&(a.panoTileMap=o.panoTileMap),void 0!==o.panoTileMappings&&(a.panoTileMappings=o.panoTileMappings)}))}))},e.prototype.disposeMaterial=function(){this.traverse((function(o){if(o instanceof p.PBMMesh){var a=[];o.material.forEach((function(o){var p=o.uniforms;Object.keys(p).map((function(o){if(["pano0Map","pano1Map","pano0DepthMap","panoVideoMap","panoTileMap"].indexOf(o)>=0)p[o].value=null;else{var e=p[o].value;e&&"function"==typeof e.dispose&&-1===a.indexOf(e)&&(p[o].value=null,a.push(e))}})),o.dispose()})),a.forEach((function(o){return o.dispose()}))}}))},e.prototype.disposeGeometry=function(){this.traverse((function(o){o instanceof p.PBMMesh&&o.geometry.dispose()}))},e}(a.Group);exports.PBMGroup=e;
@@ -1,39 +0,0 @@
1
- import * as THREE from "three";
2
- import { PBMParameters } from "./pbmParameters";
3
- import { HashCubeTexture as CubeTexture } from "./cubeTexture";
4
- /** PBM 材质 */
5
- declare class PBMMaterial extends THREE.ShaderMaterial implements PBMParameters {
6
- /** 起始点位全景图 */
7
- pano0Map: CubeTexture | null;
8
- /** 起始点全景图变换矩阵 4x4 */
9
- pano0Matrix: THREE.Matrix4;
10
- /** 结束点位全景图 */
11
- pano1Map: CubeTexture | null;
12
- /** 结束点全景图变换矩阵 4x4 */
13
- pano1Matrix: THREE.Matrix4;
14
- /** 模型贴图和全景图的混合程度 [0-1] */
15
- modelAlpha: number;
16
- /** 全景图混合程度 [0-1] */
17
- progress: number;
18
- /** 全景图通过过度黑色混合 */
19
- useBlackTransition: boolean;
20
- perspToOrtho: number;
21
- /** 模型透明度 */
22
- opacity: number;
23
- /** 起始点位深度, 需要使用深度参与计算全景图混合的话 */
24
- pano0DepthMap: THREE.CubeTexture | null;
25
- /** 全景视频贴图 */
26
- panoVideoMap: THREE.VideoTexture | null;
27
- /** 全景视频尺寸 */
28
- panoVideoSize: THREE.Vector2;
29
- /** 全景视频贴图变换矩阵 */
30
- panoVideoMatrix: THREE.Matrix4;
31
- /** 全景视频透明度 [0-1] */
32
- panoVideoAlpha: number;
33
- /** 瓦片材质 */
34
- panoTileMap: THREE.Texture | null;
35
- /** 瓦片寻址规则 */
36
- panoTileMappings: THREE.Vector4[][] | null;
37
- constructor(parameters?: Partial<PBMParameters>);
38
- }
39
- export { PBMMaterial };