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

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 (378) 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 +78 -9
  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/material.md +35 -8
  9. package/ai_guides/features/mode.md +26 -29
  10. package/ai_guides/features/model.md +1 -1
  11. package/ai_guides/features/state.md +2 -2
  12. package/ai_guides/features/ultra-hdr.md +41 -32
  13. package/ai_guides/quick-start.md +2 -2
  14. package/ai_guides/release_notes/6.8.md +2 -2
  15. package/ai_guides/support.md +0 -4
  16. package/docs/assets/hierarchy.js +1 -1
  17. package/docs/assets/navigation.js +1 -1
  18. package/docs/assets/search.js +1 -1
  19. package/docs/classes/index.AdaptiveLuminancePass.html +1 -1
  20. package/docs/classes/index.BoundingMesh.html +1 -1
  21. package/docs/classes/index.Camera.html +1 -1
  22. package/docs/classes/index.EffectComposer.html +1 -1
  23. package/docs/classes/index.EyeDomeLightingPass.html +1 -1
  24. package/docs/classes/index.Five.html +69 -67
  25. package/docs/classes/index.FivePass.html +1 -1
  26. package/docs/classes/index.FlowingFireworks3DPass.html +1 -1
  27. package/docs/classes/index.FlowingLight2DPass.html +1 -1
  28. package/docs/classes/index.FlowingLight3DPass.html +2 -2
  29. package/docs/classes/index.GaussianBlurPass.html +1 -1
  30. package/docs/classes/index.InternalWebGPURenderer.html +8 -5
  31. package/docs/classes/index.Model.html +1 -1
  32. package/docs/classes/index.ModelScene.html +1 -1
  33. package/docs/classes/index.NetworkSubscribe.html +1 -1
  34. package/docs/classes/index.PBMCustomNode.html +8 -8
  35. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +8 -6
  36. package/docs/classes/index.PBMGaussianSplattingObject.html +10 -4
  37. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +26 -15
  38. package/docs/classes/index.PBMGroup.html +1 -1
  39. package/docs/classes/index.PBMMesh.html +1 -1
  40. package/docs/classes/index.PBMMeshBasicMaterial.html +13 -8
  41. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +15 -10
  42. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +13 -8
  43. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +13 -8
  44. package/docs/classes/index.PBMMeshPhongMaterial.html +13 -8
  45. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +15 -10
  46. package/docs/classes/index.PBMMeshPhysicalMaterial.html +13 -8
  47. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +15 -10
  48. package/docs/classes/index.PBMPanoFilter.html +8 -8
  49. package/docs/classes/index.PBMPointCloud.html +6 -7
  50. package/docs/classes/index.PBMPointCloudMaterial.html +83 -0
  51. package/docs/classes/index.PBMSkinnedMesh.html +1 -1
  52. package/docs/classes/index.PBMUpdateable.html +1 -1
  53. package/docs/classes/index.PanoCircleMesh.html +1 -1
  54. package/docs/classes/index.PanoCircleMeshCustom.html +5 -5
  55. package/docs/classes/index.PanoCircleMeshSolid.html +1 -1
  56. package/docs/classes/index.Parameter.html +57 -56
  57. package/docs/classes/index.Scene.html +1 -1
  58. package/docs/classes/index.Subscribe.html +1 -1
  59. package/docs/classes/index.TextureLoader.html +4 -1
  60. package/docs/classes/index.Tile3D.html +23 -21
  61. package/docs/classes/index.TileNode.html +1 -1
  62. package/docs/classes/index.Tileset.html +4 -4
  63. package/docs/classes/index.TrajectoryNode.html +3 -3
  64. package/docs/classes/index.Work.html +20 -18
  65. package/docs/classes/index.WorkResolvedObserver.html +22 -22
  66. package/docs/classes/index.XRButton.html +3 -0
  67. package/docs/documents/api.html +11 -10
  68. package/docs/documents/features_camera-animation.html +1 -1
  69. package/docs/documents/features_event.html +0 -1
  70. package/docs/documents/features_five.html +51 -9
  71. package/docs/documents/features_gesture.html +1 -1
  72. package/docs/documents/features_load-external-model.html +6 -6
  73. package/docs/documents/features_load-progress.html +1 -1
  74. package/docs/documents/features_material.html +20 -9
  75. package/docs/documents/features_mode.html +28 -13
  76. package/docs/documents/features_model.html +1 -1
  77. package/docs/documents/features_state.html +1 -1
  78. package/docs/documents/features_ultra-hdr.html +50 -44
  79. package/docs/documents/quick-start.html +1 -1
  80. package/docs/documents/release_notes_6.8.html +2 -2
  81. package/docs/documents/support.html +1 -3
  82. package/docs/functions/index.customNodesCacheKey.html +1 -1
  83. package/docs/functions/index.parseWork.html +1 -1
  84. package/docs/functions/index.workToJson.html +1 -1
  85. package/docs/hierarchy.html +1 -1
  86. package/docs/interfaces/index.AddableObject.html +1 -1
  87. package/docs/interfaces/index.AjaxOptions.html +1 -1
  88. package/docs/interfaces/index.BaseEvent.html +2 -2
  89. package/docs/interfaces/index.Clock.html +24 -0
  90. package/docs/interfaces/index.DeviceProfile.html +8 -0
  91. package/docs/interfaces/index.EventCallback.html +49 -47
  92. package/docs/interfaces/index.FiveInitArgs.html +65 -41
  93. package/docs/interfaces/index.GainmapCfgData.html +15 -0
  94. package/docs/interfaces/index.GestureEvent.html +2 -2
  95. package/docs/interfaces/index.IPBMMaterial.html +12 -7
  96. package/docs/interfaces/index.ImageOptions.html +1 -1
  97. package/docs/interfaces/index.IntersectEvent.html +2 -2
  98. package/docs/interfaces/index.IntersectMesh.html +1 -1
  99. package/docs/interfaces/index.IntersectMeshInterface.html +1 -1
  100. package/docs/interfaces/index.Intersection.html +1 -1
  101. package/docs/interfaces/index.LoosePanoWork.html +2 -2
  102. package/docs/interfaces/index.LooseWork.html +2 -2
  103. package/docs/interfaces/index.LooseWorkInitial.html +2 -2
  104. package/docs/interfaces/index.LooseWorkModel.html +2 -2
  105. package/docs/interfaces/index.LooseWorkObserver.html +2 -2
  106. package/docs/interfaces/index.LooseWorkPanorama.html +4 -3
  107. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +15 -9
  108. package/docs/interfaces/index.ModeChangeEvent.html +2 -2
  109. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +1 -1
  110. package/docs/interfaces/index.ModelEvent.html +2 -2
  111. package/docs/interfaces/index.ModelSceneEvent.html +2 -2
  112. package/docs/interfaces/index.ModelTileEvent.html +2 -2
  113. package/docs/interfaces/index.MovePanoOptions.html +1 -1
  114. package/docs/interfaces/index.NetworkAbortError.html +1 -1
  115. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -1
  116. package/docs/interfaces/index.NetworkOptions.html +1 -1
  117. package/docs/interfaces/index.NetworkProxyError.html +1 -1
  118. package/docs/interfaces/index.NetworkResourceEvent.html +2 -2
  119. package/docs/interfaces/index.NetworkResponseError.html +1 -1
  120. package/docs/interfaces/index.NetworkTimeoutError.html +1 -1
  121. package/docs/interfaces/index.ObjectEvent.html +2 -2
  122. package/docs/interfaces/index.PBMClipperParameter.html +2 -2
  123. package/docs/interfaces/index.PBMCustomNodeContext.html +60 -12
  124. package/docs/interfaces/index.PBMCustomNodeOptions.html +4 -4
  125. package/docs/interfaces/index.PBMCustomNodePanoContext.html +13 -6
  126. package/docs/interfaces/index.PBMCustomNodeSlots.html +6 -6
  127. package/docs/interfaces/index.PBMGaussianSplattingNodeMaterialOptions.html +4 -0
  128. package/docs/interfaces/index.PBMPanoDepth.html +5 -5
  129. package/docs/interfaces/index.PBMPanoFilterValue.html +2 -2
  130. package/docs/interfaces/index.PBMPanoGainmap.html +6 -0
  131. package/docs/interfaces/index.PBMPanoPicture.html +9 -8
  132. package/docs/interfaces/index.PBMRefinedScreen.html +2 -2
  133. package/docs/interfaces/index.PanoCircleMeshCustomOptions.html +2 -2
  134. package/docs/interfaces/index.PanoCircleMeshInterface.html +1 -1
  135. package/docs/interfaces/index.PanoEvent.html +2 -2
  136. package/docs/interfaces/index.PanoPrepareEvent.html +15 -0
  137. package/docs/interfaces/index.PanoTextureEvent.html +2 -2
  138. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +9 -9
  139. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +1 -1
  140. package/docs/interfaces/index.ParameterMaterialValue.html +42 -41
  141. package/docs/interfaces/index.ParameterTilesetValue.html +15 -15
  142. package/docs/interfaces/index.ParameterValue.html +56 -55
  143. package/docs/interfaces/index.Pose.html +1 -1
  144. package/docs/interfaces/index.RenderEvent.html +2 -2
  145. package/docs/interfaces/index.ResolvedParameterValue.html +56 -55
  146. package/docs/interfaces/index.State.html +1 -1
  147. package/docs/interfaces/index.StateEvent.html +2 -2
  148. package/docs/interfaces/index.TextureOptions.html +1 -1
  149. package/docs/interfaces/index.TilesetOptions.html +7 -2
  150. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +1 -1
  151. package/docs/interfaces/index.VRPanoramaControllerCustomInitArgs.html +37 -0
  152. package/docs/interfaces/index.ViewLayer.html +23 -21
  153. package/docs/interfaces/index.WorkCubeHdrGainmapImage.html +10 -0
  154. package/docs/interfaces/index.WorkCubeImage.html +5 -9
  155. package/docs/interfaces/index.WorkImage.html +8 -12
  156. package/docs/interfaces/index.WorkInitial.html +8 -8
  157. package/docs/interfaces/index.WorkModel.html +8 -8
  158. package/docs/interfaces/index.WorkModelLayer.html +6 -6
  159. package/docs/interfaces/index.WorkObserver.html +23 -23
  160. package/docs/interfaces/index.WorkPanoramaJson.html +3 -2
  161. package/docs/interfaces/index.WorkTile.html +8 -12
  162. package/docs/interfaces/index.WorksEvent.html +2 -2
  163. package/docs/interfaces/index.XRControllerEvent.html +2 -2
  164. package/docs/interfaces/index.XRGestureEvent.html +2 -2
  165. package/docs/interfaces/index.XRPanoramaControllerCustomInitArgs.html +52 -0
  166. package/docs/interfaces/index.XRSessionEvent.html +2 -2
  167. package/docs/modules/index.html +1 -1
  168. package/docs/types/index.ControllerCustomInitTypes.html +4 -2
  169. package/docs/types/index.ControllerEventTypes.html +25 -23
  170. package/docs/types/index.DeviceProfileOverride.html +5 -0
  171. package/docs/types/index.EventTypes.html +26 -26
  172. package/docs/types/index.FlowingLightLineInput.html +11 -0
  173. package/docs/types/index.Mode.html +6 -3
  174. package/docs/types/index.OutputTextureDataType.html +1 -1
  175. package/docs/types/index.PBMCustomNodeTargetType.html +1 -1
  176. package/docs/types/index.ParseOptions.html +14 -8
  177. package/docs/types/index.XRMachineType.html +7 -0
  178. package/docs/variables/index.GSPLAT_PIPELINE_AUTO.html +2 -0
  179. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_CPU_SORT.html +2 -0
  180. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_GPU_SORT.html +2 -0
  181. package/docs/variables/index.PBMVertexMarkFlag.html +4 -0
  182. package/docs/variables/index.PROXY_CONTROLLER_EVENT_NAMES.html +1 -1
  183. package/docs/variables/index.controllersDefaultInitArgs.html +1 -1
  184. package/five/application/controllers.d.ts +8 -0
  185. package/five/application/events.d.ts +1 -1
  186. package/five/application/five.d.ts +6 -1
  187. package/five/application/fiveInitArgs.d.ts +32 -1
  188. package/five/application/mode.d.ts +8 -1
  189. package/five/cardboard/helper.d.ts +2 -0
  190. package/five/cardboard/index.d.ts +13 -0
  191. package/five/cardboard/sensor.d.ts +158 -0
  192. package/five/controllers/base.d.ts +3 -0
  193. package/five/controllers/events.d.ts +5 -3
  194. package/five/controllers/panorama.d.ts +2 -2
  195. package/five/controllers/vrPanorama.d.ts +56 -0
  196. package/five/controllers/xrPanorama.d.ts +506 -0
  197. package/five/core/internalWebGPURenderer.d.ts +7 -1
  198. package/five/core/panoVideo.d.ts +4 -1
  199. package/five/core/tiling.d.ts +25 -11
  200. package/five/core/webglAsyncReadFix.d.ts +25 -0
  201. package/five/gaussian-splatting/gpu-sort/prefixSumKernel.d.ts +65 -0
  202. package/five/gaussian-splatting/gpu-sort/radixSortModule.d.ts +128 -0
  203. package/five/gaussian-splatting/gpu-sort/shaders/prefixSum.d.ts +2 -0
  204. package/five/gaussian-splatting/gpu-sort/shaders/radixHistogram.d.ts +2 -0
  205. package/five/gaussian-splatting/gpu-sort/shaders/radixReorder.d.ts +2 -0
  206. package/five/gaussian-splatting/gpu-sort/shaders/sortKeygen.d.ts +2 -0
  207. package/five/gaussian-splatting/gpu-sort/sortAdapter.d.ts +234 -0
  208. package/five/gaussian-splatting/pipelines/cpuSortPipeline.d.ts +159 -0
  209. package/five/gaussian-splatting/pipelines/gpuSortPipeline.d.ts +98 -0
  210. package/five/gaussian-splatting/pipelines/gsplatPipeline.d.ts +104 -0
  211. package/five/gaussian-splatting/pipelines/pipelineMode.d.ts +42 -0
  212. package/five/gaussian-splatting/pipelines/sortThrottle.d.ts +45 -0
  213. package/five/index.d.ts +8 -2
  214. package/five/index.js +272 -269
  215. package/five/index.mjs +8389 -4487
  216. package/five/meshes/panoCircleMeshCustom.d.ts +1 -0
  217. package/five/model/index.d.ts +3 -2
  218. package/five/model/materials/pbmGaussianSplattingNodeMaterial.d.ts +4 -0
  219. package/five/model/materials/pbmMaterial.d.ts +126 -19
  220. package/five/model/materials/pbmMeshMaterial.d.ts +0 -9
  221. package/five/model/materials/pbmPointCloudNodeMaterial.d.ts +1 -1
  222. package/five/model/materials/tsl/defines.d.ts +6 -1
  223. package/five/model/materials/tsl/outputBuilder.d.ts +1 -12
  224. package/five/model/materials/tsl/panoColor.d.ts +8 -2
  225. package/five/model/materials/tsl/utils.d.ts +13 -0
  226. package/five/model/objects/pbmGaussianSplattingObject.d.ts +9 -0
  227. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +67 -101
  228. package/five/model/objects/pbmPointCloud.d.ts +0 -1
  229. package/five/model/objects/pbmPointCloudObject.d.ts +1 -1
  230. package/five/model/parameter.d.ts +5 -4
  231. package/five/model/tile3d/index.d.ts +2 -0
  232. package/five/model/tile3d/tileset.d.ts +5 -0
  233. package/five/model/tile3d/trajectory-content.d.ts +53 -0
  234. package/five/renderer/index.d.ts +1 -1
  235. package/five/renderer/postprocessing/index.d.ts +1 -1
  236. package/five/texture/loader.d.ts +6 -0
  237. package/five/types/cube.d.ts +0 -1
  238. package/five/utils/detector.d.ts +11 -1
  239. package/five/utils/error.d.ts +1 -0
  240. package/five/utils/event.d.ts +26 -3
  241. package/five/utils/gainmap-data.d.ts +23 -0
  242. package/five/webxr/XRControllerModelFactory.d.ts +55 -0
  243. package/five/webxr/buttonStateMachine.d.ts +31 -0
  244. package/five/webxr/deviceProfile.d.ts +70 -0
  245. package/five/webxr/inputSourceTracker.d.ts +59 -0
  246. package/five/webxr/referenceSpace.d.ts +60 -0
  247. package/five/webxr/renderTargetBridge.d.ts +45 -0
  248. package/five/webxr/xrButton.d.ts +4 -0
  249. package/five/webxr/xrManager.d.ts +174 -0
  250. package/five/work/index.d.ts +1 -1
  251. package/five/work/looseWorkType.d.ts +2 -1
  252. package/five/work/work.d.ts +30 -7
  253. package/five/work/workJsonType.d.ts +2 -1
  254. package/gltf-loader/gltf-object.d.ts +17 -0
  255. package/gltf-loader/index.d.ts +45 -0
  256. package/gltf-loader/index.js +255 -0
  257. package/gltf-loader/index.mjs +302 -0
  258. package/line/circle_png.d.ts +1 -0
  259. package/line/index.d.ts +49 -0
  260. package/line/index.js +255 -0
  261. package/line/index.mjs +340 -0
  262. package/package.json +30 -5
  263. package/plugins/BackgroundPlugin/Controller.d.ts +20 -0
  264. package/plugins/BackgroundPlugin/index.d.ts +5 -0
  265. package/plugins/BackgroundPlugin/typings.d.ts +44 -0
  266. package/plugins/CSS2DPlugin/Controller.d.ts +59 -0
  267. package/plugins/CSS2DPlugin/index.d.ts +5 -0
  268. package/plugins/CSS2DPlugin/typing.d.ts +31 -0
  269. package/plugins/CSS3DPlugin/Controller.d.ts +64 -0
  270. package/plugins/CSS3DPlugin/index.d.ts +5 -0
  271. package/plugins/CSS3DPlugin/typing.d.ts +33 -0
  272. package/plugins/FloorplanPlugin/Controller.d.ts +100 -0
  273. package/plugins/FloorplanPlugin/index.d.ts +6 -0
  274. package/plugins/FloorplanPlugin/render/assets.d.ts +9 -0
  275. package/plugins/FloorplanPlugin/render/index.d.ts +35 -0
  276. package/plugins/FloorplanPlugin/render/isPointInPolygon.d.ts +5 -0
  277. package/plugins/FloorplanPlugin/render/renderFloor.d.ts +22 -0
  278. package/plugins/FloorplanPlugin/render/roomLabelVisibility.d.ts +10 -0
  279. package/plugins/FloorplanPlugin/typing.d.ts +156 -0
  280. package/plugins/FloorplanPlugin/typings/floorplanData.d.ts +112 -0
  281. package/plugins/FloorplanPlugin/typings/floorplanJson.d.ts +167 -0
  282. package/plugins/FloorplanPlugin/typings/floorplanServerData.d.ts +78 -0
  283. package/plugins/FloorplanPlugin/typings/index.d.ts +3 -0
  284. package/plugins/FloorplanPlugin/utils/changeMode.d.ts +5 -0
  285. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.d.ts +6 -0
  286. package/plugins/FloorplanPlugin/utils/correctFiveState.d.ts +11 -0
  287. package/plugins/FloorplanPlugin/utils/equal.d.ts +9 -0
  288. package/plugins/FloorplanPlugin/utils/filter.d.ts +8 -0
  289. package/plugins/FloorplanPlugin/utils/fiveModelLoad.d.ts +6 -0
  290. package/plugins/FloorplanPlugin/utils/formatData.d.ts +6 -0
  291. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.d.ts +20 -0
  292. package/plugins/FloorplanPlugin/utils/formatPosition.d.ts +33 -0
  293. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.d.ts +6 -0
  294. package/plugins/FloorplanPlugin/utils/getPxmm.d.ts +19 -0
  295. package/plugins/FloorplanPlugin/utils/isTruelyObject.d.ts +4 -0
  296. package/plugins/FloorplanPlugin/utils/nearlyEqual.d.ts +8 -0
  297. package/plugins/FloorplanPlugin/utils/polylabel.d.ts +8 -0
  298. package/plugins/FloorplanPlugin/utils/to.d.ts +5 -0
  299. package/plugins/Object3DHelperPlugin/Controller.d.ts +99 -0
  300. package/plugins/Object3DHelperPlugin/Controllers/BaseController.d.ts +142 -0
  301. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.d.ts +16 -0
  302. package/plugins/Object3DHelperPlugin/Controllers/MoveController.d.ts +66 -0
  303. package/plugins/Object3DHelperPlugin/Controllers/RotateController.d.ts +61 -0
  304. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.d.ts +17 -0
  305. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.d.ts +97 -0
  306. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.d.ts +16 -0
  307. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.d.ts +37 -0
  308. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.d.ts +93 -0
  309. package/plugins/Object3DHelperPlugin/constant.d.ts +27 -0
  310. package/plugins/Object3DHelperPlugin/index.d.ts +6 -0
  311. package/plugins/Object3DHelperPlugin/typing.d.ts +143 -0
  312. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.d.ts +22 -0
  313. package/plugins/Object3DHelperPlugin/utils/CenterHandle.d.ts +23 -0
  314. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.d.ts +19 -0
  315. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.d.ts +5 -0
  316. package/plugins/Object3DHelperPlugin/utils/cameraHooks.d.ts +3 -0
  317. package/plugins/Object3DHelperPlugin/utils/direction.d.ts +14 -0
  318. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.d.ts +5 -0
  319. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.d.ts +8 -0
  320. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.d.ts +8 -0
  321. package/plugins/Object3DHelperPlugin/utils/solidGuide.d.ts +27 -0
  322. package/plugins/Object3DHelperPlugin/utils/tipsDom.d.ts +8 -0
  323. package/plugins/PanoAnimePlugin/Controller.d.ts +49 -0
  324. package/plugins/PanoAnimePlugin/index.d.ts +5 -0
  325. package/plugins/PanoAnimePlugin/typing.d.ts +37 -0
  326. package/plugins/index.d.ts +6 -0
  327. package/plugins/index.js +748 -3
  328. package/plugins/index.mjs +28761 -88
  329. package/plugins/thirdParty/CSS2DRenderer.d.ts +37 -0
  330. package/plugins/thirdParty/CSS3DRenderer.d.ts +45 -0
  331. package/plugins/thirdParty/OrbitControls.d.ts +78 -0
  332. package/plugins/thirdParty/doctorstrange-model.d.ts +92 -0
  333. package/plugins/thirdParty/domevents.d.ts +36 -0
  334. package/plugins/utils/clamp.d.ts +2 -0
  335. package/plugins/utils/uuid.d.ts +2 -0
  336. package/react/index.js +2 -2
  337. package/react/index.mjs +2 -2
  338. package/sticker/geometry.d.ts +3 -0
  339. package/sticker/index.d.ts +68 -0
  340. package/sticker/index.js +255 -0
  341. package/sticker/index.mjs +358 -0
  342. package/umd/five-gltf-loader.js +255 -0
  343. package/umd/five-line.js +322 -0
  344. package/umd/five-plugins.js +816 -3
  345. package/umd/five-react.js +2 -2
  346. package/umd/five-sticker.js +255 -0
  347. package/umd/five-vfx.js +323 -0
  348. package/umd/five.js +347 -344
  349. package/vfx/airflow/airflow.d.ts +18 -0
  350. package/vfx/common/simplex-noise.d.ts +2 -0
  351. package/vfx/frame/frame.d.ts +27 -0
  352. package/vfx/index.d.ts +7 -0
  353. package/vfx/index.js +255 -0
  354. package/vfx/index.mjs +738 -0
  355. package/vfx/particle/instance.d.ts +36 -0
  356. package/vfx/particle/particle.d.ts +119 -0
  357. package/vfx/particle/utils.d.ts +11 -0
  358. package/vfx/particle-gpu/particle.d.ts +75 -0
  359. package/vfx/particle-gpu/utils.d.ts +11 -0
  360. package/vfx/spotLight/spotLight.d.ts +15 -0
  361. package/work-downloader/components/model-3d-tile.d.ts +2 -0
  362. package/work-downloader/components/model.d.ts +3 -0
  363. package/work-downloader/components/observer.d.ts +9 -0
  364. package/work-downloader/download.d.ts +16 -0
  365. package/work-downloader/index.d.ts +2 -0
  366. package/work-downloader/index.js +255 -0
  367. package/work-downloader/index.mjs +595 -0
  368. package/work-downloader/type.d.ts +28 -0
  369. package/work-downloader/utils/download-to-file.d.ts +1 -0
  370. package/work-downloader/utils/image-processing.d.ts +7 -0
  371. package/work-downloader/utils/join-url.d.ts +2 -0
  372. package/work-downloader/utils/log.d.ts +1 -0
  373. package/work-downloader/utils/relative-url.d.ts +1 -0
  374. package/docs/interfaces/index.PBMHDRConfig.html +0 -12
  375. package/five/gaussian-splatting/worker/dataWorker.d.ts +0 -1
  376. package/five/three-version-check.d.ts +0 -1
  377. package/five/utils/hdr-data.d.ts +0 -13
  378. package/five/utils/shaderContentFix.d.ts +0 -7
