@realsee/five-webgpu 1.0.0-alpha.5 → 1.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/ai_guides/api.md +9 -8
  2. package/ai_guides/features/camera-animation.md +1 -1
  3. package/ai_guides/features/event.md +0 -1
  4. package/ai_guides/features/five.md +8 -8
  5. package/ai_guides/features/gesture.md +1 -1
  6. package/ai_guides/features/load-external-model.md +6 -6
  7. package/ai_guides/features/load-progress.md +2 -2
  8. package/ai_guides/features/mode.md +3 -23
  9. package/ai_guides/features/model.md +1 -1
  10. package/ai_guides/features/state.md +2 -2
  11. package/ai_guides/features/ultra-hdr.md +41 -32
  12. package/ai_guides/quick-start.md +2 -2
  13. package/ai_guides/release_notes/6.8.md +2 -2
  14. package/ai_guides/support.md +0 -4
  15. package/docs/assets/hierarchy.js +1 -1
  16. package/docs/assets/navigation.js +1 -1
  17. package/docs/assets/search.js +1 -1
  18. package/docs/classes/index.AdaptiveLuminancePass.html +1 -1
  19. package/docs/classes/index.BoundingMesh.html +1 -1
  20. package/docs/classes/index.EffectComposer.html +1 -1
  21. package/docs/classes/index.EyeDomeLightingPass.html +1 -1
  22. package/docs/classes/index.Five.html +68 -67
  23. package/docs/classes/index.FivePass.html +1 -1
  24. package/docs/classes/index.FlowingFireworks3DPass.html +1 -1
  25. package/docs/classes/index.FlowingLight2DPass.html +1 -1
  26. package/docs/classes/index.FlowingLight3DPass.html +1 -1
  27. package/docs/classes/index.GaussianBlurPass.html +1 -1
  28. package/docs/classes/index.InternalWebGPURenderer.html +4 -4
  29. package/docs/classes/index.Model.html +1 -1
  30. package/docs/classes/index.ModelScene.html +1 -1
  31. package/docs/classes/index.NetworkSubscribe.html +1 -1
  32. package/docs/classes/index.PBMCustomNode.html +8 -8
  33. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +8 -6
  34. package/docs/classes/index.PBMGaussianSplattingObject.html +10 -4
  35. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +26 -15
  36. package/docs/classes/index.PBMGroup.html +1 -1
  37. package/docs/classes/index.PBMMesh.html +1 -1
  38. package/docs/classes/index.PBMMeshBasicMaterial.html +11 -7
  39. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +11 -7
  40. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +11 -7
  41. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +11 -7
  42. package/docs/classes/index.PBMMeshPhongMaterial.html +11 -7
  43. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +11 -7
  44. package/docs/classes/index.PBMMeshPhysicalMaterial.html +11 -7
  45. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +11 -7
  46. package/docs/classes/index.PBMPanoFilter.html +8 -8
  47. package/docs/classes/index.PBMPointCloud.html +1 -1
  48. package/docs/classes/index.PBMSkinnedMesh.html +1 -1
  49. package/docs/classes/index.PBMUpdateable.html +1 -1
  50. package/docs/classes/index.PanoCircleMesh.html +1 -1
  51. package/docs/classes/index.PanoCircleMeshCustom.html +5 -5
  52. package/docs/classes/index.PanoCircleMeshSolid.html +1 -1
  53. package/docs/classes/index.Parameter.html +1 -1
  54. package/docs/classes/index.Subscribe.html +1 -1
  55. package/docs/classes/index.TextureLoader.html +4 -1
  56. package/docs/classes/index.Tile3D.html +23 -21
  57. package/docs/classes/index.TileNode.html +1 -1
  58. package/docs/classes/index.Tileset.html +4 -4
  59. package/docs/classes/index.TrajectoryNode.html +3 -3
  60. package/docs/classes/index.Work.html +20 -18
  61. package/docs/classes/index.WorkResolvedObserver.html +22 -22
  62. package/docs/documents/api.html +11 -10
  63. package/docs/documents/features_camera-animation.html +1 -1
  64. package/docs/documents/features_event.html +0 -1
  65. package/docs/documents/features_five.html +7 -7
  66. package/docs/documents/features_gesture.html +1 -1
  67. package/docs/documents/features_load-external-model.html +6 -6
  68. package/docs/documents/features_load-progress.html +1 -1
  69. package/docs/documents/features_mode.html +5 -15
  70. package/docs/documents/features_model.html +1 -1
  71. package/docs/documents/features_state.html +1 -1
  72. package/docs/documents/features_ultra-hdr.html +50 -44
  73. package/docs/documents/quick-start.html +1 -1
  74. package/docs/documents/release_notes_6.8.html +2 -2
  75. package/docs/documents/support.html +1 -3
  76. package/docs/functions/index.customNodesCacheKey.html +1 -1
  77. package/docs/functions/index.parseWork.html +1 -1
  78. package/docs/functions/index.workToJson.html +1 -1
  79. package/docs/hierarchy.html +1 -1
  80. package/docs/interfaces/index.AddableObject.html +1 -1
  81. package/docs/interfaces/index.AjaxOptions.html +1 -1
  82. package/docs/interfaces/index.BaseEvent.html +2 -2
  83. package/docs/interfaces/index.Clock.html +24 -0
  84. package/docs/interfaces/index.EventCallback.html +49 -47
  85. package/docs/interfaces/index.FiveInitArgs.html +49 -40
  86. package/docs/interfaces/index.GainmapCfgData.html +15 -0
  87. package/docs/interfaces/index.GestureEvent.html +2 -2
  88. package/docs/interfaces/index.IPBMMaterial.html +10 -6
  89. package/docs/interfaces/index.ImageOptions.html +1 -1
  90. package/docs/interfaces/index.IntersectEvent.html +2 -2
  91. package/docs/interfaces/index.IntersectMesh.html +1 -1
  92. package/docs/interfaces/index.IntersectMeshInterface.html +1 -1
  93. package/docs/interfaces/index.Intersection.html +1 -1
  94. package/docs/interfaces/index.LoosePanoWork.html +2 -2
  95. package/docs/interfaces/index.LooseWork.html +2 -2
  96. package/docs/interfaces/index.LooseWorkInitial.html +2 -2
  97. package/docs/interfaces/index.LooseWorkModel.html +2 -2
  98. package/docs/interfaces/index.LooseWorkObserver.html +2 -2
  99. package/docs/interfaces/index.LooseWorkPanorama.html +4 -3
  100. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +15 -9
  101. package/docs/interfaces/index.ModeChangeEvent.html +2 -2
  102. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +1 -1
  103. package/docs/interfaces/index.ModelEvent.html +2 -2
  104. package/docs/interfaces/index.ModelSceneEvent.html +2 -2
  105. package/docs/interfaces/index.ModelTileEvent.html +2 -2
  106. package/docs/interfaces/index.MovePanoOptions.html +1 -1
  107. package/docs/interfaces/index.NetworkAbortError.html +1 -1
  108. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -1
  109. package/docs/interfaces/index.NetworkOptions.html +1 -1
  110. package/docs/interfaces/index.NetworkProxyError.html +1 -1
  111. package/docs/interfaces/index.NetworkResourceEvent.html +2 -2
  112. package/docs/interfaces/index.NetworkResponseError.html +1 -1
  113. package/docs/interfaces/index.NetworkTimeoutError.html +1 -1
  114. package/docs/interfaces/index.ObjectEvent.html +2 -2
  115. package/docs/interfaces/index.PBMClipperParameter.html +2 -2
  116. package/docs/interfaces/index.PBMCustomNodeContext.html +60 -12
  117. package/docs/interfaces/index.PBMCustomNodeOptions.html +4 -4
  118. package/docs/interfaces/index.PBMCustomNodePanoContext.html +12 -5
  119. package/docs/interfaces/index.PBMCustomNodeSlots.html +6 -6
  120. package/docs/interfaces/index.PBMPanoDepth.html +5 -5
  121. package/docs/interfaces/index.PBMPanoFilterValue.html +2 -2
  122. package/docs/interfaces/index.PBMPanoGainmap.html +6 -0
  123. package/docs/interfaces/index.PBMPanoPicture.html +9 -8
  124. package/docs/interfaces/index.PBMRefinedScreen.html +2 -2
  125. package/docs/interfaces/index.PanoCircleMeshCustomOptions.html +2 -2
  126. package/docs/interfaces/index.PanoCircleMeshInterface.html +1 -1
  127. package/docs/interfaces/index.PanoEvent.html +2 -2
  128. package/docs/interfaces/index.PanoTextureEvent.html +2 -2
  129. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +9 -9
  130. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +1 -1
  131. package/docs/interfaces/index.ParameterMaterialValue.html +1 -1
  132. package/docs/interfaces/index.ParameterTilesetValue.html +1 -1
  133. package/docs/interfaces/index.ParameterValue.html +1 -1
  134. package/docs/interfaces/index.Pose.html +1 -1
  135. package/docs/interfaces/index.RenderEvent.html +2 -2
  136. package/docs/interfaces/index.ResolvedParameterValue.html +1 -1
  137. package/docs/interfaces/index.State.html +1 -1
  138. package/docs/interfaces/index.StateEvent.html +2 -2
  139. package/docs/interfaces/index.TextureOptions.html +1 -1
  140. package/docs/interfaces/index.TilesetOptions.html +7 -2
  141. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +1 -1
  142. package/docs/interfaces/index.VRPanoramaControllerCustomInitArgs.html +37 -0
  143. package/docs/interfaces/index.ViewLayer.html +23 -21
  144. package/docs/interfaces/index.WorkCubeHdrGainmapImage.html +10 -0
  145. package/docs/interfaces/index.WorkCubeImage.html +5 -9
  146. package/docs/interfaces/index.WorkImage.html +8 -12
  147. package/docs/interfaces/index.WorkInitial.html +8 -8
  148. package/docs/interfaces/index.WorkModel.html +8 -8
  149. package/docs/interfaces/index.WorkModelLayer.html +6 -6
  150. package/docs/interfaces/index.WorkObserver.html +23 -23
  151. package/docs/interfaces/index.WorkPanoramaJson.html +3 -2
  152. package/docs/interfaces/index.WorkTile.html +8 -12
  153. package/docs/interfaces/index.WorksEvent.html +2 -2
  154. package/docs/interfaces/index.XRControllerEvent.html +2 -2
  155. package/docs/interfaces/index.XRGestureEvent.html +2 -2
  156. package/docs/interfaces/index.XRSessionEvent.html +2 -2
  157. package/docs/modules/index.html +1 -1
  158. package/docs/types/index.ControllerCustomInitTypes.html +3 -2
  159. package/docs/types/index.ControllerEventTypes.html +25 -23
  160. package/docs/types/index.EventTypes.html +26 -26
  161. package/docs/types/index.Mode.html +2 -1
  162. package/docs/types/index.ParseOptions.html +14 -8
  163. package/docs/variables/index.GSPLAT_PIPELINE_AUTO.html +2 -0
  164. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_CPU_SORT.html +2 -0
  165. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_GPU_SORT.html +2 -0
  166. package/docs/variables/index.PROXY_CONTROLLER_EVENT_NAMES.html +1 -1
  167. package/docs/variables/index.controllersDefaultInitArgs.html +1 -1
  168. package/five/application/controllers.d.ts +4 -0
  169. package/five/application/events.d.ts +1 -1
  170. package/five/application/five.d.ts +4 -1
  171. package/five/application/fiveInitArgs.d.ts +13 -0
  172. package/five/application/mode.d.ts +2 -0
  173. package/five/cardboard/helper.d.ts +2 -0
  174. package/five/cardboard/index.d.ts +13 -0
  175. package/five/cardboard/sensor.d.ts +158 -0
  176. package/five/controllers/base.d.ts +3 -0
  177. package/five/controllers/events.d.ts +5 -3
  178. package/five/controllers/panorama.d.ts +2 -2
  179. package/five/controllers/vrPanorama.d.ts +56 -0
  180. package/five/core/panoVideo.d.ts +4 -1
  181. package/five/core/tiling.d.ts +25 -11
  182. package/five/gaussian-splatting/gpu-sort/prefixSumKernel.d.ts +65 -0
  183. package/five/gaussian-splatting/gpu-sort/radixSortModule.d.ts +128 -0
  184. package/five/gaussian-splatting/gpu-sort/shaders/prefixSum.d.ts +2 -0
  185. package/five/gaussian-splatting/gpu-sort/shaders/radixHistogram.d.ts +2 -0
  186. package/five/gaussian-splatting/gpu-sort/shaders/radixReorder.d.ts +2 -0
  187. package/five/gaussian-splatting/gpu-sort/shaders/sortKeygen.d.ts +2 -0
  188. package/five/gaussian-splatting/gpu-sort/sortAdapter.d.ts +234 -0
  189. package/five/gaussian-splatting/pipelines/cpuSortPipeline.d.ts +159 -0
  190. package/five/gaussian-splatting/pipelines/gpuSortPipeline.d.ts +98 -0
  191. package/five/gaussian-splatting/pipelines/gsplatPipeline.d.ts +104 -0
  192. package/five/gaussian-splatting/pipelines/pipelineMode.d.ts +42 -0
  193. package/five/gaussian-splatting/pipelines/sortThrottle.d.ts +45 -0
  194. package/five/index.d.ts +4 -1
  195. package/five/index.js +272 -269
  196. package/five/index.mjs +6979 -4610
  197. package/five/meshes/panoCircleMeshCustom.d.ts +1 -0
  198. package/five/model/index.d.ts +1 -1
  199. package/five/model/materials/pbmGaussianSplattingNodeMaterial.d.ts +4 -0
  200. package/five/model/materials/pbmMaterial.d.ts +113 -18
  201. package/five/model/materials/tsl/defines.d.ts +6 -1
  202. package/five/model/materials/tsl/outputBuilder.d.ts +1 -12
  203. package/five/model/materials/tsl/panoColor.d.ts +8 -2
  204. package/five/model/materials/tsl/utils.d.ts +13 -0
  205. package/five/model/objects/pbmGaussianSplattingObject.d.ts +9 -0
  206. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +67 -101
  207. package/five/model/tile3d/index.d.ts +2 -0
  208. package/five/model/tile3d/tileset.d.ts +5 -0
  209. package/five/model/tile3d/trajectory-content.d.ts +53 -0
  210. package/five/texture/loader.d.ts +6 -0
  211. package/five/types/cube.d.ts +0 -1
  212. package/five/utils/detector.d.ts +11 -1
  213. package/five/utils/error.d.ts +1 -0
  214. package/five/utils/event.d.ts +17 -1
  215. package/five/utils/gainmap-data.d.ts +23 -0
  216. package/five/work/index.d.ts +1 -1
  217. package/five/work/looseWorkType.d.ts +2 -1
  218. package/five/work/work.d.ts +30 -7
  219. package/five/work/workJsonType.d.ts +2 -1
  220. package/gltf-loader/gltf-object.d.ts +17 -0
  221. package/gltf-loader/index.d.ts +45 -0
  222. package/gltf-loader/index.js +255 -0
  223. package/gltf-loader/index.mjs +302 -0
  224. package/package.json +6 -1
  225. package/plugins/BackgroundPlugin/Controller.d.ts +20 -0
  226. package/plugins/BackgroundPlugin/index.d.ts +5 -0
  227. package/plugins/BackgroundPlugin/typings.d.ts +44 -0
  228. package/plugins/CSS2DPlugin/Controller.d.ts +59 -0
  229. package/plugins/CSS2DPlugin/index.d.ts +5 -0
  230. package/plugins/CSS2DPlugin/typing.d.ts +31 -0
  231. package/plugins/CSS3DPlugin/Controller.d.ts +64 -0
  232. package/plugins/CSS3DPlugin/index.d.ts +5 -0
  233. package/plugins/CSS3DPlugin/typing.d.ts +33 -0
  234. package/plugins/FloorplanPlugin/Controller.d.ts +100 -0
  235. package/plugins/FloorplanPlugin/index.d.ts +5 -0
  236. package/plugins/FloorplanPlugin/render/assets.d.ts +9 -0
  237. package/plugins/FloorplanPlugin/render/index.d.ts +35 -0
  238. package/plugins/FloorplanPlugin/render/isPointInPolygon.d.ts +5 -0
  239. package/plugins/FloorplanPlugin/render/renderFloor.d.ts +22 -0
  240. package/plugins/FloorplanPlugin/render/roomLabelVisibility.d.ts +10 -0
  241. package/plugins/FloorplanPlugin/typing.d.ts +156 -0
  242. package/plugins/FloorplanPlugin/typings/floorplanData.d.ts +112 -0
  243. package/plugins/FloorplanPlugin/typings/floorplanServerData.d.ts +78 -0
  244. package/plugins/FloorplanPlugin/typings/index.d.ts +2 -0
  245. package/plugins/FloorplanPlugin/utils/changeMode.d.ts +5 -0
  246. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.d.ts +6 -0
  247. package/plugins/FloorplanPlugin/utils/correctFiveState.d.ts +11 -0
  248. package/plugins/FloorplanPlugin/utils/equal.d.ts +9 -0
  249. package/plugins/FloorplanPlugin/utils/filter.d.ts +8 -0
  250. package/plugins/FloorplanPlugin/utils/fiveModelLoad.d.ts +6 -0
  251. package/plugins/FloorplanPlugin/utils/formatData.d.ts +6 -0
  252. package/plugins/FloorplanPlugin/utils/formatPosition.d.ts +33 -0
  253. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.d.ts +6 -0
  254. package/plugins/FloorplanPlugin/utils/getPxmm.d.ts +19 -0
  255. package/plugins/FloorplanPlugin/utils/isTruelyObject.d.ts +4 -0
  256. package/plugins/FloorplanPlugin/utils/nearlyEqual.d.ts +8 -0
  257. package/plugins/FloorplanPlugin/utils/to.d.ts +5 -0
  258. package/plugins/Object3DHelperPlugin/Controller.d.ts +99 -0
  259. package/plugins/Object3DHelperPlugin/Controllers/BaseController.d.ts +142 -0
  260. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.d.ts +16 -0
  261. package/plugins/Object3DHelperPlugin/Controllers/MoveController.d.ts +66 -0
  262. package/plugins/Object3DHelperPlugin/Controllers/RotateController.d.ts +61 -0
  263. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.d.ts +17 -0
  264. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.d.ts +97 -0
  265. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.d.ts +16 -0
  266. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.d.ts +37 -0
  267. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.d.ts +93 -0
  268. package/plugins/Object3DHelperPlugin/constant.d.ts +27 -0
  269. package/plugins/Object3DHelperPlugin/index.d.ts +6 -0
  270. package/plugins/Object3DHelperPlugin/typing.d.ts +143 -0
  271. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.d.ts +22 -0
  272. package/plugins/Object3DHelperPlugin/utils/CenterHandle.d.ts +23 -0
  273. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.d.ts +19 -0
  274. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.d.ts +5 -0
  275. package/plugins/Object3DHelperPlugin/utils/cameraHooks.d.ts +3 -0
  276. package/plugins/Object3DHelperPlugin/utils/direction.d.ts +14 -0
  277. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.d.ts +5 -0
  278. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.d.ts +8 -0
  279. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.d.ts +8 -0
  280. package/plugins/Object3DHelperPlugin/utils/solidGuide.d.ts +27 -0
  281. package/plugins/Object3DHelperPlugin/utils/tipsDom.d.ts +8 -0
  282. package/plugins/PanoAnimePlugin/Controller.d.ts +49 -0
  283. package/plugins/PanoAnimePlugin/index.d.ts +5 -0
  284. package/plugins/PanoAnimePlugin/typing.d.ts +37 -0
  285. package/plugins/index.d.ts +6 -0
  286. package/plugins/index.js +393 -3
  287. package/plugins/index.mjs +3421 -92
  288. package/plugins/thirdParty/CSS2DRenderer.d.ts +37 -0
  289. package/plugins/thirdParty/CSS3DRenderer.d.ts +45 -0
  290. package/plugins/thirdParty/OrbitControls.d.ts +78 -0
  291. package/plugins/thirdParty/domevents.d.ts +36 -0
  292. package/plugins/utils/clamp.d.ts +2 -0
  293. package/plugins/utils/uuid.d.ts +2 -0
  294. package/react/index.js +2 -2
  295. package/react/index.mjs +2 -2
  296. package/umd/five-gltf-loader.js +255 -0
  297. package/umd/five-plugins.js +461 -3
  298. package/umd/five-react.js +2 -2
  299. package/umd/five.js +350 -347
  300. package/docs/interfaces/index.PBMHDRConfig.html +0 -12
  301. package/five/gaussian-splatting/worker/dataWorker.d.ts +0 -1
  302. package/five/three-version-check.d.ts +0 -1
  303. package/five/utils/hdr-data.d.ts +0 -13
  304. package/five/utils/shaderContentFix.d.ts +0 -7
