@realsee/five-webgpu 1.0.0-alpha.4 → 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 (313) 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.Camera.html +1 -1
  21. package/docs/classes/index.EffectComposer.html +1 -1
  22. package/docs/classes/index.EyeDomeLightingPass.html +1 -1
  23. package/docs/classes/index.Five.html +68 -67
  24. package/docs/classes/index.FivePass.html +1 -1
  25. package/docs/classes/index.FlowingFireworks3DPass.html +1 -1
  26. package/docs/classes/index.FlowingLight2DPass.html +1 -1
  27. package/docs/classes/index.FlowingLight3DPass.html +1 -1
  28. package/docs/classes/index.GaussianBlurPass.html +1 -1
  29. package/docs/classes/index.InternalWebGPURenderer.html +14 -3
  30. package/docs/classes/index.Model.html +1 -1
  31. package/docs/classes/index.ModelScene.html +1 -1
  32. package/docs/classes/index.NetworkSubscribe.html +1 -1
  33. package/docs/classes/index.PBMCustomNode.html +57 -0
  34. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +8 -6
  35. package/docs/classes/index.PBMGaussianSplattingObject.html +10 -4
  36. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +26 -15
  37. package/docs/classes/index.PBMGroup.html +1 -1
  38. package/docs/classes/index.PBMMesh.html +1 -1
  39. package/docs/classes/index.PBMMeshBasicMaterial.html +16 -5
  40. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +28 -7
  41. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +16 -5
  42. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +28 -7
  43. package/docs/classes/index.PBMMeshPhongMaterial.html +16 -5
  44. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +28 -7
  45. package/docs/classes/index.PBMMeshPhysicalMaterial.html +16 -5
  46. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +28 -7
  47. package/docs/classes/index.PBMPanoFilter.html +8 -8
  48. package/docs/classes/index.PBMPointCloud.html +1 -1
  49. package/docs/classes/index.PBMSkinnedMesh.html +1 -1
  50. package/docs/classes/index.PBMUpdateable.html +1 -1
  51. package/docs/classes/index.PanoCircleMesh.html +1 -1
  52. package/docs/classes/index.PanoCircleMeshCustom.html +5 -5
  53. package/docs/classes/index.PanoCircleMeshSolid.html +1 -1
  54. package/docs/classes/index.Parameter.html +57 -52
  55. package/docs/classes/index.Scene.html +1 -1
  56. package/docs/classes/index.Subscribe.html +1 -1
  57. package/docs/classes/index.TextureLoader.html +4 -1
  58. package/docs/classes/index.Tile3D.html +23 -21
  59. package/docs/classes/index.TileNode.html +1 -1
  60. package/docs/classes/index.Tileset.html +4 -4
  61. package/docs/classes/index.TrajectoryNode.html +3 -3
  62. package/docs/classes/index.Work.html +20 -18
  63. package/docs/classes/index.WorkResolvedObserver.html +22 -22
  64. package/docs/documents/api.html +11 -10
  65. package/docs/documents/features_camera-animation.html +1 -1
  66. package/docs/documents/features_event.html +0 -1
  67. package/docs/documents/features_five.html +7 -7
  68. package/docs/documents/features_gesture.html +1 -1
  69. package/docs/documents/features_load-external-model.html +6 -6
  70. package/docs/documents/features_load-progress.html +1 -1
  71. package/docs/documents/features_mode.html +5 -15
  72. package/docs/documents/features_model.html +1 -1
  73. package/docs/documents/features_state.html +1 -1
  74. package/docs/documents/features_ultra-hdr.html +50 -44
  75. package/docs/documents/quick-start.html +1 -1
  76. package/docs/documents/release_notes_6.8.html +2 -2
  77. package/docs/documents/support.html +1 -3
  78. package/docs/functions/index.customNodesCacheKey.html +3 -0
  79. package/docs/functions/index.parseWork.html +1 -1
  80. package/docs/functions/index.workToJson.html +1 -1
  81. package/docs/hierarchy.html +1 -1
  82. package/docs/interfaces/index.AddableObject.html +1 -1
  83. package/docs/interfaces/index.AjaxOptions.html +1 -1
  84. package/docs/interfaces/index.BaseEvent.html +2 -2
  85. package/docs/interfaces/index.Clock.html +24 -0
  86. package/docs/interfaces/index.EventCallback.html +49 -47
  87. package/docs/interfaces/index.FiveInitArgs.html +49 -40
  88. package/docs/interfaces/index.GainmapCfgData.html +15 -0
  89. package/docs/interfaces/index.GestureEvent.html +2 -2
  90. package/docs/interfaces/index.IPBMMaterial.html +15 -4
  91. package/docs/interfaces/index.ImageOptions.html +1 -1
  92. package/docs/interfaces/index.IntersectEvent.html +2 -2
  93. package/docs/interfaces/index.IntersectMesh.html +1 -1
  94. package/docs/interfaces/index.IntersectMeshInterface.html +1 -1
  95. package/docs/interfaces/index.Intersection.html +1 -1
  96. package/docs/interfaces/index.LoosePanoWork.html +2 -2
  97. package/docs/interfaces/index.LooseWork.html +2 -2
  98. package/docs/interfaces/index.LooseWorkInitial.html +2 -2
  99. package/docs/interfaces/index.LooseWorkModel.html +2 -2
  100. package/docs/interfaces/index.LooseWorkObserver.html +2 -2
  101. package/docs/interfaces/index.LooseWorkPanorama.html +4 -3
  102. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +15 -9
  103. package/docs/interfaces/index.ModeChangeEvent.html +2 -2
  104. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +1 -1
  105. package/docs/interfaces/index.ModelEvent.html +2 -2
  106. package/docs/interfaces/index.ModelSceneEvent.html +2 -2
  107. package/docs/interfaces/index.ModelTileEvent.html +2 -2
  108. package/docs/interfaces/index.MovePanoOptions.html +1 -1
  109. package/docs/interfaces/index.NetworkAbortError.html +1 -1
  110. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -1
  111. package/docs/interfaces/index.NetworkOptions.html +1 -1
  112. package/docs/interfaces/index.NetworkProxyError.html +1 -1
  113. package/docs/interfaces/index.NetworkResourceEvent.html +2 -2
  114. package/docs/interfaces/index.NetworkResponseError.html +1 -1
  115. package/docs/interfaces/index.NetworkTimeoutError.html +1 -1
  116. package/docs/interfaces/index.ObjectEvent.html +2 -2
  117. package/docs/interfaces/index.PBMClipperParameter.html +2 -2
  118. package/docs/interfaces/index.PBMCustomNodeContext.html +87 -0
  119. package/docs/interfaces/index.PBMCustomNodeOptions.html +10 -0
  120. package/docs/interfaces/index.PBMCustomNodePanoContext.html +20 -0
  121. package/docs/interfaces/index.PBMCustomNodeSlots.html +31 -0
  122. package/docs/interfaces/index.PBMPanoDepth.html +5 -5
  123. package/docs/interfaces/index.PBMPanoFilterValue.html +2 -2
  124. package/docs/interfaces/index.PBMPanoGainmap.html +6 -0
  125. package/docs/interfaces/index.PBMPanoPicture.html +9 -8
  126. package/docs/interfaces/index.PBMRefinedScreen.html +2 -2
  127. package/docs/interfaces/index.PanoCircleMeshCustomOptions.html +2 -2
  128. package/docs/interfaces/index.PanoCircleMeshInterface.html +1 -1
  129. package/docs/interfaces/index.PanoEvent.html +2 -2
  130. package/docs/interfaces/index.PanoTextureEvent.html +2 -2
  131. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +9 -9
  132. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +1 -1
  133. package/docs/interfaces/index.ParameterMaterialValue.html +42 -37
  134. package/docs/interfaces/index.ParameterTilesetValue.html +15 -15
  135. package/docs/interfaces/index.ParameterValue.html +56 -51
  136. package/docs/interfaces/index.Pose.html +1 -1
  137. package/docs/interfaces/index.RenderEvent.html +2 -2
  138. package/docs/interfaces/index.ResolvedParameterValue.html +56 -51
  139. package/docs/interfaces/index.State.html +1 -1
  140. package/docs/interfaces/index.StateEvent.html +2 -2
  141. package/docs/interfaces/index.TextureOptions.html +1 -1
  142. package/docs/interfaces/index.TilesetOptions.html +7 -2
  143. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +1 -1
  144. package/docs/interfaces/index.VRPanoramaControllerCustomInitArgs.html +37 -0
  145. package/docs/interfaces/index.ViewLayer.html +23 -21
  146. package/docs/interfaces/index.WorkCubeHdrGainmapImage.html +10 -0
  147. package/docs/interfaces/index.WorkCubeImage.html +5 -9
  148. package/docs/interfaces/index.WorkImage.html +8 -12
  149. package/docs/interfaces/index.WorkInitial.html +8 -8
  150. package/docs/interfaces/index.WorkModel.html +8 -8
  151. package/docs/interfaces/index.WorkModelLayer.html +6 -6
  152. package/docs/interfaces/index.WorkObserver.html +23 -23
  153. package/docs/interfaces/index.WorkPanoramaJson.html +3 -2
  154. package/docs/interfaces/index.WorkTile.html +8 -12
  155. package/docs/interfaces/index.WorksEvent.html +2 -2
  156. package/docs/interfaces/index.XRControllerEvent.html +2 -2
  157. package/docs/interfaces/index.XRGestureEvent.html +2 -2
  158. package/docs/interfaces/index.XRSessionEvent.html +2 -2
  159. package/docs/modules/index.html +1 -1
  160. package/docs/types/index.ControllerCustomInitTypes.html +3 -2
  161. package/docs/types/index.ControllerEventTypes.html +25 -23
  162. package/docs/types/index.EventTypes.html +26 -26
  163. package/docs/types/index.Mode.html +2 -1
  164. package/docs/types/index.PBMCustomNodeTargetType.html +2 -0
  165. package/docs/types/index.ParseOptions.html +14 -8
  166. package/docs/variables/index.GSPLAT_PIPELINE_AUTO.html +2 -0
  167. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_CPU_SORT.html +2 -0
  168. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_GPU_SORT.html +2 -0
  169. package/docs/variables/index.PROXY_CONTROLLER_EVENT_NAMES.html +1 -1
  170. package/docs/variables/index.controllersDefaultInitArgs.html +1 -1
  171. package/five/application/controllers.d.ts +4 -0
  172. package/five/application/events.d.ts +1 -1
  173. package/five/application/five.d.ts +4 -1
  174. package/five/application/fiveInitArgs.d.ts +13 -0
  175. package/five/application/mode.d.ts +2 -0
  176. package/five/cardboard/helper.d.ts +2 -0
  177. package/five/cardboard/index.d.ts +13 -0
  178. package/five/cardboard/sensor.d.ts +158 -0
  179. package/five/controllers/base.d.ts +3 -0
  180. package/five/controllers/events.d.ts +5 -3
  181. package/five/controllers/panorama.d.ts +2 -2
  182. package/five/controllers/vrPanorama.d.ts +56 -0
  183. package/five/core/internalWebGPURenderer.d.ts +16 -0
  184. package/five/core/panoVideo.d.ts +4 -1
  185. package/five/core/tiling.d.ts +40 -9
  186. package/five/gaussian-splatting/gpu-sort/prefixSumKernel.d.ts +65 -0
  187. package/five/gaussian-splatting/gpu-sort/radixSortModule.d.ts +128 -0
  188. package/five/gaussian-splatting/gpu-sort/shaders/prefixSum.d.ts +2 -0
  189. package/five/gaussian-splatting/gpu-sort/shaders/radixHistogram.d.ts +2 -0
  190. package/five/gaussian-splatting/gpu-sort/shaders/radixReorder.d.ts +2 -0
  191. package/five/gaussian-splatting/gpu-sort/shaders/sortKeygen.d.ts +2 -0
  192. package/five/gaussian-splatting/gpu-sort/sortAdapter.d.ts +234 -0
  193. package/five/gaussian-splatting/pipelines/cpuSortPipeline.d.ts +159 -0
  194. package/five/gaussian-splatting/pipelines/gpuSortPipeline.d.ts +98 -0
  195. package/five/gaussian-splatting/pipelines/gsplatPipeline.d.ts +104 -0
  196. package/five/gaussian-splatting/pipelines/pipelineMode.d.ts +42 -0
  197. package/five/gaussian-splatting/pipelines/sortThrottle.d.ts +45 -0
  198. package/five/index.d.ts +4 -1
  199. package/five/index.js +272 -269
  200. package/five/index.mjs +7183 -4546
  201. package/five/meshes/panoCircleMeshCustom.d.ts +1 -0
  202. package/five/model/index.d.ts +1 -1
  203. package/five/model/materials/nodes/pbmMeshBasicNodeMaterial.d.ts +2 -0
  204. package/five/model/materials/nodes/pbmMeshPanoOnlyNodeMaterial.d.ts +2 -0
  205. package/five/model/materials/nodes/pbmMeshPhongNodeMaterial.d.ts +2 -0
  206. package/five/model/materials/nodes/pbmMeshPhysicalNodeMaterial.d.ts +2 -0
  207. package/five/model/materials/pbmGaussianSplattingNodeMaterial.d.ts +4 -0
  208. package/five/model/materials/pbmMaterial.d.ts +268 -5
  209. package/five/model/materials/tsl/defines.d.ts +8 -2
  210. package/five/model/materials/tsl/outputBuilder.d.ts +8 -15
  211. package/five/model/materials/tsl/panoColor.d.ts +8 -2
  212. package/five/model/materials/tsl/utils.d.ts +13 -0
  213. package/five/model/objects/pbmGaussianSplattingObject.d.ts +9 -0
  214. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +67 -101
  215. package/five/model/parameter.d.ts +13 -1
  216. package/five/model/tile3d/index.d.ts +2 -0
  217. package/five/model/tile3d/tileset.d.ts +5 -0
  218. package/five/model/tile3d/trajectory-content.d.ts +53 -0
  219. package/five/texture/loader.d.ts +6 -0
  220. package/five/types/cube.d.ts +0 -1
  221. package/five/utils/detector.d.ts +11 -1
  222. package/five/utils/error.d.ts +1 -0
  223. package/five/utils/event.d.ts +17 -1
  224. package/five/utils/gainmap-data.d.ts +23 -0
  225. package/five/work/index.d.ts +1 -1
  226. package/five/work/looseWorkType.d.ts +2 -1
  227. package/five/work/work.d.ts +30 -7
  228. package/five/work/workJsonType.d.ts +2 -1
  229. package/gltf-loader/gltf-object.d.ts +17 -0
  230. package/gltf-loader/index.d.ts +45 -0
  231. package/gltf-loader/index.js +255 -0
  232. package/gltf-loader/index.mjs +302 -0
  233. package/package.json +6 -1
  234. package/plugins/BackgroundPlugin/Controller.d.ts +20 -0
  235. package/plugins/BackgroundPlugin/index.d.ts +5 -0
  236. package/plugins/BackgroundPlugin/typings.d.ts +44 -0
  237. package/plugins/CSS2DPlugin/Controller.d.ts +59 -0
  238. package/plugins/CSS2DPlugin/index.d.ts +5 -0
  239. package/plugins/CSS2DPlugin/typing.d.ts +31 -0
  240. package/plugins/CSS3DPlugin/Controller.d.ts +64 -0
  241. package/plugins/CSS3DPlugin/index.d.ts +5 -0
  242. package/plugins/CSS3DPlugin/typing.d.ts +33 -0
  243. package/plugins/FloorplanPlugin/Controller.d.ts +100 -0
  244. package/plugins/FloorplanPlugin/index.d.ts +5 -0
  245. package/plugins/FloorplanPlugin/render/assets.d.ts +9 -0
  246. package/plugins/FloorplanPlugin/render/index.d.ts +35 -0
  247. package/plugins/FloorplanPlugin/render/isPointInPolygon.d.ts +5 -0
  248. package/plugins/FloorplanPlugin/render/renderFloor.d.ts +22 -0
  249. package/plugins/FloorplanPlugin/render/roomLabelVisibility.d.ts +10 -0
  250. package/plugins/FloorplanPlugin/typing.d.ts +156 -0
  251. package/plugins/FloorplanPlugin/typings/floorplanData.d.ts +112 -0
  252. package/plugins/FloorplanPlugin/typings/floorplanServerData.d.ts +78 -0
  253. package/plugins/FloorplanPlugin/typings/index.d.ts +2 -0
  254. package/plugins/FloorplanPlugin/utils/changeMode.d.ts +5 -0
  255. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.d.ts +6 -0
  256. package/plugins/FloorplanPlugin/utils/correctFiveState.d.ts +11 -0
  257. package/plugins/FloorplanPlugin/utils/equal.d.ts +9 -0
  258. package/plugins/FloorplanPlugin/utils/filter.d.ts +8 -0
  259. package/plugins/FloorplanPlugin/utils/fiveModelLoad.d.ts +6 -0
  260. package/plugins/FloorplanPlugin/utils/formatData.d.ts +6 -0
  261. package/plugins/FloorplanPlugin/utils/formatPosition.d.ts +33 -0
  262. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.d.ts +6 -0
  263. package/plugins/FloorplanPlugin/utils/getPxmm.d.ts +19 -0
  264. package/plugins/FloorplanPlugin/utils/isTruelyObject.d.ts +4 -0
  265. package/plugins/FloorplanPlugin/utils/nearlyEqual.d.ts +8 -0
  266. package/plugins/FloorplanPlugin/utils/to.d.ts +5 -0
  267. package/plugins/Object3DHelperPlugin/Controller.d.ts +99 -0
  268. package/plugins/Object3DHelperPlugin/Controllers/BaseController.d.ts +142 -0
  269. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.d.ts +16 -0
  270. package/plugins/Object3DHelperPlugin/Controllers/MoveController.d.ts +66 -0
  271. package/plugins/Object3DHelperPlugin/Controllers/RotateController.d.ts +61 -0
  272. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.d.ts +17 -0
  273. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.d.ts +97 -0
  274. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.d.ts +16 -0
  275. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.d.ts +37 -0
  276. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.d.ts +93 -0
  277. package/plugins/Object3DHelperPlugin/constant.d.ts +27 -0
  278. package/plugins/Object3DHelperPlugin/index.d.ts +6 -0
  279. package/plugins/Object3DHelperPlugin/typing.d.ts +143 -0
  280. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.d.ts +22 -0
  281. package/plugins/Object3DHelperPlugin/utils/CenterHandle.d.ts +23 -0
  282. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.d.ts +19 -0
  283. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.d.ts +5 -0
  284. package/plugins/Object3DHelperPlugin/utils/cameraHooks.d.ts +3 -0
  285. package/plugins/Object3DHelperPlugin/utils/direction.d.ts +14 -0
  286. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.d.ts +5 -0
  287. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.d.ts +8 -0
  288. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.d.ts +8 -0
  289. package/plugins/Object3DHelperPlugin/utils/solidGuide.d.ts +27 -0
  290. package/plugins/Object3DHelperPlugin/utils/tipsDom.d.ts +8 -0
  291. package/plugins/PanoAnimePlugin/Controller.d.ts +49 -0
  292. package/plugins/PanoAnimePlugin/index.d.ts +5 -0
  293. package/plugins/PanoAnimePlugin/typing.d.ts +37 -0
  294. package/plugins/index.d.ts +6 -0
  295. package/plugins/index.js +393 -3
  296. package/plugins/index.mjs +3421 -92
  297. package/plugins/thirdParty/CSS2DRenderer.d.ts +37 -0
  298. package/plugins/thirdParty/CSS3DRenderer.d.ts +45 -0
  299. package/plugins/thirdParty/OrbitControls.d.ts +78 -0
  300. package/plugins/thirdParty/domevents.d.ts +36 -0
  301. package/plugins/utils/clamp.d.ts +2 -0
  302. package/plugins/utils/uuid.d.ts +2 -0
  303. package/react/index.js +2 -2
  304. package/react/index.mjs +2 -2
  305. package/umd/five-gltf-loader.js +255 -0
  306. package/umd/five-plugins.js +461 -3
  307. package/umd/five-react.js +2 -2
  308. package/umd/five.js +350 -347
  309. package/docs/interfaces/index.PBMHDRConfig.html +0 -12
  310. package/five/gaussian-splatting/worker/dataWorker.d.ts +0 -1
  311. package/five/three-version-check.d.ts +0 -1
  312. package/five/utils/hdr-data.d.ts +0 -13
  313. package/five/utils/shaderContentFix.d.ts +0 -7