@@ -12,7 +12,7 @@
12
12
  <p><strong>Definition</strong>: <a href="../../five/application/fiveInitArgs.d.ts">FiveInitArgs</a></p>
13
13
  </blockquote>
14
14
  <p><code>new Five(args)</code> 的初始化参数对象。</p>
15
- <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">FiveInitArgs</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 外部传入的渲染器 (如果传入,部分渲染配置将失效) */</span><br/><span class="hl-1"> </span><span class="hl-6">renderer</span><span class="hl-1">?: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">WebGLRenderer</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 屏幕渲染区域 { left, bottom, width, height }</span><br/><span class="hl-8"> * 必须配合外部 renderer 使用</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-6">viewport</span><span class="hl-1">?: </span><span class="hl-7">Viewport</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 背景颜色 (默认 0x181A1C) */</span><br/><span class="hl-1"> </span><span class="hl-6">backgroundColor</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1"> | </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Color</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 背景透明度 (0-1, 默认 1) */</span><br/><span class="hl-1"> </span><span class="hl-6">backgroundAlpha</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否开启抗锯齿 (默认 false) */</span><br/><span class="hl-1"> </span><span class="hl-6">antialias</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 全景图配置 (见 image-options.md) */</span><br/><span class="hl-1"> </span><span class="hl-6">imageOptions</span><span class="hl-1">?: </span><span class="hl-7">ImageOptions</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 贴图配置 (见 image-options.md) */</span><br/><span class="hl-1"> </span><span class="hl-6">textureOptions</span><span class="hl-1">?: </span><span class="hl-7">TextureOptions</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否按需渲染 (默认 true, 推荐开启以节省性能) */</span><br/><span class="hl-1"> </span><span class="hl-6">onlyRenderIfNeeds</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 模式切换动画时长 (ms, 默认 1000) */</span><br/><span class="hl-1"> </span><span class="hl-6">modeChangeDuration</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否支持滚轮缩放 (默认 true) */</span><br/><span class="hl-1"> </span><span class="hl-6">enableWheel</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 插件列表 */</span><br/><span class="hl-1"> </span><span class="hl-6">plugins</span><span class="hl-1">?: </span><span class="hl-7">FivePlugin</span><span class="hl-1">[];</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否显示 Powered by Realsee */</span><br/><span class="hl-1"> </span><span class="hl-6">poweredByRealsee</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
15
+ <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">FiveInitArgs</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 外部传入的渲染器 (如果传入,部分渲染配置将失效) */</span><br/><span class="hl-1"> </span><span class="hl-6">renderer</span><span class="hl-1">?: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">WebGPURenderer</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 屏幕渲染区域 { left, bottom, width, height }</span><br/><span class="hl-8"> * 必须配合外部 renderer 使用</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-6">viewport</span><span class="hl-1">?: </span><span class="hl-7">Viewport</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 背景颜色 (默认 0x181A1C) */</span><br/><span class="hl-1"> </span><span class="hl-6">backgroundColor</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1"> | </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Color</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 背景透明度 (0-1, 默认 1) */</span><br/><span class="hl-1"> </span><span class="hl-6">backgroundAlpha</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否开启抗锯齿 (默认 false) */</span><br/><span class="hl-1"> </span><span class="hl-6">antialias</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 全景图配置 (见 image-options.md) */</span><br/><span class="hl-1"> </span><span class="hl-6">imageOptions</span><span class="hl-1">?: </span><span class="hl-7">ImageOptions</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 贴图配置 (见 image-options.md) */</span><br/><span class="hl-1"> </span><span class="hl-6">textureOptions</span><span class="hl-1">?: </span><span class="hl-7">TextureOptions</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否按需渲染 (默认 true, 推荐开启以节省性能) */</span><br/><span class="hl-1"> </span><span class="hl-6">onlyRenderIfNeeds</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 模式切换动画时长 (ms, 默认 800) */</span><br/><span class="hl-1"> </span><span class="hl-6">modeChangeDuration</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否支持滚轮缩放 (默认 true) */</span><br/><span class="hl-1"> </span><span class="hl-6">enableWheel</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 插件列表 */</span><br/><span class="hl-1"> </span><span class="hl-6">plugins</span><span class="hl-1">?: </span><span class="hl-7">FivePlugin</span><span class="hl-1">[];</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否显示 Powered by Realsee */</span><br/><span class="hl-1"> </span><span class="hl-6">poweredByRealsee</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 强制使用 WebGL2 回落后端(默认 false)</span><br/><span class="hl-8"> * 进入 XRPanorama(WebXR 头显全景)的前置条件。</span><br/><span class="hl-8"> * 只在构造期生效,后端无法在运行时切换,设备检测必须在 new Five() 之前完成。</span><br/><span class="hl-8"> * 详见下方《forceWebGL 与 XR 回落后端》。</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-6">forceWebGL</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * </span><span class="hl-3">@deprecated</span><span class="hl-8"> 在 five-webgpu 中未接线、无效。需要 WebGL2 后端请使用 `forceWebGL`。</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-6">webgl2</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
16
16
  </code><button type="button">Copy</button></pre>