@@ -0,0 +1,33 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ import type { FloorplanBounding, FloorplanData, FloorplanPosition, FloorplanImagePosition } from '../typings';
3
+ /**
4
+ * 拼接 SVG path 的 d 属性字符串
5
+ */
6
+ export declare function pathD(points: FloorplanPosition[], options?: {
7
+ needZ?: boolean;
8
+ format?: (point: FloorplanPosition) => FloorplanPosition;
9
+ }): string;
10
+ /**
11
+ * 把户型图坐标系(原点在中心)的点转换到 SVG 坐标系(原点在左上角,y 轴向下)
12
+ */
13
+ export declare function formatFloorplanPoint({ x, y }: FloorplanPosition, bounding: FloorplanBounding): FloorplanPosition;
14
+ /**
15
+ * 三维模型坐标(米)转户型图坐标(毫米,原点在中心)
16
+ */
17
+ export declare function modelPosition2FloorplanPosition(position: {
18
+ x: number;
19
+ y: number;
20
+ z: number;
21
+ }, floorplanData: FloorplanData): FloorplanPosition;
22
+ /**
23
+ * 户型图坐标转图片相对坐标 [0,1]
24
+ */
25
+ export declare function floorplanPosition2ImagePosition(position: FloorplanPosition, floorplanData: FloorplanData): FloorplanImagePosition;
26
+ /**
27
+ * 求三维世界坐标点所在的楼层
28
+ */
29
+ export declare function getFloorIndexFromModelPosition(position: {
30
+ x: number;
31
+ y: number;
32
+ z: number;
33
+ }, five: Five): number;
@@ -0,0 +1,6 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ /**
3
+ * 根据模型整体包围盒和目标 fov/aspect,反算相机取景合适的距离
4
+ * @description 与 five 内部 FloorplanController.distanceFromModel 等价(该方法未对外导出,故在插件内重新实现)
5
+ */
6
+ export declare function getDistanceFromModel(five: Five, fov: number, aspect: number): number;
@@ -0,0 +1,19 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ import { FLOOR_PLAN_ATTACHED_TO } from '../typing';
3
+ export interface GetPxmmOption {
4
+ attachedTo?: FLOOR_PLAN_ATTACHED_TO;
5
+ }
6
+ /**
7
+ * 取指定楼层的地面高度(该楼层所有点位站立位置 y 的最大值)
8
+ * @description 若 floorIndex 超过实际最大楼层(比如查询顶层的天花板),退化为取整模型包围盒顶部
9
+ */
10
+ export declare function getFloorY(five: Five, floorIndex: number): number;
11
+ /**
12
+ * 根据吸附方式获取户型图应当吸附的世界坐标高度(y)
13
+ */
14
+ export declare function getAttachedY(five: Five, floorIndex: number, attachedTo?: FLOOR_PLAN_ATTACHED_TO): number;
15
+ /**
16
+ * 计算「每毫米对应多少像素」(用于把 3D 世界的毫米尺寸换算为户型图 DOM 的像素尺寸)
17
+ * @description 在吸附高度上取原点与 x 方向单位点,分别投影到屏幕 NDC 坐标,用横向偏移量换算比例
18
+ */
19
+ export declare function getPxmm(five: Five, container: Element, floorIndex: number, options?: GetPxmmOption): number;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * 判断是否是「纯对象」(排除数组、null、Map、Set 等)
3
+ */
4
+ export declare function isTruelyObject(value: unknown): value is Record<string, unknown>;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 判断两个数字四舍五入到 precision 位小数后是否相等
3
+ */
4
+ export declare function nearlyEqual(x: number, y: number, precision?: number): boolean;
5
+ /**
6
+ * 判断两个弧度值是否近似相等,处理 0 / 2π 边界(角度环绕)
7
+ */
8
+ export declare function nearlyEqualRad(x: number, y: number, precision?: number): boolean;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Go 风格的错误处理封装:`const [err, data] = await to(promise)`
3
+ */
4
+ export declare function to<T>(promise: Promise<T>): Promise<[null, T] | [Error, null]>;
5
+ export default to;
@@ -0,0 +1,99 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ import { BasePlugin } from '../BasePlugin';
3
+ import * as THREE from 'three/webgpu';
4
+ import type { Object3DHelperEventMap, Object3DHelperState, ObjectHelperControllers, PositionFrom } from './typing';
5
+ import type { HelperConfig, HelperOffset, Object3DHelperPluginEventMap, Object3DHelperPluginState } from './typing';
6
+ import { Subscribe } from '@realsee/five-webgpu';
7
+ export declare const PLUGIN = "Object3DHelperPlugin";
8
+ export type AddObject3DHelperConfig = {
9
+ positionFrom?: PositionFrom;
10
+ offset?: HelperOffset;
11
+ /** Helpers 的世界坐标偏移量 */
12
+ helperOffset?: THREE.Vector3;
13
+ yAxis?: THREE.Vector3 | (() => THREE.Vector3);
14
+ xAxis?: THREE.Vector3 | (() => THREE.Vector3);
15
+ zAxis?: THREE.Vector3 | (() => THREE.Vector3);
16
+ moveHelper?: HelperConfig<{
17
+ xArrowEnable?: boolean;
18
+ yArrowEnable?: boolean;
19
+ zArrowEnable?: boolean;
20
+ }>;
21
+ /** 是否展示 MoveHelper 拖拽时的坐标提示,默认 false */
22
+ moveHelperTips?: boolean;
23
+ rotateHelper?: HelperConfig<{
24
+ yzCircleEnable?: boolean;
25
+ xzCircleEnable?: boolean;
26
+ xyCircleEnable?: boolean;
27
+ angleTipsEnable?: boolean;
28
+ }>;
29
+ boundingBoxHelper?: HelperConfig;
30
+ };
31
+ export declare class Object3DHelper {
32
+ controllers: ObjectHelperControllers;
33
+ state: Object3DHelperState;
34
+ hooks: Subscribe<Object3DHelperEventMap>;
35
+ constructor(controllers?: ObjectHelperControllers);
36
+ show(options?: {
37
+ userAction?: boolean;
38
+ }): void;
39
+ hide(options?: {
40
+ userAction?: boolean;
41
+ }): void;
42
+ enable(options?: {
43
+ userAction?: boolean;
44
+ }): void;
45
+ disable(options?: {
46
+ userAction?: boolean;
47
+ }): void;
48
+ dispose(): void;
49
+ setState(state: Partial<Object3DHelperState>, _options?: {
50
+ userAction?: boolean;
51
+ }): void;
52
+ addControllers(controllers: ObjectHelperControllers): void;
53
+ initialHelperMatrix(): void;
54
+ private handleEnable;
55
+ private handleVisible;
56
+ private handleDispose;
57
+ private everyControllerDo;
58
+ }
59
+ export declare class Controller extends BasePlugin.Controller<Object3DHelperPluginState, Object3DHelperPluginEventMap & BasePlugin.EventMap<Object3DHelperPluginState, any>, any, any> {
60
+ name: string;
61
+ data?: any;
62
+ state: Object3DHelperState;
63
+ objectHelperMap: Map<THREE.Object3D, {
64
+ helper: Object3DHelper;
65
+ disposers: (() => any)[];
66
+ helperGroup: THREE.Group;
67
+ }>;
68
+ constructor(five: Five);
69
+ show(options?: {
70
+ userAction?: boolean;
71
+ }): Promise<void>;
72
+ hide(options?: {
73
+ userAction?: boolean;
74
+ }): Promise<void>;
75
+ enable(options?: {
76
+ userAction?: boolean;
77
+ }): void;
78
+ disable(options?: {
79
+ userAction?: boolean;
80
+ }): void;
81
+ dispose(): void;
82
+ load(_data: any): Promise<void>;
83
+ setState(state: Partial<Object3DHelperState>, options?: {
84
+ userAction?: boolean;
85
+ } & Record<string, any>): void;
86
+ getObject3DHelper(object3D: THREE.Object3D): {
87
+ helper: Object3DHelper;
88
+ disposers: (() => any)[];
89
+ helperGroup: THREE.Group;
90
+ } | undefined;
91
+ addObject3DHelper(object3D: THREE.Object3D, paramsConfig?: AddObject3DHelperConfig): ObjectHelperControllers | undefined;
92
+ removeObject3DHelper(object3D: THREE.Object3D): void;
93
+ private handleEnable;
94
+ private handleVisible;
95
+ private handleDispose;
96
+ private everyHelperDo;
97
+ private actionIfStateIsEnabled;
98
+ private getConfig;
99
+ }
@@ -0,0 +1,142 @@
1
+ import * as THREE from 'three/webgpu';
2
+ import { Subscribe } from '@realsee/five-webgpu';
3
+ import type { SolidGuideOptions } from '../utils/solidGuide';
4
+ import type { HelperEventMap, HelperOffset, InternalHelperEventMap, ScaleCallback } from '../typing';
5
+ import type { BaseHelper } from '../Helper/BaseHelper';
6
+ import DomEvents from '../../thirdParty/domevents';
7
+ export declare let originOpacity: {
8
+ opacity: number;
9
+ } | null;
10
+ type Config = {
11
+ offset?: HelperOffset;
12
+ yAxis?: THREE.Vector3 | (() => THREE.Vector3);
13
+ xAxis?: THREE.Vector3 | (() => THREE.Vector3);
14
+ zAxis?: THREE.Vector3 | (() => THREE.Vector3);
15
+ scaleCallback?: ScaleCallback;
16
+ /** 实线样式与行为配置(透传给 SolidGuideLine) */
17
+ solidGuide?: SolidGuideOptions;
18
+ };
19
+ export declare abstract class BaseController<T extends BaseHelper = BaseHelper, K extends THREE.Object3D = THREE.Object3D> {
20
+ originObject3D: K;
21
+ hooks: Subscribe<HelperEventMap>;
22
+ preventTapDefaultEvent: boolean;
23
+ protected internalHooks: Subscribe<InternalHelperEventMap>;
24
+ protected readonly disposers: (() => void)[];
25
+ protected helperObject3D: T;
26
+ protected camera: THREE.Camera;
27
+ protected model: THREE.Object3D;
28
+ protected scene: THREE.Object3D;
29
+ protected container: HTMLElement;
30
+ protected domEvents: DomEvents;
31
+ protected isDragging: boolean;
32
+ protected enabled: boolean;
33
+ protected name: string;
34
+ protected boundingBox?: THREE.Box3;
35
+ protected config: Config;
36
+ private onRender;
37
+ protected cameraHooks: Subscribe<{
38
+ cameraUpdate: () => any;
39
+ }>;
40
+ /** 其他控制器的引用,用于跨控制器状态检查 */
41
+ protected otherControllers?: {
42
+ moveController?: BaseController;
43
+ rotateController?: BaseController;
44
+ scaleController?: BaseController;
45
+ };
46
+ /**
47
+ * 更新其他控制器的引用
48
+ */
49
+ updateOtherControllers(otherControllers: {
50
+ moveController?: BaseController;
51
+ rotateController?: BaseController;
52
+ scaleController?: BaseController;
53
+ }): void;
54
+ /**
55
+ * 获取当前控制器的拖拽状态
56
+ */
57
+ getIsDragging(): boolean;
58
+ constructor(params: {
59
+ camera: THREE.Camera;
60
+ model: THREE.Object3D;
61
+ originObject3D: K;
62
+ helperObject3D: T;
63
+ container: HTMLElement;
64
+ domEvents: DomEvents;
65
+ scene: THREE.Object3D;
66
+ onRender?: () => void;
67
+ sharedHooks?: Subscribe<HelperEventMap>;
68
+ sharedInternalHooks?: Subscribe<InternalHelperEventMap>;
69
+ /** 其他控制器的引用,用于跨控制器状态检查 */
70
+ otherControllers?: {
71
+ moveController?: BaseController;
72
+ rotateController?: BaseController;
73
+ scaleController?: BaseController;
74
+ };
75
+ }, config?: Config);
76
+ initialHelperPosition(): void;
77
+ initialHelperQuaternion(): void;
78
+ enable(): void;
79
+ disable(): void;
80
+ show(): void;
81
+ hide(): void;
82
+ dispose(): void;
83
+ /**
84
+ * @description: applyHelperMatrix4
85
+ * @param {THREE.Matrix4} matrix position 偏移量
86
+ */
87
+ applyHelperMatrix4(matrix: THREE.Matrix4): void;
88
+ /**
89
+ * @description: applyHelperQuaternion
90
+ * @param {THREE.Quaternion} quaternion 旋转四元数
91
+ * @param {THREE.Vector3} origin 旋转中心
92
+ */
93
+ applyHelperQuaternion(quaternion: THREE.Quaternion, origin: THREE.Vector3): void;
94
+ /**
95
+ * @description: applyHelperScaleMatrix4
96
+ * @param {THREE.Matrix4} matrix 缩放矩阵
97
+ * @param {THREE.Vector3} origin 缩放中心
98
+ */
99
+ applyHelperScaleMatrix4(matrix: THREE.Matrix4, origin?: THREE.Vector3): void;
100
+ onWantsTapGesture: (raycaster: THREE.Raycaster) => false | void;
101
+ updateHelperScale: () => void;
102
+ onWantsGesture(type: 'press' | 'pan' | string, pointers: {
103
+ x: number;
104
+ y: number;
105
+ }[], final: boolean): false | void;
106
+ onIntersectionOnModelUpdate(intersection: THREE.Intersection): void;
107
+ /**
108
+ * @description: onApplyOriginObjectScale
109
+ * @param {THREE.Matrix4} params.matrix 缩放矩阵
110
+ * @param {THREE.Vector3} params.origin 缩放中心
111
+ */
112
+ protected onApplyOriginObjectScale(params: {
113
+ matrix: THREE.Matrix4;
114
+ origin?: THREE.Vector3;
115
+ }): void;
116
+ /**
117
+ * @description: onApplyOriginObjectRotate
118
+ * @param {THREE.Quaternion} params.quaternion 旋转四元数
119
+ * @param {THREE.Vector3} params.origin 旋转中心
120
+ */
121
+ protected onApplyOriginObjectRotate(params: {
122
+ quaternion: THREE.Quaternion;
123
+ origin: THREE.Vector3;
124
+ }): void;
125
+ /**
126
+ * @description: onApplyOriginObjectPosition
127
+ * @param {THREE.Matrix4} params.matrix position 偏移量
128
+ */
129
+ protected onApplyOriginObjectPosition(params: {
130
+ matrix: THREE.Matrix4;
131
+ }): void;
132
+ protected onSetOriginObjectScale(scale: THREE.Vector3): void;
133
+ protected onSetOriginObjectRotate(_quaternion: THREE.Quaternion, _origin?: THREE.Vector3): void;
134
+ protected onSetOriginObjectPosition(position: THREE.Vector3): void;
135
+ protected render(): void;
136
+ protected updateOffsetByScale(scale: THREE.Vector3): void;
137
+ protected hoverListener(object3D: THREE.Object3D | undefined | THREE.Group | (THREE.Object3D | undefined | THREE.Group)[], hoverColor?: THREE.Color | string | number, hoverOpacity?: number): () => void;
138
+ private getIntersectObject;
139
+ private getBox;
140
+ private calculateOffset;
141
+ }
142
+ export {};
@@ -0,0 +1,16 @@
1
+ import { BaseController } from './BaseController';
2
+ import type { BoundingBoxHelperAbstract } from '../Helper/BaseHelper';
3
+ import * as THREE from 'three/webgpu';
4
+ export declare class BoundingBoxController<OriginObject3D extends THREE.Object3D = THREE.Object3D> extends BaseController<BoundingBoxHelperAbstract<OriginObject3D>> {
5
+ protected name: string;
6
+ constructor(...params: ConstructorParameters<typeof BaseController<BoundingBoxHelperAbstract<OriginObject3D>>>);
7
+ protected onApplyOriginObjectRotate(params: {
8
+ quaternion: THREE.Quaternion;
9
+ origin: THREE.Vector3;
10
+ }): void;
11
+ protected onSetOriginObjectRotate(quaternion: THREE.Quaternion, origin?: THREE.Vector3): void;
12
+ /**
13
+ * 直接从 object 同步 position 和 quaternion,消除累积误差
14
+ */
15
+ private syncWithObject;
16
+ }
@@ -0,0 +1,66 @@
1
+ import { BaseController } from './BaseController';
2
+ import * as THREE from 'three/webgpu';
3
+ import type { MoveHelperAbstract } from '../Helper/BaseHelper';
4
+ export declare function rayOnLine(params: {
5
+ raycaster: THREE.Raycaster;
6
+ line: THREE.Line3;
7
+ clampToLine?: boolean;
8
+ }): THREE.Vector3;
9
+ export type UseFaceNormalInterface = {
10
+ /**
11
+ * 是否使用面的法线,默认为true
12
+ */
13
+ enable?: boolean;
14
+ /**
15
+ * 期望对齐的方向,默认为Y轴对齐Face的法向向量,即 `{ x: 0, y: 1, z: 0 }`
16
+ */
17
+ alignmentVector?: {
18
+ x?: number;
19
+ y?: number;
20
+ z?: number;
21
+ };
22
+ /**
23
+ * 修正后的face normal
24
+ */
25
+ fixedFaceNormal?: (face: THREE.Vector3) => THREE.Vector3;
26
+ } | boolean;
27
+ export declare class MoveController<T extends MoveHelperAbstract = MoveHelperAbstract> extends BaseController<T> {
28
+ get moveByMouseEnable(): boolean;
29
+ protected name: string;
30
+ private startInfo?;
31
+ /** 拖拽时用于显示方向参考的直线(与 ScaleController 一致:Line + LineBasicMaterial) */
32
+ private dragGuideLine?;
33
+ private solidGuide;
34
+ private _moveByMouse;
35
+ private mouseInfo?;
36
+ private mousedownEventListenerDisposer?;
37
+ constructor(...params: ConstructorParameters<typeof BaseController<T>>);
38
+ dispose(): void;
39
+ /**
40
+ * @description: 跟随鼠标移动
41
+ */
42
+ moveByMouse(params?: {
43
+ /** 是否使用面的法线,默认为false */
44
+ useFaceNormal: UseFaceNormalInterface;
45
+ }): void;
46
+ /**
47
+ * @description: 禁用跟随鼠标移动
48
+ */
49
+ disableMoveByMouse(): void;
50
+ onIntersectionOnModelUpdate(intersection: THREE.Intersection): void;
51
+ private handleMouseDown;
52
+ private handleMouseUp;
53
+ /**
54
+ * @description: 拖动开始,找出拖的Direction
55
+ */
56
+ private dragStart;
57
+ private dragging;
58
+ /**
59
+ * 更新直线缩放,保持视觉上的恒定大小(与 ScaleController 保持一致)
60
+ */
61
+ private updateDragGuideLineScale;
62
+ private move;
63
+ private dragEnd;
64
+ private setTipsText;
65
+ private setTipsPosition;
66
+ }
@@ -0,0 +1,61 @@
1
+ import { BaseController } from './BaseController';
2
+ import type { RotateHelperAbstract } from '../Helper/BaseHelper';
3
+ import * as THREE from 'three/webgpu';
4
+ export declare class RotateController<T extends RotateHelperAbstract = RotateHelperAbstract> extends BaseController<T> {
5
+ protected name: string;
6
+ private get rotateCenter();
7
+ private startInfo?;
8
+ private removeListener?;
9
+ private solidGuide;
10
+ private snapGuideLines;
11
+ constructor(...params: ConstructorParameters<typeof BaseController<T>>);
12
+ setRotateAngle(angle: {
13
+ x?: number;
14
+ y?: number;
15
+ z?: number;
16
+ }): void;
17
+ /**
18
+ * @description 通过改变欧拉角中的某一个值来改变旋转,但保持其他两个轴的旋转不变
19
+ * @param axis 要修改的轴 ('x' | 'y' | 'z')
20
+ * @param angle 新的角度值(度)
21
+ * @returns 新的四元数值
22
+ */
23
+ getEulerAngle(axis: 'x' | 'y' | 'z', angle: number): THREE.Quaternion;
24
+ protected onApplyOriginObjectRotate(params: {
25
+ quaternion: THREE.Quaternion;
26
+ origin: THREE.Vector3;
27
+ }): void;
28
+ protected onApplyOriginObjectScale(params: {
29
+ matrix: THREE.Matrix4;
30
+ origin?: THREE.Vector3;
31
+ }): void;
32
+ /**
33
+ * @description: 拖动开始,找出拖的Direction
34
+ */
35
+ private dragStart;
36
+ private getMatrix;
37
+ private getMatrixAngle;
38
+ private parseAngleByDirection;
39
+ private dragging;
40
+ private rotate;
41
+ private dragEnd;
42
+ private updateOtherHelpers;
43
+ private getAngleHelper;
44
+ private setAngleHelperStart;
45
+ private setAngleHelperLength;
46
+ private setTipsAngle;
47
+ private setTipsPosition;
48
+ /**
49
+ * 从 quaternion 提取绕指定轴的旋转角度
50
+ * 通过投影分解,不受万向锁影响
51
+ */
52
+ private extractAxisAngle;
53
+ /**
54
+ * 显示吸附辅助线:在旋转平面上显示两条轴线
55
+ */
56
+ private showSnapGuideLines;
57
+ /**
58
+ * 移除吸附辅助线
59
+ */
60
+ private removeSnapGuideLines;
61
+ }
@@ -0,0 +1,17 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ import type { BaseController } from './Controllers/BaseController';
3
+ import type * as THREE from 'three/webgpu';
4
+ import type { Subscribe } from '@realsee/five-webgpu';
5
+ import DomEvents from '../thirdParty/domevents';
6
+ type ControllerClass = new (...params: ConstructorParameters<typeof BaseController<any>>) => any;
7
+ declare class ControllerWrapper<HelperControllerInterface extends ControllerClass> {
8
+ helperController?: InstanceType<HelperControllerInterface>;
9
+ private five;
10
+ constructor(five: Five, donEvents: DomEvents, HelperController: HelperControllerInterface, object: THREE.Object3D, helperObject3D: InstanceType<HelperControllerInterface>['helperObject3D'], HelperControllerConfig?: any, hooks?: Subscribe<any>, internalHooks?: Subscribe<any>, helperGroup?: THREE.Object3D);
11
+ dispose(): void;
12
+ private onFiveWantsTapGesture;
13
+ private onFiveWantsGesture;
14
+ private onFiveIntersectionOnModelUpdate;
15
+ }
16
+ export { ControllerWrapper };
17
+ export { ControllerWrapper as FiveControllerWrapper };
@@ -0,0 +1,97 @@
1
+ import * as THREE from 'three/webgpu';
2
+ import type { Group, Mesh, Object3D } from 'three/webgpu';
3
+ import { Vector3 } from 'three/webgpu';
4
+ import type { Direction, PositionFrom } from '../typing';
5
+ import type { tipsDom } from '../utils/tipsDom';
6
+ export interface BaseHelperConfig {
7
+ onRender?: () => any;
8
+ /**
9
+ * @description: helper 初始位置来源
10
+ * @default 'objectPosition'
11
+ */
12
+ positionFrom?: PositionFrom;
13
+ }
14
+ export declare abstract class BaseHelper<OriginObject3D extends Object3D = Object3D> extends THREE.Object3D {
15
+ protected originObject3D: OriginObject3D;
16
+ protected onRender: () => any;
17
+ private positionFrom;
18
+ removeChildren(): this;
19
+ add(...objects: Object3D[]): this;
20
+ addIfNotExists(...objects: Object3D[]): this;
21
+ remove(...objects: Object3D[]): this;
22
+ removeFromParent(): this;
23
+ get helperObject(): Object3D;
24
+ constructor(originObject3D: OriginObject3D, config?: BaseHelperConfig);
25
+ render(): void;
26
+ enable(): void;
27
+ disable(): void;
28
+ show(): void;
29
+ hide(): void;
30
+ raycasterIntersectObject(raycaster: THREE.Raycaster, intersection?: THREE.Intersection[]): THREE.Intersection[];
31
+ initialPosition(offset?: THREE.Vector3): void;
32
+ setScaleByCamera(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera): void;
33
+ initQuaternion(config?: {
34
+ xAxis?: Vector3 | (() => Vector3);
35
+ yAxis?: Vector3 | (() => Vector3);
36
+ zAxis?: Vector3 | (() => Vector3);
37
+ }): void;
38
+ applyHelperScaleMatrix4(matrix: THREE.Matrix4, origin?: Vector3): void;
39
+ setHelperQuaternion(quaternion: THREE.Quaternion, origin?: Vector3): void;
40
+ applyHelperQuaternion(quaternion: THREE.Quaternion, origin?: Vector3): void;
41
+ dispose(): void;
42
+ }
43
+ export declare abstract class MoveHelperAbstract<OriginObject3D extends Object3D = Object3D> extends BaseHelper<OriginObject3D> {
44
+ abstract xArrow?: Object3D & {
45
+ arrow: Object3D;
46
+ line?: Object3D;
47
+ direction: Direction;
48
+ };
49
+ abstract yArrow?: Object3D & {
50
+ arrow: Object3D;
51
+ line?: Object3D;
52
+ direction: Direction;
53
+ };
54
+ abstract zArrow?: Object3D & {
55
+ arrow: Object3D;
56
+ line?: Object3D;
57
+ direction: Direction;
58
+ };
59
+ abstract centerHandle?: Object3D & {
60
+ direction: Direction;
61
+ };
62
+ abstract xyPlane?: Object3D & {
63
+ direction: Direction;
64
+ };
65
+ abstract xzPlane?: Object3D & {
66
+ direction: Direction;
67
+ };
68
+ abstract yzPlane?: Object3D & {
69
+ direction: Direction;
70
+ };
71
+ abstract moveTips?: {
72
+ element: HTMLElement;
73
+ show: () => void;
74
+ hide: () => void;
75
+ setLeftTop: (left: string, top: string) => void;
76
+ };
77
+ abstract showDraggingHelper(directions?: Direction[]): void;
78
+ abstract update(camera: THREE.Camera): void;
79
+ }
80
+ export declare abstract class BoundingBoxHelperAbstract<OriginObject3D extends Object3D = Object3D> extends BaseHelper<OriginObject3D> {
81
+ }
82
+ export type Circle = (Mesh | Group) & {
83
+ direction: Direction;
84
+ circle: Mesh;
85
+ angleSector?: Mesh & {
86
+ angleDirection: number;
87
+ baseAxes: Vector3;
88
+ };
89
+ };
90
+ export declare abstract class RotateHelperAbstract<OriginObject3D extends Object3D = Object3D> extends BaseHelper<OriginObject3D> {
91
+ abstract xCircle?: Circle;
92
+ abstract yCircle?: Circle;
93
+ abstract zCircle?: Circle;
94
+ abstract angleTips?: ReturnType<typeof tipsDom>;
95
+ abstract showDraggingHelper(directions: Direction[]): void;
96
+ abstract update(camera: THREE.Camera): void;
97
+ }
@@ -0,0 +1,16 @@
1
+ import * as THREE from 'three/webgpu';
2
+ import { BoundingBoxHelperAbstract } from './BaseHelper';
3
+ export declare class BoundingBoxHelper<T extends THREE.Object3D = THREE.Object3D> extends BoundingBoxHelperAbstract<T> {
4
+ name: string;
5
+ box: THREE.Mesh<THREE.BufferGeometry, THREE.MeshBasicMaterial>;
6
+ outline: THREE.LineSegments<THREE.BufferGeometry, THREE.LineBasicMaterial>;
7
+ private positionAttribute;
8
+ constructor(originObject: T);
9
+ initQuaternion(): void;
10
+ setHelperQuaternion(quaternion: THREE.Quaternion, origin: THREE.Vector3): void;
11
+ raycasterIntersectObject(raycaster: THREE.Raycaster, intersection: THREE.Intersection[]): THREE.Intersection[];
12
+ raycast(raycaster: THREE.Raycaster, intersects: THREE.Intersection[]): void;
13
+ update(): void;
14
+ private createOutline;
15
+ private createBox;
16
+ }
@@ -0,0 +1,37 @@
1
+ import type { Object3D } from 'three/webgpu';
2
+ import type { Direction } from '../typing';
3
+ import { MoveHelperAbstract, type BaseHelperConfig } from './BaseHelper';
4
+ import { ArrowGroup } from '../utils/ArrowGroup';
5
+ import { CenterHandle } from '../utils/CenterHandle';
6
+ import { PlaneHandle } from '../utils/PlaneHandle';
7
+ import { Camera } from '@realsee/five-webgpu';
8
+ import { tipsDom } from '../utils/tipsDom';
9
+ import * as THREE from 'three/webgpu';
10
+ export declare class MoveHelper extends MoveHelperAbstract {
11
+ name: string;
12
+ xArrow?: ArrowGroup;
13
+ yArrow?: ArrowGroup;
14
+ zArrow?: ArrowGroup;
15
+ centerHandle?: CenterHandle;
16
+ xyPlane?: PlaneHandle;
17
+ xzPlane?: PlaneHandle;
18
+ yzPlane?: PlaneHandle;
19
+ moveTips?: ReturnType<typeof tipsDom>;
20
+ private container?;
21
+ constructor(originObject3D: Object3D, config?: {
22
+ container?: HTMLElement;
23
+ xArrowEnable?: boolean;
24
+ yArrowEnable?: boolean;
25
+ zArrowEnable?: boolean;
26
+ centerHandleEnable?: boolean;
27
+ xyPlaneEnable?: boolean;
28
+ xzPlaneEnable?: boolean;
29
+ yzPlaneEnable?: boolean;
30
+ moveTipsEnable?: boolean;
31
+ } & BaseHelperConfig);
32
+ update(camera: Camera): void;
33
+ show(): void;
34
+ setScaleByCamera(camera: THREE.PerspectiveCamera | THREE.OrthographicCamera): void;
35
+ showDraggingHelper(directions: Direction[]): void;
36
+ dispose(): void;
37
+ }