@@ -0,0 +1,112 @@
1
+ /**
2
+ * 户型图内部使用数据(camelCase),由 formatData 从 FloorplanServerData 转换而来
3
+ */
4
+ import type * as THREE from 'three/webgpu';
5
+ export interface FloorplanPosition {
6
+ x: number;
7
+ y: number;
8
+ }
9
+ export interface FloorplanImagePosition {
10
+ x: number;
11
+ y: number;
12
+ }
13
+ export interface FloorplanOutlineItem {
14
+ url: string;
15
+ index: number;
16
+ svgUrl?: string;
17
+ /** svg_url 拉取到的文本内容,存在时优先使用 svg 渲染线框 */
18
+ svgContent?: string;
19
+ }
20
+ export interface FloorplanEntrance {
21
+ positionInImage: FloorplanImagePosition;
22
+ northRad: number;
23
+ roomId: string;
24
+ floorIndex: number;
25
+ }
26
+ export interface FloorplanBounding {
27
+ max: FloorplanPosition;
28
+ min: FloorplanPosition;
29
+ origin: FloorplanPosition;
30
+ }
31
+ export interface FloorplanRoomLabelItem {
32
+ position: FloorplanPosition;
33
+ positionInImage: FloorplanImagePosition;
34
+ }
35
+ export interface FloorplanDimension {
36
+ width: number;
37
+ height: number;
38
+ /** 垂直方向标注箭头定位点 */
39
+ vertical?: FloorplanPosition[];
40
+ /** 水平方向标注箭头定位点 */
41
+ horizontal?: FloorplanPosition[];
42
+ }
43
+ export interface FloorplanRoomItem {
44
+ id: string;
45
+ /** 面积,单位 mm² */
46
+ size: number;
47
+ name: string;
48
+ /** 用户自定义分间别名 */
49
+ customizedName?: string;
50
+ /** 房间轮廓多边形点(户型图坐标系,原点在中心) */
51
+ path: FloorplanPosition[];
52
+ roomType: string;
53
+ /** 地板材质类型:0 纯色 / 1 瓷砖 / 2 木地板 */
54
+ floorType: number;
55
+ roomLabel: FloorplanRoomLabelItem;
56
+ observerIndexs: number[];
57
+ dimension?: FloorplanDimension;
58
+ }
59
+ export interface FloorplanRuleLabels {
60
+ top: FloorplanPosition[][];
61
+ right: FloorplanPosition[][];
62
+ bottom: FloorplanPosition[][];
63
+ left: FloorplanPosition[][];
64
+ }
65
+ export interface FloorplanFloorData {
66
+ floorName: string;
67
+ floorIndex: number;
68
+ rooms: FloorplanRoomItem[];
69
+ rules: FloorplanRuleLabels;
70
+ /** 无房间数据时,是否仍有墙线(决定是否展示缺省占位图) */
71
+ is_has_wall: boolean;
72
+ /** 家具数据,通过 loadItems 填充 */
73
+ items?: FloorplanItem[];
74
+ }
75
+ export interface FloorplanObserver {
76
+ floorIndex: number;
77
+ positionInImage: FloorplanImagePosition;
78
+ }
79
+ export interface FloorplanData {
80
+ outlines: FloorplanOutlineItem[];
81
+ floorDatas: FloorplanFloorData[];
82
+ entrance: FloorplanEntrance | null;
83
+ bounding: FloorplanBounding;
84
+ observers: FloorplanObserver[];
85
+ }
86
+ /** 家具 icon(loadItems 填充到 floorDatas[i].items) */
87
+ export interface FloorplanItem {
88
+ id: string;
89
+ positionInImage: FloorplanImagePosition;
90
+ /** 宽度,占户型图整体宽度的比例 [0,1] */
91
+ width: number;
92
+ /** 高度,占户型图整体高度的比例 [0,1] */
93
+ height: number;
94
+ src: string;
95
+ notes: string;
96
+ rotateX: number;
97
+ rotateY: number;
98
+ rotateZ: number;
99
+ }
100
+ /** 挂载到雷达图上的三维物体(3D 世界坐标) */
101
+ export interface FloorplanExtraObject3D {
102
+ id: string;
103
+ position: THREE.Vector3;
104
+ icon?: string;
105
+ }
106
+ /** 转换为户型图 2D 坐标后的三维挂件 */
107
+ export interface FloorplanExtraObject {
108
+ id: string;
109
+ floorIndex: number;
110
+ positionInImage: FloorplanImagePosition;
111
+ icon: string;
112
+ }
@@ -0,0 +1,78 @@
1
+ /**
2
+ * 户型图服务端原始数据(snake_case),与 formatData 配合转换成内部使用的 FloorplanData(camelCase)
3
+ */
4
+ export interface FloorplanServerPosition {
5
+ x: number;
6
+ y: number;
7
+ }
8
+ export interface FloorplanServerImagePosition {
9
+ x: number;
10
+ y: number;
11
+ }
12
+ export interface FloorplanServerOutlineItem {
13
+ url: string;
14
+ index: number;
15
+ svg_url?: string;
16
+ }
17
+ export interface FloorplanServerEntrance {
18
+ position_in_image: FloorplanServerImagePosition;
19
+ north_rad: number;
20
+ room_id: string;
21
+ floor_index: number;
22
+ }
23
+ export interface FloorplanServerBounding {
24
+ max: FloorplanServerPosition;
25
+ min: FloorplanServerPosition;
26
+ origin: FloorplanServerPosition;
27
+ }
28
+ export interface FloorplanServerRoomLabelItem {
29
+ position: FloorplanServerPosition;
30
+ position_in_image: FloorplanServerImagePosition;
31
+ }
32
+ export interface FloorplanServerDimension {
33
+ width: number;
34
+ height: number;
35
+ /** 垂直方向标注箭头定位点(一般为 2 个点:下端点、上端点) */
36
+ vertical?: FloorplanServerPosition[];
37
+ /** 水平方向标注箭头定位点(一般为 2 个点:左端点、右端点) */
38
+ horizontal?: FloorplanServerPosition[];
39
+ }
40
+ export interface FloorplanServerRoomItem {
41
+ id: string;
42
+ size: number;
43
+ name: string;
44
+ customized_name?: string;
45
+ path: FloorplanServerPosition[];
46
+ room_type: string;
47
+ floor_type: number;
48
+ room_label: FloorplanServerRoomLabelItem;
49
+ observer_indexs: number[];
50
+ dimension?: FloorplanServerDimension;
51
+ }
52
+ export interface FloorplanServerRuleLabels {
53
+ top: FloorplanServerPosition[][];
54
+ right: FloorplanServerPosition[][];
55
+ bottom: FloorplanServerPosition[][];
56
+ left: FloorplanServerPosition[][];
57
+ }
58
+ export interface FloorplanServerFloorData {
59
+ floor_name: string;
60
+ floor_index: number;
61
+ rooms: FloorplanServerRoomItem[];
62
+ rules: FloorplanServerRuleLabels;
63
+ is_has_wall: boolean;
64
+ }
65
+ export interface FloorplanServerObserver {
66
+ floor_index: number;
67
+ position_in_image: FloorplanServerImagePosition;
68
+ }
69
+ export interface FloorplanServerComputedData {
70
+ floor_datas: FloorplanServerFloorData[];
71
+ entrance: FloorplanServerEntrance | null;
72
+ bounding: FloorplanServerBounding;
73
+ observers: FloorplanServerObserver[];
74
+ }
75
+ export interface FloorplanServerData {
76
+ outlines: FloorplanServerOutlineItem[];
77
+ computed_data: FloorplanServerComputedData;
78
+ }
@@ -0,0 +1,2 @@
1
+ export * from './floorplanData';
2
+ export * from './floorplanServerData';
@@ -0,0 +1,5 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ /**
3
+ * 等待 five.changeMode 真正的动画结束(changeMode 返回的 Promise 只代表切换请求被接受,不代表动画播放完毕)
4
+ */
5
+ export declare function changeMode(five: Five, changeModeParams: Parameters<Five['changeMode']>): Promise<void>;
@@ -0,0 +1,6 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ /**
3
+ * 通过 CSS opacity 让 five 渲染画布(及标记了 data-infive="1" 的兄弟 DOM)淡入 / 淡出
4
+ * @description 只改 DOM 透明度,不修改模型材质,代价小、可随时中断
5
+ */
6
+ export declare function changeModelCanvasOpacity(five: Five, opacity: number, duration?: number): void;
@@ -0,0 +1,11 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ import { type ShowState } from '../typing';
3
+ /** 展示户型图所需的相机默认 fov */
4
+ export declare const FIVE_CAMERA_DEFAULT_FOV = 80;
5
+ /**
6
+ * 把当前 five 相机 / 模式状态纠正为展示户型图所需的目标状态
7
+ * @description
8
+ * - 模式不一致:调用 five.changeMode 切换模式(同时切到目标 pose)
9
+ * - 模式一致但相机状态不一致:调用 five.updateCamera 纠正相机
10
+ */
11
+ export declare function correctFiveState(five: Five, showState: ShowState, userAction?: boolean): Promise<void>;
@@ -0,0 +1,9 @@
1
+ export declare function isShallowEqual(value: unknown, other: unknown): boolean;
2
+ export declare function isDeepEqual(value: unknown, other: unknown): boolean;
3
+ /**
4
+ * 比较两个值是否相等
5
+ * @param opt.deep - 是否深比较,默认 false(浅比较)
6
+ */
7
+ export declare function equal(value: unknown, other: unknown, opt?: {
8
+ deep?: boolean;
9
+ }): boolean;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 排除指定属性名数组,返回剩余属性组成的新对象
3
+ */
4
+ export declare function omit<T extends object, K extends keyof T>(object: T, props: K[]): Omit<T, K>;
5
+ /**
6
+ * 只保留指定属性名数组,返回剩余属性组成的新对象
7
+ */
8
+ export declare function pick<T extends object, K extends keyof T>(object: T, props: K[]): Pick<T, K>;
@@ -0,0 +1,6 @@
1
+ import type { Five } from '@realsee/five-webgpu';
2
+ /** 取「当前 work」对应的 model(多 work/model 场景下按 workCode 匹配,找不到则回退到 five.model) */
3
+ export declare function getFiveModel(five: Five): import("@realsee/five-webgpu").Model;
4
+ export declare function fiveModelIsLoaded(five: Five): boolean;
5
+ /** 等待「当前 work」对应的 model 加载完成 */
6
+ export declare function waitFiveModelLoaded(five: Five): Promise<void>;
@@ -0,0 +1,6 @@
1
+ import type { FloorplanServerData, FloorplanData } from '../typings';
2
+ /**
3
+ * 把后端返回的下划线风格 FloorplanServerData 转换成驼峰风格的 FloorplanData
4
+ */
5
+ export declare function formatData(data: FloorplanServerData): Promise<FloorplanData>;
6
+ export default formatData;
@@ -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
+ }