17
17
 
18
18
  <h2 id="concepts" class="tsd-anchor-link">Concepts<a href="#concepts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
@@ -25,7 +25,7 @@
25
25
  <h3 id="rendering-loop-渲染循环" class="tsd-anchor-link">Rendering Loop (渲染循环)<a href="#rendering-loop-渲染循环" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
26
26
  <p>Five 内部维护了一个 <code>requestAnimationFrame</code> 循环。</p>
27
27
  <ul>
28
- <li><strong>按需渲染</strong>: 默认开启 <code>onlyRenderIfNeeds</code>,仅在画面发生变化(如视角移动、数据加载)时才触发 WebGL 绘制,大幅降低能耗。</li>
28
+ <li><strong>按需渲染</strong>: 默认开启 <code>onlyRenderIfNeeds</code>,仅在画面发生变化(如视角移动、数据加载)时才触发渲染,大幅降低能耗。</li>
29
29
  <li><strong>手动触发</strong>: 可以通过 <code>five.needsRender = true</code> 强制下一帧进行渲染。</li>
30
30
  </ul>
31
31
  <h3 id="resource-loading-资源加载" class="tsd-anchor-link">Resource Loading (资源加载)<a href="#resource-loading-资源加载" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
@@ -72,7 +72,7 @@
72
72
  <tr>
73
73
  <td style="text-align:left"><code>modeChangeDuration</code></td>
74
74
  <td style="text-align:left"><code>number</code></td>
75
- <td style="text-align:left"><code>1000</code></td>
75
+ <td style="text-align:left"><code>800</code></td>
76
76
  <td style="text-align:left">模式切换动画时长 (ms)</td>
77
77
  </tr>
78
78
  <tr>
@@ -81,8 +81,50 @@
81
81
  <td style="text-align:left"><code>true</code></td>
82
82
  <td style="text-align:left">是否支持滚轮缩放</td>
83
83
  </tr>
84
+ <tr>
85
+ <td style="text-align:left"><code>forceWebGL</code></td>
86
+ <td style="text-align:left"><code>boolean</code></td>
87
+ <td style="text-align:left"><code>false</code></td>
88
+ <td style="text-align:left">强制使用 WebGL2 回落后端,进入 <code>XRPanorama</code> 的前置条件,详见下文</td>
89
+ </tr>
90
+ <tr>
91
+ <td style="text-align:left"><code>webgl2</code></td>
92
+ <td style="text-align:left"><code>boolean</code></td>
93
+ <td style="text-align:left">—</td>
94
+ <td style="text-align:left"><strong>已废弃</strong>,在 five-webgpu 中未接线。需要 WebGL2 请用 <code>forceWebGL</code></td>
95
+ </tr>
84
96
  </tbody>
85
97
  </table>
98
+ <h3 id="forcewebgl-与-xr-回落后端" class="tsd-anchor-link">forceWebGL 与 XR 回落后端<a href="#forcewebgl-与-xr-回落后端" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
99
+ <p><code>forceWebGL</code> 让 five-webgpu 强制走 WebGL2 回落后端,而不是默认的 WebGPU 后端。它存在的唯一原因是 <strong>进入 <code>XRPanorama</code>(WebXR 头显全景)模式</strong>:<code>three</code> 的 WebGPU 后端目前不支持 WebXR,而 WebGL2 后端下 <code>renderer.xr</code> 完整可用。</p>
100
+ <p><strong>语义与使用约束</strong></p>
101
+ <ul>
102
+ <li><strong>语义</strong>:<code>forceWebGL: true</code> 时,内部 <code>WebGPURenderer</code> 以 <code>{ forceWebGL: true }</code> 构造,使用 <code>WebGLBackend</code> 而非 WebGPU。</li>
103
+ <li><strong>必须在 <code>new Five()</code> 时决定</strong>:后端在 renderer 构造期定死,<strong>运行时无法切换</strong>。因此业务侧的「是否需要进入 XR」的设备检测必须发生在 <code>new Five()</code> 之前,不能等实例创建后再改。</li>
104
+ <li><strong>与 <code>enableHDR</code> 互斥</strong>:当 <code>forceWebGL</code> 为 <code>true</code> 时 <code>enableHDR</code> 不生效(<code>five.enableHDR</code> 会被置为 <code>false</code>),因为 XR 的 projection layer 固定 <code>colorFormat: RGBA8</code>,HDR 没有落地路径。</li>
105
+ <li><strong>传入外部 <code>renderer</code> 时不生效</strong>:如果通过 <code>renderer</code> 参数传入了外部渲染器,<code>forceWebGL</code> 不会对其生效,需由调用方自行在构造该 renderer 时设置 <code>forceWebGL</code>(与 <code>antialias</code> 等参数一致)。</li>
106
+ <li><strong><code>webgl2</code> 已废弃</strong>:遗留的 <code>webgl2</code> 参数在 five-webgpu 中未接线、无任何效果;需要 WebGL2 后端请改用 <code>forceWebGL</code>。</li>
107
+ </ul>
108
+ <p><strong>能力降级限制</strong>(开启 <code>forceWebGL</code> 后不可规避)</p>
109
+ <ol>
110
+ <li><strong>XR 下没有后处理</strong>:<code>XRPanorama</code> 模式会整体旁路 <code>FiveRenderer</code> 的后处理链路(合成 / EffectComposer 全屏 pass 均不参与),滤镜、泛光等后处理在头显中不生效。</li>
111
+ <li><strong>点云走 NodeMaterial 路径</strong>:<code>forceWebGL</code> 下点云不再走 WebGPU compute 光栅化,而是退回 NodeMaterial 渲染路径。</li>
112
+ <li><strong>3DGS 走 CPU 排序,且 VR 中性能预期需放低</strong>:<code>forceWebGL</code> 下 3DGS 只能走 CPU 排序(<code>RASTER_CPU_SORT</code>);在 XR 中还要叠加双眼渲染开销,务必对点数 / 显示做降级,不要期待与 WebGPU 后端相同的帧率。</li>
113
+ </ol>
114
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">Five</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;@realsee/five-webgpu&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 设备检测需在 new Five() 之前完成</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">needXR</span><span class="hl-1"> = </span><span class="hl-5">detectNeedXR</span><span class="hl-1">();</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">five</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-5">Five</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">forceWebGL:</span><span class="hl-1"> </span><span class="hl-6">needXR</span><span class="hl-1">, </span><span class="hl-8">// 一旦创建就无法再切换后端</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">load</span><span class="hl-1">(</span><span class="hl-6">workData</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 进入 XR(需在用户手势回调中调用,会触发 WebXR 权限请求)</span><br/><span class="hl-6">button</span><span class="hl-1">.</span><span class="hl-5">addEventListener</span><span class="hl-1">(</span><span class="hl-9">&quot;click&quot;</span><span class="hl-1">, () </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">changeMode</span><span class="hl-1">(</span><span class="hl-9">&quot;XRPanorama&quot;</span><span class="hl-1">).</span><span class="hl-5">catch</span><span class="hl-1">((</span><span class="hl-6">error</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">// 后端非 WebGL2 或浏览器不支持 WebXR 时,这里会收到含 forceWebGL 字样的中文错误</span><br/><span class="hl-1"> </span><span class="hl-6">console</span><span class="hl-1">.</span><span class="hl-5">error</span><span class="hl-1">(</span><span class="hl-6">error</span><span class="hl-1">);</span><br/><span class="hl-1"> });</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-8">// 用户摘下头显 / 退出 XR 时切回普通全景</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">on</span><span class="hl-1">(</span><span class="hl-9">&quot;xr.session.end&quot;</span><span class="hl-1">, () </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">changeMode</span><span class="hl-1">(</span><span class="hl-9">&quot;Panorama&quot;</span><span class="hl-1">));</span>
115
+ </code><button type="button">Copy</button></pre>
116
+
117
+ <p>也可以直接使用内置的 <code>XRButton</code>,样式与 API 同原始 five 保持一致(<code>XRButton.createButton(onClickHook)</code>):</p>
118
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">Five</span><span class="hl-1">, </span><span class="hl-6">XRButton</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;@realsee/five-webgpu&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">button</span><span class="hl-1"> = </span><span class="hl-6">XRButton</span><span class="hl-1">.</span><span class="hl-5">createButton</span><span class="hl-1">(() </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">changeMode</span><span class="hl-1">(</span><span class="hl-9">&quot;XRPanorama&quot;</span><span class="hl-1">));</span><br/><span class="hl-6">document</span><span class="hl-1">.</span><span class="hl-6">body</span><span class="hl-1">.</span><span class="hl-5">appendChild</span><span class="hl-1">(</span><span class="hl-6">button</span><span class="hl-1">);</span>
119
+ </code><button type="button">Copy</button></pre>
120
+
121
+ <ul>
122
+ <li>浏览器没有 <code>navigator.xr</code> 时显示 <code>WEBXR NOT AVAILABLE</code>(非 HTTPS 时显示 <code>WEBXR NEEDS HTTPS</code>),不支持 <code>immersive-vr</code> 时显示 <code>VR NOT SUPPORTED</code>。</li>
123
+ <li>回调返回 Promise 时,<code>XRButton</code> 会接住 reject。若失败原因是没有开启 <code>forceWebGL</code>(后端是 WebGPU),按钮文案会临时变为「需降级到 WebGL2」,3 秒后恢复。其他失败原因不改变按钮,错误通过 <code>five.on(&quot;error&quot;)</code> 上报。</li>
124
+ </ul>
125
+ <blockquote>
126
+ <p>更多模式说明(含 <code>XRPanorama</code> 与 <code>VRPanorama</code> 的区别)见 <a href="features_mode.html">mode.md</a>,可运行示例参见 <code>examples/xr</code>。</p>
127
+ </blockquote>
86
128
  <h2 id="examples" class="tsd-anchor-link">Examples<a href="#examples" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
87
129
  <h3 id="快速上手-quick-example" class="tsd-anchor-link">快速上手 (Quick Example)<a href="#快速上手-quick-example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
88
130
  <p>创建一个全屏的 Five 实例并加载数据。</p>
@@ -91,7 +133,7 @@
91
133
 
92
134
  <h3 id="进阶用法:自定义渲染器与视口" class="tsd-anchor-link">进阶用法:自定义渲染器与视口<a href="#进阶用法:自定义渲染器与视口" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
93
135
  <p>使用外部渲染器并指定视口区域(例如用于分屏渲染)。</p>
94
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> </span><span class="hl-3">*</span><span class="hl-1"> </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-6">THREE</span><span class="hl-1"> </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;three/webgpu&quot;</span><span class="hl-1">;</span><br/><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">Five</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;@realsee/five-webgpu&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">renderer</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-4">THREE</span><span class="hl-1">.</span><span class="hl-5">WebGLRenderer</span><span class="hl-1">();</span><br/><span class="hl-6">renderer</span><span class="hl-1">.</span><span class="hl-5">setSize</span><span class="hl-1">(</span><span class="hl-6">window</span><span class="hl-1">.</span><span class="hl-6">innerWidth</span><span class="hl-1">, </span><span class="hl-6">window</span><span class="hl-1">.</span><span class="hl-6">innerHeight</span><span class="hl-1">);</span><br/><span class="hl-6">document</span><span class="hl-1">.</span><span class="hl-6">body</span><span class="hl-1">.</span><span class="hl-5">appendChild</span><span class="hl-1">(</span><span class="hl-6">renderer</span><span class="hl-1">.</span><span class="hl-6">domElement</span><span class="hl-1">);</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">five</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-5">Five</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">renderer:</span><span class="hl-1"> </span><span class="hl-6">renderer</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">viewport:</span><span class="hl-1"> { </span><span class="hl-6">left:</span><span class="hl-1"> </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-6">bottom:</span><span class="hl-1"> </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-6">width:</span><span class="hl-1"> </span><span class="hl-11">0.5</span><span class="hl-1">, </span><span class="hl-6">height:</span><span class="hl-1"> </span><span class="hl-11">1</span><span class="hl-1"> } </span><span class="hl-8">// 仅占用左半屏</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">load</span><span class="hl-1">(</span><span class="hl-6">workData</span><span class="hl-1">);</span>
136
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> </span><span class="hl-3">*</span><span class="hl-1"> </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-6">THREE</span><span class="hl-1"> </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;three/webgpu&quot;</span><span class="hl-1">;</span><br/><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">Five</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;@realsee/five-webgpu&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">renderer</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-4">THREE</span><span class="hl-1">.</span><span class="hl-5">WebGPURenderer</span><span class="hl-1">();</span><br/><span class="hl-6">renderer</span><span class="hl-1">.</span><span class="hl-5">setSize</span><span class="hl-1">(</span><span class="hl-6">window</span><span class="hl-1">.</span><span class="hl-6">innerWidth</span><span class="hl-1">, </span><span class="hl-6">window</span><span class="hl-1">.</span><span class="hl-6">innerHeight</span><span class="hl-1">);</span><br/><span class="hl-6">document</span><span class="hl-1">.</span><span class="hl-6">body</span><span class="hl-1">.</span><span class="hl-5">appendChild</span><span class="hl-1">(</span><span class="hl-6">renderer</span><span class="hl-1">.</span><span class="hl-6">domElement</span><span class="hl-1">);</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">five</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-5">Five</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">renderer:</span><span class="hl-1"> </span><span class="hl-6">renderer</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">viewport:</span><span class="hl-1"> { </span><span class="hl-6">left:</span><span class="hl-1"> </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-6">bottom:</span><span class="hl-1"> </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-6">width:</span><span class="hl-1"> </span><span class="hl-11">0.5</span><span class="hl-1">, </span><span class="hl-6">height:</span><span class="hl-1"> </span><span class="hl-11">1</span><span class="hl-1"> } </span><span class="hl-8">// 仅占用左半屏</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">load</span><span class="hl-1">(</span><span class="hl-6">workData</span><span class="hl-1">);</span>
95
137
  </code><button type="button">Copy</button></pre>
96
138
 
97
139
  <h3 id="进阶用法:自定义相机动画" class="tsd-anchor-link">进阶用法:自定义相机动画<a href="#进阶用法:自定义相机动画" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
@@ -109,8 +151,8 @@
109
151
  <h3 id="实例方法-instance-methods" class="tsd-anchor-link">实例方法 (Instance Methods)<a href="#实例方法-instance-methods" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
110
152
  <ul>
111
153
  <li><strong><code>appendTo(element: HTMLElement)</code></strong>: 将 canvas 挂载到指定 DOM 元素。</li>
112
- <li><strong><code>load(work: Work, state?: State, duration?: number)</code></strong>: 加载场景数据。详见 <a href="features_work.html">work.md</a>。</li>
113
- <li><strong><code>dispose()</code></strong>: 销毁实例,释放 WebGL 上下文与内存。</li>
154
+ <li><strong><code>load(inputWork, state?: &quot;inherit&quot; | &quot;initial&quot; | Partial&lt;State&gt;, options?: number | FiveLoadOptions, userAction?: boolean)</code></strong>: 加载场景数据。详见 <a href="features_work.html">work.md</a>。</li>
155
+ <li><strong><code>dispose()</code></strong>: 销毁实例并释放相关渲染资源。</li>
114
156
  <li><strong><code>updateCamera(pose: Partial&lt;Pose&gt;, duration: number, userAction?: boolean)</code></strong>: 移动相机(不触发点位移动)。移动相机的视角或位置,不会改变当前所在的 PanoIndex。如果动画中途被打断,Promise 会被 reject。</li>
115
157
  <li><strong><code>updateCameraWithKeyframes(keyframes: { progress: number; value: Pose; key?: string }[], duration: number, userAction?: boolean)</code></strong>: 通过关键帧动画移动相机。</li>
116
158
  <li><strong><code>refresh()</code></strong>: 强制刷新画布尺寸。通常在窗口 resize 时调用,Five 会自动监听 resize,但在某些布局变化场景下可能需要手动调用。</li>
@@ -127,7 +169,7 @@
127
169
  </li>
128
170
  </ul>
129
171
  </li>
130
- <li><strong><code>setState(state: Partial&lt;State&gt;, options?: ChangeStateOptions)</code></strong>: 变更当前状态(如点位、视角)。详见 <a href="features_state.html">state.md</a>。</li>
172
+ <li><strong><code>setState(state: Partial&lt;State&gt;, immediately?: boolean, userAction?: boolean)</code></strong>: 变更当前状态(如点位、视角)。详见 <a href="features_state.html">state.md</a>。</li>
131
173
  <li><strong><code>on(event, callback)</code> / <code>off(event, callback)</code></strong>: 事件监听。详见 <a href="features_event.html">event.md</a>。</li>
132
174
  </ul>
133
175
  <h2 id="related" class="tsd-anchor-link">Related<a href="#related" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
@@ -141,7 +183,7 @@
141
183
  <li><a href="features_parameter.html">parameter.md</a>: 其他核心参数。</li>
142
184
  </ul>
143
185
  <hr>
144
- <pre><code class="yaml"><span class="hl-0">tags</span><span class="hl-1">: [</span><span class="hl-2">five</span><span class="hl-1">, </span><span class="hl-2">initialization</span><span class="hl-1">, </span><span class="hl-2">core</span><span class="hl-1">, </span><span class="hl-2">instance</span><span class="hl-1">, </span><span class="hl-2">lifecycle</span><span class="hl-1">]</span>
186
+ <pre><code class="yaml"><span class="hl-0">tags</span><span class="hl-1">: [</span><span class="hl-2">five</span><span class="hl-1">, </span><span class="hl-2">initialization</span><span class="hl-1">, </span><span class="hl-2">core</span><span class="hl-1">, </span><span class="hl-2">instance</span><span class="hl-1">, </span><span class="hl-2">lifecycle</span><span class="hl-1">, </span><span class="hl-2">forceWebGL</span><span class="hl-1">, </span><span class="hl-2">webgl2</span><span class="hl-1">, </span><span class="hl-2">xr</span><span class="hl-1">, </span><span class="hl-2">webxr</span><span class="hl-1">]</span>
145
187
  </code><button type="button">Copy</button></pre>
146
188
 
147
- </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#five-five-核心类"><span>Five (<wbr/>Five 核心类)</span></a><ul><li><a href="#schema"><span>Schema</span></a></li><li><ul><li><a href="#fiveinitargs"><span>Five<wbr/>Init<wbr/>Args</span></a></li></ul></li><li><a href="#concepts"><span>Concepts</span></a></li><li><ul><li><a href="#instance-management-实例管理"><span>Instance <wbr/>Management (实例管理)</span></a></li><li><a href="#rendering-loop-渲染循环"><span>Rendering <wbr/>Loop (渲染循环)</span></a></li><li><a href="#resource-loading-资源加载"><span>Resource <wbr/>Loading (资源加载)</span></a></li></ul></li><li><a href="#configuration"><span>Configuration</span></a></li><li><a href="#examples"><span>Examples</span></a></li><li><ul><li><a href="#快速上手-quick-example"><span>快速上手 (<wbr/>Quick <wbr/>Example)</span></a></li><li><a href="#进阶用法:自定义渲染器与视口"><span>进阶用法:自定义渲染器与视口</span></a></li><li><a href="#进阶用法:自定义相机动画"><span>进阶用法:自定义相机动画</span></a></li><li><a href="#实例属性-instance-properties"><span>实例属性 (<wbr/>Instance <wbr/>Properties)</span></a></li><li><a href="#实例方法-instance-methods"><span>实例方法 (<wbr/>Instance <wbr/>Methods)</span></a></li></ul></li><li><a href="#related"><span>Related</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">如视 Five SDK</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
189
+ </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#five-five-核心类"><span>Five (<wbr/>Five 核心类)</span></a><ul><li><a href="#schema"><span>Schema</span></a></li><li><ul><li><a href="#fiveinitargs"><span>Five<wbr/>Init<wbr/>Args</span></a></li></ul></li><li><a href="#concepts"><span>Concepts</span></a></li><li><ul><li><a href="#instance-management-实例管理"><span>Instance <wbr/>Management (实例管理)</span></a></li><li><a href="#rendering-loop-渲染循环"><span>Rendering <wbr/>Loop (渲染循环)</span></a></li><li><a href="#resource-loading-资源加载"><span>Resource <wbr/>Loading (资源加载)</span></a></li></ul></li><li><a href="#configuration"><span>Configuration</span></a></li><li><ul><li><a href="#forcewebgl-与-xr-回落后端"><span>force<wbr/>Web<wbr/>GL 与 <wbr/>XR 回落后端</span></a></li></ul></li><li><a href="#examples"><span>Examples</span></a></li><li><ul><li><a href="#快速上手-quick-example"><span>快速上手 (<wbr/>Quick <wbr/>Example)</span></a></li><li><a href="#进阶用法:自定义渲染器与视口"><span>进阶用法:自定义渲染器与视口</span></a></li><li><a href="#进阶用法:自定义相机动画"><span>进阶用法:自定义相机动画</span></a></li><li><a href="#实例属性-instance-properties"><span>实例属性 (<wbr/>Instance <wbr/>Properties)</span></a></li><li><a href="#实例方法-instance-methods"><span>实例方法 (<wbr/>Instance <wbr/>Methods)</span></a></li></ul></li><li><a href="#related"><span>Related</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">如视 Five SDK</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -16,7 +16,7 @@
16
16
  <h2 id="concepts" class="tsd-anchor-link">Concepts<a href="#concepts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
17
17
  <p>Five 的手势系统基于 Hammer.js 封装,主要包含以下几种手势:</p>
18
18
  <ul>
19
- <li><strong>gesture.create</strong>: 所有事件创建时。</li>
19
+ <li><strong>gesture.fire</strong>: 任意事件被触发。</li>
20
20
  <li><strong>gesture.pan</strong>: 拖拽/平移。</li>
21
21
  <li><strong>gesture.pinch</strong>: 双指缩放。</li>
22
22
  <li><strong>gesture.tap</strong>: 点击。</li>
@@ -11,23 +11,23 @@
11
11
  <p><strong>Definition</strong>: <a href="../../five/model/loaders/shared.d.ts">LoadResultType</a></p>
12
12
  </blockquote>
13
13
  <p>所有加载函数均返回 <code>Promise&lt;LoadResultType&gt;</code>。</p>
14
- <pre><code class="typescript"><span class="hl-8">// 通用返回类型</span><br/><span class="hl-10">export</span><span class="hl-1"> </span><span class="hl-3">type</span><span class="hl-1"> </span><span class="hl-7">LoadResultType</span><span class="hl-1">&lt;</span><span class="hl-7">Scene</span><span class="hl-1"> = </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Object3D</span><span class="hl-1">&gt; = {</span><br/><span class="hl-1"> </span><span class="hl-6">type</span><span class="hl-1">: </span><span class="hl-9">&#39;gltf&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;obj&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;ply&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;fbx&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;pbm&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;splat&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;spz&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;b3dm&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;pnts&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;at3d&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;dome&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;domez&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;x3p&#39;</span><span class="hl-1">; </span><span class="hl-8">// 模型类型</span><br/><span class="hl-1"> </span><span class="hl-6">modelUpAxis</span><span class="hl-1">: </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">; </span><span class="hl-8">// 原始模型的上轴</span><br/><span class="hl-1"> </span><span class="hl-6">upAxis</span><span class="hl-1">: </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">; </span><span class="hl-8">// 输出模型的上轴 (通常为 Z)</span><br/><span class="hl-1"> </span><span class="hl-6">byteLength</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">; </span><span class="hl-8">// 文件字节大小</span><br/><span class="hl-1"> </span><span class="hl-6">memoryUsage</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">; </span><span class="hl-8">// 显存/内存占用估算</span><br/><span class="hl-1"> </span><span class="hl-6">uri</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1">; </span><span class="hl-8">// 模型地址</span><br/><span class="hl-1"> </span><span class="hl-6">scene</span><span class="hl-1">: </span><span class="hl-7">Scene</span><span class="hl-1">; </span><span class="hl-8">// Three.js 对象 (Group 或 Object3D),可直接添加到场景</span><br/><span class="hl-1"> </span><span class="hl-6">textures</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Texture</span><span class="hl-1">[]; </span><span class="hl-8">// 加载的纹理列表</span><br/><span class="hl-1"> </span><span class="hl-6">animations</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">AnimationClip</span><span class="hl-1">[]; </span><span class="hl-8">// 动画剪辑列表</span><br/><span class="hl-1"> </span><span class="hl-6">rtcCenter</span><span class="hl-1">?: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Vector3</span><span class="hl-1">; </span><span class="hl-8">// 若存在 RTC (Relative To Center) 坐标偏移</span><br/><span class="hl-1"> </span><span class="hl-5">dispose</span><span class="hl-1">: () </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">void</span><span class="hl-1">; </span><span class="hl-8">// 销毁资源函数</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">// 通用配置项接口</span><br/><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">BaseLoaderOptions</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">upAxis</span><span class="hl-1">?: </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">; </span><span class="hl-8">// 期望输出的上轴,默认为 &#39;Z&#39; (Five 坐标系)</span><br/><span class="hl-1"> </span><span class="hl-6">modelUpAxis</span><span class="hl-1">?: </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">; </span><span class="hl-8">// (部分加载器支持) 原始模型的上轴,用于自动旋转修正</span><br/><span class="hl-1"> </span><span class="hl-6">fetcher</span><span class="hl-1">?: </span><span class="hl-7">Fetcher</span><span class="hl-1">; </span><span class="hl-8">// 自定义网络请求 Fetcher</span><br/><span class="hl-1"> </span><span class="hl-6">light</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">; </span><span class="hl-8">// 是否使用简化/无光照材质 (取决于加载器实现)</span><br/><span class="hl-1"> </span><span class="hl-5">onDownloadProgress</span><span class="hl-1">?: (</span><span class="hl-6">progress</span><span class="hl-1">: { </span><span class="hl-6">loaded</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">, </span><span class="hl-6">total</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1"> }) </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">void</span><span class="hl-1">; </span><span class="hl-8">// 下载进度回调</span><br/><span class="hl-1">}</span>
14
+ <pre><code class="typescript"><span class="hl-8">// 通用返回类型</span><br/><span class="hl-10">export</span><span class="hl-1"> </span><span class="hl-3">type</span><span class="hl-1"> </span><span class="hl-7">LoadResultType</span><span class="hl-1">&lt;</span><span class="hl-7">Scene</span><span class="hl-1"> = </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Object3D</span><span class="hl-1">&gt; = {</span><br/><span class="hl-1"> </span><span class="hl-6">type</span><span class="hl-1">: </span><span class="hl-9">&#39;gltf&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;obj&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;ply&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;fbx&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;pbm&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;splat&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;spz&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;b3dm&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;pnts&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;at3d&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;dome&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;domez&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;x3p&#39;</span><span class="hl-1">; </span><span class="hl-8">// 模型类型</span><br/><span class="hl-1"> </span><span class="hl-6">modelUpAxis</span><span class="hl-1">: </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">; </span><span class="hl-8">// 原始模型的上轴</span><br/><span class="hl-1"> </span><span class="hl-6">upAxis</span><span class="hl-1">: </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">; </span><span class="hl-8">// 输出模型的上轴 (通常为 Z)</span><br/><span class="hl-1"> </span><span class="hl-6">byteLength</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">; </span><span class="hl-8">// 文件字节大小</span><br/><span class="hl-1"> </span><span class="hl-6">memoryUsage</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">; </span><span class="hl-8">// 显存/内存占用估算</span><br/><span class="hl-1"> </span><span class="hl-6">uri</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1">; </span><span class="hl-8">// 模型地址</span><br/><span class="hl-1"> </span><span class="hl-6">scene</span><span class="hl-1">: </span><span class="hl-7">Scene</span><span class="hl-1">; </span><span class="hl-8">// Three.js 对象 (Group 或 Object3D),可直接添加到场景</span><br/><span class="hl-1"> </span><span class="hl-6">textures</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Texture</span><span class="hl-1">[]; </span><span class="hl-8">// 加载的纹理列表</span><br/><span class="hl-1"> </span><span class="hl-6">animations</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">AnimationClip</span><span class="hl-1">[]; </span><span class="hl-8">// 动画剪辑列表</span><br/><span class="hl-1"> </span><span class="hl-6">rtcCenter</span><span class="hl-1">?: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Vector3</span><span class="hl-1">; </span><span class="hl-8">// 若存在 RTC (Relative To Center) 坐标偏移</span><br/><span class="hl-1"> </span><span class="hl-5">dispose</span><span class="hl-1">: () </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">void</span><span class="hl-1">; </span><span class="hl-8">// 销毁资源函数</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">// 通用配置项接口</span><br/><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">BaseLoaderOptions</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">upAxis</span><span class="hl-1">?: </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">; </span><span class="hl-8">// 期望输出的上轴,默认为 &#39;Z&#39;(加载器输出坐标系)</span><br/><span class="hl-1"> </span><span class="hl-6">modelUpAxis</span><span class="hl-1">?: </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">; </span><span class="hl-8">// (部分加载器支持) 原始模型的上轴,用于自动旋转修正</span><br/><span class="hl-1"> </span><span class="hl-6">fetcher</span><span class="hl-1">?: </span><span class="hl-7">Fetcher</span><span class="hl-1">; </span><span class="hl-8">// 自定义网络请求 Fetcher</span><br/><span class="hl-1"> </span><span class="hl-6">light</span><span class="hl-1">?: </span><span class="hl-7">boolean</span><span class="hl-1">; </span><span class="hl-8">// 是否使用简化/无光照材质 (取决于加载器实现)</span><br/><span class="hl-1"> </span><span class="hl-5">onDownloadProgress</span><span class="hl-1">?: (</span><span class="hl-6">progress</span><span class="hl-1">: { </span><span class="hl-6">loaded</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">, </span><span class="hl-6">total</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1"> }) </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">void</span><span class="hl-1">; </span><span class="hl-8">// 下载进度回调</span><br/><span class="hl-1">}</span>
15
15
  </code><button type="button">Copy</button></pre>
16
16
 
17
17
  <h2 id="concepts" class="tsd-anchor-link">Concepts<a href="#concepts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
18
18
  <h3 id="独立加载函数-standalone-functions" class="tsd-anchor-link">独立加载函数 (Standalone Functions)<a href="#独立加载函数-standalone-functions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
19
19
  <p>这些加载函数(如 <code>loadGltf</code>, <code>loadPly</code>)是 <code>@realsee/five-webgpu</code> 包导出的<strong>独立函数</strong>,而非 <code>Five</code> 实例的方法。你需要单独引入它们使用。</p>
20
20
  <h3 id="坐标系转换-up-axis-conversion" class="tsd-anchor-link">坐标系转换 (Up-Axis Conversion)<a href="#坐标系转换-up-axis-conversion" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
21
- <p>Five 使用 <strong>Z-up</strong> (Z 轴向上) 的右手坐标系。
21
+ <p>Five 运行时场景使用 <strong>Y-up</strong> (Y 轴向上) 的右手坐标系;加载器默认输出通常为 <strong>Z-up</strong>。
22
22
  许多外部模型(如 standard GLTF, FBX)通常是 <strong>Y-up</strong> 的。
23
23
  加载器提供了 <code>upAxis</code> 和 <code>modelUpAxis</code> 选项来自动处理旋转:</p>
24
24
  <ul>
25
- <li><code>upAxis</code>: 你期望得到的结果坐标系上轴(通常保持默认 'Z')。</li>
25
+ <li><code>upAxis</code>: 你期望得到的加载器输出坐标系上轴(通常保持默认 'Z')。</li>
26
26
  <li><code>modelUpAxis</code>: 原始文件的上轴(如 GLTF 默认为 'Y',PLY 默认为 'Z')。
27
- 如果不指定,加载器会尝试使用合理的默认值将模型旋转到 Z 轴向上。</li>
27
+ 如果不指定,加载器会使用各自的默认值;将结果直接添加到 <code>five.scene</code> 时,应按需设置 <code>upAxis: 'Y'</code> 与 Five 的运行时坐标系对齐。</li>
28
28
  </ul>
29
29
  <h3 id="资源销毁-disposal" class="tsd-anchor-link">资源销毁 (Disposal)<a href="#资源销毁-disposal" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
30
- <p>加载的模型包含 Geometry、Material 和 Texture 等 WebGL 资源。当你不再需要该模型时(例如切换场景或移除物体),<strong>必须</strong>调用返回结果中的 <code>dispose()</code> 方法来释放内存,否则会导致内存泄漏。</p>
30
+ <p>加载的模型包含 Geometry、Material 和 Texture 等 GPU 资源。当你不再需要该模型时(例如切换场景或移除物体),<strong>必须</strong>调用返回结果中的 <code>dispose()</code> 方法来释放资源,否则会导致内存泄漏。</p>
31
31
  <h3 id="fetcher" class="tsd-anchor-link">Fetcher<a href="#fetcher" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
32
32
  <p>所有加载器支持传入自定义 <code>fetcher</code>。这在需要鉴权、自定义 Header 或处理特定 CDN 逻辑时非常有用。如果不传,默认使用内部的 <code>internalFetcher</code>。</p>
33
33
  <h2 id="configuration" class="tsd-anchor-link">Configuration<a href="#configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
@@ -537,7 +537,7 @@
537
537
  </code><button type="button">Copy</button></pre>
538
538
 
539
539
  <h3 id="进阶用法:加载高斯泼溅-gaussian-splat" class="tsd-anchor-link">进阶用法:加载高斯泼溅 (Gaussian Splat)<a href="#进阶用法:加载高斯泼溅-gaussian-splat" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
540
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadSplat</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five-webgpu&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">loadSplat</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/scene.splat&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">modelUpAxis:</span><span class="hl-1"> </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1">, </span><span class="hl-8">// 假设原始数据是 Y-up</span><br/><span class="hl-1"> </span><span class="hl-6">upAxis:</span><span class="hl-1"> </span><span class="hl-9">&#39;Z&#39;</span><span class="hl-1">, </span><span class="hl-8">// 转换到 Five 的 Z-up</span><br/><span class="hl-1">}).</span><span class="hl-5">then</span><span class="hl-1">((</span><span class="hl-6">result</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">splatMesh</span><span class="hl-1"> = </span><span class="hl-6">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">.</span><span class="hl-5">add</span><span class="hl-1">(</span><span class="hl-6">splatMesh</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">needsRender</span><span class="hl-1"> = </span><span class="hl-3">true</span><span class="hl-1">;</span><br/><span class="hl-1">});</span>
540
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadSplat</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five-webgpu&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">loadSplat</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/scene.splat&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">modelUpAxis:</span><span class="hl-1"> </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1">, </span><span class="hl-8">// 假设原始数据是 Y-up</span><br/><span class="hl-1"> </span><span class="hl-6">upAxis:</span><span class="hl-1"> </span><span class="hl-9">&#39;Y&#39;</span><span class="hl-1">, </span><span class="hl-8">// 转换到 Five 的 Y-up 运行时坐标系</span><br/><span class="hl-1">}).</span><span class="hl-5">then</span><span class="hl-1">((</span><span class="hl-6">result</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">splatMesh</span><span class="hl-1"> = </span><span class="hl-6">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">.</span><span class="hl-5">add</span><span class="hl-1">(</span><span class="hl-6">splatMesh</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">needsRender</span><span class="hl-1"> = </span><span class="hl-3">true</span><span class="hl-1">;</span><br/><span class="hl-1">});</span>
541
541
  </code><button type="button">Copy</button></pre>
542
542
 
543
543
  <h3 id="进阶用法:自定义-ply-属性映射-custom-ply-properties" class="tsd-anchor-link">进阶用法:自定义 PLY 属性映射 (Custom PLY Properties)<a href="#进阶用法:自定义-ply-属性映射-custom-ply-properties" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
@@ -80,7 +80,7 @@
80
80
 
81
81
  <h4 id="tile-lifecycle-monitoring-tile-生命周期监控" class="tsd-anchor-link">Tile Lifecycle Monitoring (Tile 生命周期监控)<a href="#tile-lifecycle-monitoring-tile-生命周期监控" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4>
82
82
  <p>监控单个 Tile 的加载与卸载事件,用于更精细的调试或资源统计。</p>
83
- <pre><code class="ts"><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">on</span><span class="hl-1">(</span><span class="hl-9">&quot;model.tileLoad&quot;</span><span class="hl-1">, (</span><span class="hl-6">tile</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><span class="hl-9">`Tile loaded: </span><span class="hl-3">${</span><span class="hl-6">tile</span><span class="hl-12">.</span><span class="hl-6">debugLabel</span><span class="hl-3">}</span><span class="hl-9">, Size: </span><span class="hl-3">${</span><span class="hl-6">tile</span><span class="hl-12">.</span><span class="hl-6">content</span><span class="hl-12">.</span><span class="hl-6">byteLength</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">);</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">on</span><span class="hl-1">(</span><span class="hl-9">&quot;model.tileUnload&quot;</span><span class="hl-1">, (</span><span class="hl-6">tile</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><span class="hl-9">`Tile unloaded: </span><span class="hl-3">${</span><span class="hl-6">tile</span><span class="hl-12">.</span><span class="hl-6">debugLabel</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
83
+ <pre><code class="ts"><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">on</span><span class="hl-1">(</span><span class="hl-9">&quot;models.tileLoad&quot;</span><span class="hl-1">, ({ </span><span class="hl-6">tile</span><span class="hl-1"> }) </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><span class="hl-9">`Tile loaded: </span><span class="hl-3">${</span><span class="hl-6">tile</span><span class="hl-12">.</span><span class="hl-6">debugLabel</span><span class="hl-3">}</span><span class="hl-9">, Size: </span><span class="hl-3">${</span><span class="hl-6">tile</span><span class="hl-12">.</span><span class="hl-6">content</span><span class="hl-12">.</span><span class="hl-6">byteLength</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">);</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">on</span><span class="hl-1">(</span><span class="hl-9">&quot;models.tileUnload&quot;</span><span class="hl-1">, ({ </span><span class="hl-6">tile</span><span class="hl-1"> }) </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">console</span><span class="hl-1">.</span><span class="hl-5">log</span><span class="hl-1">(</span><span class="hl-9">`Tile unloaded: </span><span class="hl-3">${</span><span class="hl-6">tile</span><span class="hl-12">.</span><span class="hl-6">debugLabel</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
84
84
  </code><button type="button">Copy</button></pre>
85
85
 
86
86
  <h3 id="2-panorama-loading-全景图加载" class="tsd-anchor-link">2. Panorama Loading (全景图加载)<a href="#2-panorama-loading-全景图加载" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
@@ -40,15 +40,22 @@
40
40
  <li><strong>Shown Floor (<code>shownFloorIndex</code>)</strong>: 指定当前高亮显示的楼层索引。</li>
41
41
  </ul>
42
42
  <h3 id="4-vertex-marks-semantic-filtering-顶点标记与语义过滤" class="tsd-anchor-link">4. Vertex Marks &amp; Semantic Filtering (顶点标记与语义过滤)<a href="#4-vertex-marks-semantic-filtering-顶点标记与语义过滤" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
43
- <p><code>vertexMarks</code> 是一个<strong>全局开关</strong>,用于控制是否启用模型顶点上的语义标记(<code>_feature_id_rsmask</code>)逻辑。</p>
43
+ <p><code>vertexMarks</code> 用于控制模型顶点上的语义标记(<code>_feature_id_rsmask</code>)逻辑。它是一个<strong>按位掩码(bit flag)</strong>,可以独立开关多类标注,而不再是单一的全局 <code>boolean</code> 开关。</p>
44
44
  <ul>
45
- <li><strong>机制</strong>: 模型顶点预置了 <code>_feature_id_rsmask</code> 属性,不同的值代表不同的语义部分。</li>
46
- <li><strong>当前支持</strong>: 目前主要支持 <code>_feature_id_rsmask=1</code>(通常标记为天花板/房顶)。
45
+ <li><strong>机制</strong>: 模型顶点预置了 <code>_feature_id_rsmask</code> 属性,不同的值代表不同的语义部分;每一类标注对应掩码中的一位,可按位独立启用。</li>
46
+ <li><strong>标志位 (<code>PBMVertexMarkFlag</code>)</strong>:
47
47
  <ul>
48
- <li>当 <code>vertexMarks</code> 开启时,标记为 <code>1</code> 的顶点部分会在特定视角(如俯视)下自动隐藏,实现“开盖”效果,优化室内布局观测体验。</li>
48
+ <li><code>PBMVertexMarkFlag.roof</code> (<code>0b00000010</code>): 开盖标注(<code>_feature_id_rsmask=1</code>)。开启后,命中屋顶标记的顶点会按 <code>roofStyle</code> 裁切:<code>AUTO</code> 随相机俯仰角渐进隐藏,<code>HIDE</code> 始终隐藏。</li>
49
+ <li><code>PBMVertexMarkFlag.hidden</code> (<code>0b00000100</code>): 隐藏标注(<code>_feature_id_rsmask=2</code>)。开启后,命中隐藏标记且超过高度阈值的顶点会被裁掉。</li>
50
+ <li><code>PBMVertexMarkFlag.none</code> (<code>0b00000000</code>): 不启用任何标注。</li>
51
+ <li><code>PBMVertexMarkFlag.all</code> (<code>0b11111111</code>): 启用全部标注(默认全开,且包含未来新增的标注档位)。</li>
49
52
  </ul>
50
53
  </li>
51
- <li><strong>未来扩展</strong>: 该机制设计支持更多标记值,未来可能用于控制其他特定模型部件的显示效果。</li>
54
+ <li><strong>按位组合</strong>: 使用按位或组合多个标志,例如同时开启开盖与隐藏:
55
+ <code>PBMVertexMarkFlag.roof | PBMVertexMarkFlag.hidden</code>。</li>
56
+ <li><strong>向后兼容</strong>: <code>vertexMarks</code> 仍接受 <code>boolean</code>。传入 <code>true</code> 等价于 <code>PBMVertexMarkFlag.all</code>(全开),<code>false</code> 等价于 <code>PBMVertexMarkFlag.none</code>(全关)。</li>
57
+ <li><strong>与自定义节点的关系</strong>: 节点上下文中的 <code>isRoof</code> / <code>isHidden</code> 等标记判定<strong>始终可用</strong>,不受本开关影响;<code>vertexMarks</code> 只门控管线内置的自动裁切。</li>
58
+ <li><strong>未来扩展</strong>: 新增标注档位时,只需在 <code>PBMVertexMarkFlag</code> 中追加一个新的位,不影响现有标志。</li>
52
59
  </ul>
53
60
  <h2 id="configuration" class="tsd-anchor-link">Configuration<a href="#configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
54
61
  <p>以下表格列出了控制材质与外观的可用参数,按使用频率和场景分类。</p>
@@ -113,9 +120,9 @@
113
120
  </tr>
114
121
  <tr>
115
122
  <td style="text-align:left"><code>vertexMarks</code></td>
116
- <td style="text-align:left"><code>boolean</code></td>
123
+ <td style="text-align:left"><code>boolean | number</code></td>
117
124
  <td style="text-align:left"><code>true</code></td>
118
- <td style="text-align:left">是否显示/生效标注。</td>
125
+ <td style="text-align:left">顶点标注开关,按位控制(见 Concepts)。<code>PBMVertexMarkFlag</code> 位掩码;传入 <code>boolean</code> 时 <code>true</code>=全开、<code>false</code>=全关。</td>
119
126
  </tr>
120
127
  <tr>
121
128
  <td style="text-align:left"><code>brightness</code></td>
@@ -328,6 +335,10 @@
328
335
  <pre><code class="typescript"><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">pointSize:</span><span class="hl-1"> </span><span class="hl-9">&#39;ATTENUATION&#39;</span><span class="hl-1">, </span><span class="hl-8">// 大小随距离衰减</span><br/><span class="hl-1"> </span><span class="hl-6">pointScale:</span><span class="hl-1"> </span><span class="hl-11">0.05</span><span class="hl-1">, </span><span class="hl-8">// 基础大小</span><br/><span class="hl-1"> </span><span class="hl-6">pointMaxPixel:</span><span class="hl-1"> </span><span class="hl-11">20</span><span class="hl-1"> </span><span class="hl-8">// 最大像素限制</span><br/><span class="hl-1">});</span>
329
336
  </code><button type="button">Copy</button></pre>
330
337
 
338
+ <h3 id="3-toggling-vertex-marks-控制顶点标注" class="tsd-anchor-link">3. Toggling Vertex Marks (控制顶点标注)<a href="#3-toggling-vertex-marks-控制顶点标注" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
339
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">PBMVertexMarkFlag</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five-webgpu&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 仅开启“开盖”标注</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">({ </span><span class="hl-6">vertexMarks:</span><span class="hl-1"> </span><span class="hl-6">PBMVertexMarkFlag</span><span class="hl-1">.</span><span class="hl-6">roof</span><span class="hl-1"> });</span><br/><br/><span class="hl-8">// 同时开启“开盖”与“隐藏”标注</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">vertexMarks:</span><span class="hl-1"> </span><span class="hl-6">PBMVertexMarkFlag</span><span class="hl-1">.</span><span class="hl-6">roof</span><span class="hl-1"> | </span><span class="hl-6">PBMVertexMarkFlag</span><span class="hl-1">.</span><span class="hl-6">hidden</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-8">// 关闭全部标注</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">({ </span><span class="hl-6">vertexMarks:</span><span class="hl-1"> </span><span class="hl-6">PBMVertexMarkFlag</span><span class="hl-1">.</span><span class="hl-6">none</span><span class="hl-1"> });</span><br/><br/><span class="hl-8">// 向后兼容:true 等价于全开,false 等价于全关</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">({ </span><span class="hl-6">vertexMarks:</span><span class="hl-1"> </span><span class="hl-3">true</span><span class="hl-1"> });</span>
340
+ </code><button type="button">Copy</button></pre>
341
+
331
342
  <h2 id="related" class="tsd-anchor-link">Related<a href="#related" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
332
343
  <ul>
333
344
  <li><a href="features_parameter.html">Parameter</a>: 配置系统入口与继承逻辑。</li>
@@ -335,7 +346,7 @@
335
346
  <li><a href="features_3dtile.html">3DTile Params</a>: 性能与加载相关参数。</li>
336
347
  </ul>
337
348
  <hr>
338
- <pre><code class="yaml"><span class="hl-0">tags</span><span class="hl-1">: [</span><span class="hl-2">material</span><span class="hl-1">, </span><span class="hl-2">appearance</span><span class="hl-1">, </span><span class="hl-2">pointcloud</span><span class="hl-1">, </span><span class="hl-2">parameter</span><span class="hl-1">, </span><span class="hl-2">roof</span><span class="hl-1">, </span><span class="hl-2">ceiling</span><span class="hl-1">, </span><span class="hl-2">config</span><span class="hl-1">]</span>
349
+ <pre><code class="yaml"><span class="hl-0">tags</span><span class="hl-1">: [</span><span class="hl-2">material</span><span class="hl-1">, </span><span class="hl-2">appearance</span><span class="hl-1">, </span><span class="hl-2">pointcloud</span><span class="hl-1">, </span><span class="hl-2">parameter</span><span class="hl-1">, </span><span class="hl-2">roof</span><span class="hl-1">, </span><span class="hl-2">hidden</span><span class="hl-1">, </span><span class="hl-2">ceiling</span><span class="hl-1">, </span><span class="hl-2">开盖</span><span class="hl-1">, </span><span class="hl-2">隐藏</span><span class="hl-1">, </span><span class="hl-2">顶点标记</span><span class="hl-1">, </span><span class="hl-2">位掩码</span><span class="hl-1">, </span><span class="hl-2">bitmask</span><span class="hl-1">, </span><span class="hl-2">vertex-mark</span><span class="hl-1">, </span><span class="hl-2">config</span><span class="hl-1">]</span>
339
350
  </code><button type="button">Copy</button></pre>
340
351
 
341
- </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#material-parameters-材质参数"><span>Material <wbr/>Parameters (材质参数)</span></a><ul><li><a href="#schema"><span>Schema</span></a></li><li><a href="#concepts"><span>Concepts</span></a></li><li><ul><li><a href="#1-transparency-blending-透明度与混合"><span>1. <wbr/>Transparency &amp; <wbr/>Blending (透明度与混合)</span></a></li><li><a href="#2-point-cloud-rendering-点云渲染"><span>2. <wbr/>Point <wbr/>Cloud <wbr/>Rendering (点云渲染)</span></a></li><li><a href="#3-floor-management-楼层管理"><span>3. <wbr/>Floor <wbr/>Management (楼层管理)</span></a></li><li><a href="#4-vertex-marks-semantic-filtering-顶点标记与语义过滤"><span>4. <wbr/>Vertex <wbr/>Marks &amp; <wbr/>Semantic <wbr/>Filtering (顶点标记与语义过滤)</span></a></li></ul></li><li><a href="#configuration"><span>Configuration</span></a></li><li><ul><li><a href="#common-configuration-常用配置"><span>Common <wbr/>Configuration (常用配置)</span></a></li><li><a href="#advanced-appearance-进阶外观配置"><span>Advanced <wbr/>Appearance (进阶外观配置)</span></a></li><li><a href="#internal-low-level-内部与底层配置"><span>Internal &amp; <wbr/>Low-<wbr/>Level (内部与底层配置)</span></a></li></ul></li><li><a href="#examples"><span>Examples</span></a></li><li><ul><li><a href="#1-adjusting-model-transparency-and-style-调整模型透明度与样式"><span>1. <wbr/>Adjusting <wbr/>Model <wbr/>Transparency and <wbr/>Style (调整模型透明度与样式)</span></a></li><li><a href="#2-configuring-point-cloud-appearance-配置点云外观"><span>2. <wbr/>Configuring <wbr/>Point <wbr/>Cloud <wbr/>Appearance (配置点云外观)</span></a></li></ul></li><li><a href="#related"><span>Related</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">如视 Five SDK</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
352
+ </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#material-parameters-材质参数"><span>Material <wbr/>Parameters (材质参数)</span></a><ul><li><a href="#schema"><span>Schema</span></a></li><li><a href="#concepts"><span>Concepts</span></a></li><li><ul><li><a href="#1-transparency-blending-透明度与混合"><span>1. <wbr/>Transparency &amp; <wbr/>Blending (透明度与混合)</span></a></li><li><a href="#2-point-cloud-rendering-点云渲染"><span>2. <wbr/>Point <wbr/>Cloud <wbr/>Rendering (点云渲染)</span></a></li><li><a href="#3-floor-management-楼层管理"><span>3. <wbr/>Floor <wbr/>Management (楼层管理)</span></a></li><li><a href="#4-vertex-marks-semantic-filtering-顶点标记与语义过滤"><span>4. <wbr/>Vertex <wbr/>Marks &amp; <wbr/>Semantic <wbr/>Filtering (顶点标记与语义过滤)</span></a></li></ul></li><li><a href="#configuration"><span>Configuration</span></a></li><li><ul><li><a href="#common-configuration-常用配置"><span>Common <wbr/>Configuration (常用配置)</span></a></li><li><a href="#advanced-appearance-进阶外观配置"><span>Advanced <wbr/>Appearance (进阶外观配置)</span></a></li><li><a href="#internal-low-level-内部与底层配置"><span>Internal &amp; <wbr/>Low-<wbr/>Level (内部与底层配置)</span></a></li></ul></li><li><a href="#examples"><span>Examples</span></a></li><li><ul><li><a href="#1-adjusting-model-transparency-and-style-调整模型透明度与样式"><span>1. <wbr/>Adjusting <wbr/>Model <wbr/>Transparency and <wbr/>Style (调整模型透明度与样式)</span></a></li><li><a href="#2-configuring-point-cloud-appearance-配置点云外观"><span>2. <wbr/>Configuring <wbr/>Point <wbr/>Cloud <wbr/>Appearance (配置点云外观)</span></a></li><li><a href="#3-toggling-vertex-marks-控制顶点标注"><span>3. <wbr/>Toggling <wbr/>Vertex <wbr/>Marks (控制顶点标注)</span></a></li></ul></li><li><a href="#related"><span>Related</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">如视 Five SDK</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>