@realsee/five-webgpu 1.0.0-alpha.1 → 1.0.0-alpha.10

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 (628) hide show
  1. package/README.md +9 -9
  2. package/_virtual/_rolldown/runtime.js +255 -0
  3. package/ai_guides/README.md +2 -2
  4. package/ai_guides/api.md +9 -8
  5. package/ai_guides/features/camera-animation.md +1 -1
  6. package/ai_guides/features/clipper.md +1 -1
  7. package/ai_guides/features/coordinate-system.md +1 -1
  8. package/ai_guides/features/event.md +1 -2
  9. package/ai_guides/features/five.md +81 -12
  10. package/ai_guides/features/gesture.md +3 -3
  11. package/ai_guides/features/get-screen-pixels.md +1 -1
  12. package/ai_guides/features/image-options.md +3 -3
  13. package/ai_guides/features/load-external-model.md +15 -15
  14. package/ai_guides/features/load-progress.md +2 -2
  15. package/ai_guides/features/material.md +35 -8
  16. package/ai_guides/features/mode.md +28 -31
  17. package/ai_guides/features/model.md +1 -1
  18. package/ai_guides/features/pano-filter.md +3 -3
  19. package/ai_guides/features/pano-tile.md +2 -2
  20. package/ai_guides/features/raycast.md +1 -1
  21. package/ai_guides/features/screen-project.md +1 -1
  22. package/ai_guides/features/state.md +3 -3
  23. package/ai_guides/features/ultra-hdr.md +41 -32
  24. package/ai_guides/features/work.md +2 -2
  25. package/ai_guides/quick-start.md +3 -3
  26. package/ai_guides/release_notes/6.6.md +2 -2
  27. package/ai_guides/release_notes/6.7.md +1 -1
  28. package/ai_guides/release_notes/6.8.md +3 -3
  29. package/ai_guides/support.md +0 -4
  30. package/docs/assets/hierarchy.js +1 -1
  31. package/docs/assets/navigation.js +1 -1
  32. package/docs/assets/search.js +1 -1
  33. package/docs/classes/index.AdaptiveLuminancePass.html +1 -1
  34. package/docs/classes/index.BoundingMesh.html +1 -1
  35. package/docs/classes/index.Camera.html +1 -1
  36. package/docs/classes/index.EffectComposer.html +1 -1
  37. package/docs/classes/index.EyeDomeLightingPass.html +1 -1
  38. package/docs/classes/index.Five.html +77 -68
  39. package/docs/classes/index.FivePass.html +1 -1
  40. package/docs/classes/index.FiveRenderer.html +2 -2
  41. package/docs/classes/index.FlowingFireworks3DPass.html +7 -3
  42. package/docs/classes/index.FlowingLight2DPass.html +6 -3
  43. package/docs/classes/index.FlowingLight3DPass.html +6 -3
  44. package/docs/classes/index.GaussianBlurPass.html +1 -1
  45. package/docs/classes/index.InternalWebGPURenderer.html +17 -3
  46. package/docs/classes/index.Model.html +1 -1
  47. package/docs/classes/index.ModelScene.html +1 -1
  48. package/docs/classes/index.NetworkSubscribe.html +1 -1
  49. package/docs/classes/index.PBMCustomNode.html +57 -0
  50. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +9 -6
  51. package/docs/classes/index.PBMGaussianSplattingObject.html +18 -4
  52. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +41 -11
  53. package/docs/classes/index.PBMGroup.html +1 -1
  54. package/docs/classes/index.PBMMesh.html +1 -1
  55. package/docs/classes/index.PBMMeshBasicMaterial.html +19 -6
  56. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +31 -8
  57. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +19 -6
  58. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +31 -8
  59. package/docs/classes/index.PBMMeshPhongMaterial.html +19 -6
  60. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +31 -8
  61. package/docs/classes/index.PBMMeshPhysicalMaterial.html +19 -6
  62. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +31 -8
  63. package/docs/classes/index.PBMPanoFilter.html +8 -8
  64. package/docs/classes/index.PBMPointCloud.html +6 -7
  65. package/docs/classes/index.PBMPointCloudMaterial.html +83 -0
  66. package/docs/classes/index.PBMSkinnedMesh.html +1 -1
  67. package/docs/classes/index.PBMUpdateable.html +1 -1
  68. package/docs/classes/index.PanoCircleMesh.html +1 -1
  69. package/docs/classes/index.PanoCircleMeshCustom.html +5 -5
  70. package/docs/classes/index.PanoCircleMeshSolid.html +1 -1
  71. package/docs/classes/index.Parameter.html +61 -53
  72. package/docs/classes/index.Scene.html +1 -1
  73. package/docs/classes/index.Subscribe.html +1 -1
  74. package/docs/classes/index.TextureLoader.html +4 -1
  75. package/docs/classes/index.Tile3D.html +23 -21
  76. package/docs/classes/index.TileNode.html +1 -1
  77. package/docs/classes/index.Tileset.html +4 -4
  78. package/docs/classes/index.TrajectoryNode.html +3 -3
  79. package/docs/classes/index.Work.html +20 -18
  80. package/docs/classes/index.WorkResolvedObserver.html +22 -22
  81. package/docs/classes/index.XRButton.html +3 -0
  82. package/docs/documents/README.html +2 -2
  83. package/docs/documents/api.html +11 -10
  84. package/docs/documents/features_camera-animation.html +1 -1
  85. package/docs/documents/features_clipper.html +1 -1
  86. package/docs/documents/features_coordinate-system.html +1 -1
  87. package/docs/documents/features_event.html +1 -2
  88. package/docs/documents/features_five.html +53 -11
  89. package/docs/documents/features_gesture.html +3 -3
  90. package/docs/documents/features_get-screen-pixels.html +1 -1
  91. package/docs/documents/features_image-options.html +3 -3
  92. package/docs/documents/features_load-external-model.html +13 -13
  93. package/docs/documents/features_load-progress.html +1 -1
  94. package/docs/documents/features_material.html +20 -9
  95. package/docs/documents/features_mode.html +30 -15
  96. package/docs/documents/features_model.html +1 -1
  97. package/docs/documents/features_pano-filter.html +3 -3
  98. package/docs/documents/features_pano-tile.html +2 -2
  99. package/docs/documents/features_raycast.html +1 -1
  100. package/docs/documents/features_screen-project.html +1 -1
  101. package/docs/documents/features_state.html +2 -2
  102. package/docs/documents/features_ultra-hdr.html +50 -44
  103. package/docs/documents/features_work.html +2 -2
  104. package/docs/documents/quick-start.html +2 -2
  105. package/docs/documents/release_notes_6.6.html +2 -2
  106. package/docs/documents/release_notes_6.7.html +1 -1
  107. package/docs/documents/release_notes_6.8.html +3 -3
  108. package/docs/documents/support.html +1 -3
  109. package/docs/functions/index.customNodesCacheKey.html +3 -0
  110. package/docs/functions/index.parseWork.html +1 -1
  111. package/docs/functions/index.workToJson.html +1 -1
  112. package/docs/hierarchy.html +1 -1
  113. package/docs/index.html +2 -2
  114. package/docs/interfaces/index.AddableObject.html +1 -1
  115. package/docs/interfaces/index.AjaxOptions.html +1 -1
  116. package/docs/interfaces/index.BaseEvent.html +2 -2
  117. package/docs/interfaces/index.Clock.html +24 -0
  118. package/docs/interfaces/index.DeviceProfile.html +8 -0
  119. package/docs/interfaces/index.EventCallback.html +49 -47
  120. package/docs/interfaces/index.FiveInitArgs.html +65 -41
  121. package/docs/interfaces/index.GainmapCfgData.html +15 -0
  122. package/docs/interfaces/index.GestureEvent.html +2 -2
  123. package/docs/interfaces/index.IPBMMaterial.html +18 -5
  124. package/docs/interfaces/index.ImageOptions.html +1 -1
  125. package/docs/interfaces/index.IntersectEvent.html +2 -2
  126. package/docs/interfaces/index.IntersectMesh.html +1 -1
  127. package/docs/interfaces/index.IntersectMeshInterface.html +1 -1
  128. package/docs/interfaces/index.Intersection.html +1 -1
  129. package/docs/interfaces/index.LoosePanoWork.html +2 -2
  130. package/docs/interfaces/index.LooseWork.html +2 -2
  131. package/docs/interfaces/index.LooseWorkInitial.html +2 -2
  132. package/docs/interfaces/index.LooseWorkModel.html +2 -2
  133. package/docs/interfaces/index.LooseWorkObserver.html +2 -2
  134. package/docs/interfaces/index.LooseWorkPanorama.html +4 -3
  135. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +15 -9
  136. package/docs/interfaces/index.ModeChangeEvent.html +2 -2
  137. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +1 -1
  138. package/docs/interfaces/index.ModelEvent.html +2 -2
  139. package/docs/interfaces/index.ModelSceneEvent.html +2 -2
  140. package/docs/interfaces/index.ModelTileEvent.html +2 -2
  141. package/docs/interfaces/index.MovePanoOptions.html +1 -1
  142. package/docs/interfaces/index.NetworkAbortError.html +1 -1
  143. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -1
  144. package/docs/interfaces/index.NetworkOptions.html +1 -1
  145. package/docs/interfaces/index.NetworkProxyError.html +1 -1
  146. package/docs/interfaces/index.NetworkResourceEvent.html +2 -2
  147. package/docs/interfaces/index.NetworkResponseError.html +1 -1
  148. package/docs/interfaces/index.NetworkTimeoutError.html +1 -1
  149. package/docs/interfaces/index.ObjectEvent.html +2 -2
  150. package/docs/interfaces/index.PBMClipperParameter.html +2 -2
  151. package/docs/interfaces/index.PBMCustomNodeContext.html +87 -0
  152. package/docs/interfaces/index.PBMCustomNodeOptions.html +10 -0
  153. package/docs/interfaces/index.PBMCustomNodePanoContext.html +20 -0
  154. package/docs/interfaces/index.PBMCustomNodeSlots.html +31 -0
  155. package/docs/interfaces/index.PBMGaussianSplattingNodeMaterialOptions.html +4 -0
  156. package/docs/interfaces/index.PBMPanoDepth.html +5 -5
  157. package/docs/interfaces/index.PBMPanoFilterValue.html +2 -2
  158. package/docs/interfaces/index.PBMPanoGainmap.html +6 -0
  159. package/docs/interfaces/index.PBMPanoPicture.html +9 -8
  160. package/docs/interfaces/index.PBMRefinedScreen.html +2 -2
  161. package/docs/interfaces/index.PanoCircleMeshCustomOptions.html +2 -2
  162. package/docs/interfaces/index.PanoCircleMeshInterface.html +1 -1
  163. package/docs/interfaces/index.PanoEvent.html +2 -2
  164. package/docs/interfaces/index.PanoPrepareEvent.html +15 -0
  165. package/docs/interfaces/index.PanoTextureEvent.html +2 -2
  166. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +9 -9
  167. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +1 -1
  168. package/docs/interfaces/index.ParameterMaterialValue.html +46 -38
  169. package/docs/interfaces/index.ParameterTilesetValue.html +15 -15
  170. package/docs/interfaces/index.ParameterValue.html +60 -52
  171. package/docs/interfaces/index.Pose.html +1 -1
  172. package/docs/interfaces/index.RenderEvent.html +2 -2
  173. package/docs/interfaces/index.ResolvedParameterValue.html +60 -52
  174. package/docs/interfaces/index.SplatData.html +10 -5
  175. package/docs/interfaces/index.State.html +1 -1
  176. package/docs/interfaces/index.StateEvent.html +2 -2
  177. package/docs/interfaces/index.TextureOptions.html +1 -1
  178. package/docs/interfaces/index.TilesetOptions.html +7 -2
  179. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +1 -1
  180. package/docs/interfaces/index.VRPanoramaControllerCustomInitArgs.html +37 -0
  181. package/docs/interfaces/index.ViewLayer.html +23 -21
  182. package/docs/interfaces/index.WorkCubeHdrGainmapImage.html +10 -0
  183. package/docs/interfaces/index.WorkCubeImage.html +5 -9
  184. package/docs/interfaces/index.WorkImage.html +8 -12
  185. package/docs/interfaces/index.WorkInitial.html +8 -8
  186. package/docs/interfaces/index.WorkModel.html +8 -8
  187. package/docs/interfaces/index.WorkModelLayer.html +6 -6
  188. package/docs/interfaces/index.WorkObserver.html +23 -23
  189. package/docs/interfaces/index.WorkPanoramaJson.html +3 -2
  190. package/docs/interfaces/index.WorkTile.html +8 -12
  191. package/docs/interfaces/index.WorksEvent.html +2 -2
  192. package/docs/interfaces/index.XRControllerEvent.html +2 -2
  193. package/docs/interfaces/index.XRGestureEvent.html +2 -2
  194. package/docs/interfaces/index.XRPanoramaControllerCustomInitArgs.html +52 -0
  195. package/docs/interfaces/index.XRSessionEvent.html +2 -2
  196. package/docs/modules/index.html +1 -1
  197. package/docs/types/index.ControllerCustomInitTypes.html +4 -2
  198. package/docs/types/index.ControllerEventTypes.html +25 -23
  199. package/docs/types/index.DeviceProfileOverride.html +5 -0
  200. package/docs/types/index.EventTypes.html +26 -26
  201. package/docs/types/index.FlowingFireworks3DPassLine.html +5 -2
  202. package/docs/types/index.FlowingLight2DPassLine.html +4 -2
  203. package/docs/types/index.FlowingLight3DPassLine.html +7 -2
  204. package/docs/types/index.FlowingLightLineInput.html +12 -0
  205. package/docs/types/index.Mode.html +6 -3
  206. package/docs/types/index.OutputTextureDataType.html +1 -1
  207. package/docs/types/index.PBMColorStyle.html +1 -1
  208. package/docs/types/index.PBMCustomNodeTargetType.html +2 -0
  209. package/docs/types/index.PBMPointBack.html +1 -1
  210. package/docs/types/index.PBMPointShape.html +1 -1
  211. package/docs/types/index.PBMPointSize.html +1 -1
  212. package/docs/types/index.PBMRoofStyle.html +6 -0
  213. package/docs/types/index.ParseOptions.html +14 -8
  214. package/docs/types/index.XRMachineType.html +7 -0
  215. package/docs/variables/index.GSPLAT_PIPELINE_AUTO.html +2 -0
  216. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_CPU_SORT.html +2 -0
  217. package/docs/variables/index.GSPLAT_PIPELINE_RASTER_GPU_SORT.html +2 -0
  218. package/docs/variables/index.PBMVertexMarkFlag.html +4 -0
  219. package/docs/variables/index.PROXY_CONTROLLER_EVENT_NAMES.html +1 -1
  220. package/docs/variables/index.controllersDefaultInitArgs.html +1 -1
  221. package/five/application/controllers.d.ts +8 -0
  222. package/five/application/events.d.ts +1 -1
  223. package/five/application/five.d.ts +15 -1
  224. package/five/application/fiveInitArgs.d.ts +32 -1
  225. package/five/application/mode.d.ts +8 -1
  226. package/five/cardboard/helper.d.ts +2 -0
  227. package/five/cardboard/index.d.ts +13 -0
  228. package/five/cardboard/sensor.d.ts +158 -0
  229. package/five/controllers/base.d.ts +3 -0
  230. package/five/controllers/events.d.ts +5 -3
  231. package/five/controllers/panorama.d.ts +2 -2
  232. package/five/controllers/vrPanorama.d.ts +56 -0
  233. package/five/controllers/xrPanorama.d.ts +506 -0
  234. package/five/core/internalWebGPURenderer.d.ts +23 -1
  235. package/five/core/panoVideo.d.ts +4 -1
  236. package/five/core/tiling.d.ts +40 -9
  237. package/five/core/webglAsyncReadFix.d.ts +25 -0
  238. package/five/gaussian-splatting/gpu-sort/prefixSumKernel.d.ts +65 -0
  239. package/five/gaussian-splatting/gpu-sort/radixSortModule.d.ts +128 -0
  240. package/five/gaussian-splatting/gpu-sort/shaders/radixHistogram.d.ts +2 -0
  241. package/five/gaussian-splatting/gpu-sort/shaders/radixReorder.d.ts +2 -0
  242. package/five/gaussian-splatting/gpu-sort/shaders/sortKeygen.d.ts +2 -0
  243. package/five/gaussian-splatting/gpu-sort/sortAdapter.d.ts +234 -0
  244. package/five/gaussian-splatting/layerRegistry.d.ts +17 -0
  245. package/five/gaussian-splatting/pipelines/cpuSortPipeline.d.ts +159 -0
  246. package/five/gaussian-splatting/pipelines/gpuSortPipeline.d.ts +98 -0
  247. package/five/gaussian-splatting/pipelines/gsplatPipeline.d.ts +104 -0
  248. package/five/gaussian-splatting/pipelines/pipelineMode.d.ts +42 -0
  249. package/five/gaussian-splatting/pipelines/sortThrottle.d.ts +45 -0
  250. package/five/gaussian-splatting/shStore.d.ts +22 -0
  251. package/five/gaussian-splatting/splatAssembler.d.ts +69 -0
  252. package/five/gaussian-splatting/transformStore.d.ts +37 -0
  253. package/five/gaussian-splatting/wasm/sort.d.ts +4 -3
  254. package/five/index.d.ts +8 -2
  255. package/five/index.js +403 -343
  256. package/five/index.mjs +9531 -4900
  257. package/five/meshes/panoCircleMeshCustom.d.ts +1 -0
  258. package/five/model/index.d.ts +3 -2
  259. package/five/model/loaders/spz.d.ts +50 -2
  260. package/five/model/materials/nodes/pbmMeshBasicNodeMaterial.d.ts +2 -0
  261. package/five/model/materials/nodes/pbmMeshPanoOnlyNodeMaterial.d.ts +2 -0
  262. package/five/model/materials/nodes/pbmMeshPhongNodeMaterial.d.ts +2 -0
  263. package/five/model/materials/nodes/pbmMeshPhysicalNodeMaterial.d.ts +2 -0
  264. package/five/model/materials/pbmGaussianSplattingNodeMaterial.d.ts +12 -5
  265. package/five/model/materials/pbmMaterial.d.ts +288 -6
  266. package/five/model/materials/pbmMeshMaterial.d.ts +0 -9
  267. package/five/model/materials/pbmPointCloudNodeMaterial.d.ts +1 -1
  268. package/five/model/materials/tsl/defines.d.ts +8 -2
  269. package/five/model/materials/tsl/outputBuilder.d.ts +8 -15
  270. package/five/model/materials/tsl/panoColor.d.ts +8 -2
  271. package/five/model/materials/tsl/utils.d.ts +13 -0
  272. package/five/model/objects/pbmGaussianSplattingObject.d.ts +30 -4
  273. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +113 -48
  274. package/five/model/objects/pbmPointCloud.d.ts +0 -1
  275. package/five/model/objects/pbmPointCloudObject.d.ts +1 -1
  276. package/five/model/parameter.d.ts +20 -5
  277. package/five/model/tile3d/index.d.ts +2 -0
  278. package/five/model/tile3d/tileset.d.ts +5 -0
  279. package/five/model/tile3d/trajectory-content.d.ts +53 -0
  280. package/five/renderer/compute-renderers/binned/binned-core.d.ts +46 -0
  281. package/five/renderer/compute-renderers/binned/binned-pipelines.d.ts +10 -0
  282. package/five/renderer/compute-renderers/binned/shaders/args-builder.d.ts +2 -0
  283. package/five/renderer/compute-renderers/binned/shaders/classify.d.ts +2 -0
  284. package/five/renderer/compute-renderers/binned/shaders/coop.d.ts +2 -0
  285. package/five/renderer/compute-renderers/pointcloud-compute-renderer.d.ts +14 -38
  286. package/five/renderer/compute-renderers/shaders/lib/color.d.ts +2 -0
  287. package/five/renderer/compute-renderers/shaders/lib/cull.d.ts +2 -0
  288. package/five/renderer/compute-renderers/shaders/lib/encode.d.ts +2 -0
  289. package/five/renderer/compute-renderers/shaders/lib/point-setup.d.ts +2 -0
  290. package/five/renderer/compute-renderers/shaders/lib/point-size.d.ts +2 -0
  291. package/five/renderer/compute-renderers/shaders/lib/raster.d.ts +2 -0
  292. package/five/renderer/compute-renderers/shaders/lib/size-class.d.ts +2 -0
  293. package/five/renderer/compute-renderers/shaders/lib/tile-bindings.d.ts +2 -0
  294. package/five/renderer/compute-renderers/uniform-layout.d.ts +23 -0
  295. package/five/renderer/five-renderer.d.ts +2 -0
  296. package/five/renderer/index.d.ts +1 -1
  297. package/five/renderer/postprocessing/index.d.ts +1 -1
  298. package/five/renderer/postprocessing/passes/flowing-fireworks-3d-pass.d.ts +23 -0
  299. package/five/renderer/postprocessing/passes/flowing-light-2d-pass.d.ts +2 -0
  300. package/five/renderer/postprocessing/passes/flowing-light-3d-pass.d.ts +23 -0
  301. package/five/renderer/postprocessing/passes/pass.js +255 -0
  302. package/five/renderer/postprocessing/passes/pass.mjs +255 -0
  303. package/five/renderer/tools/full-screen-quad.js +255 -0
  304. package/five/renderer/tools/full-screen-quad.mjs +255 -0
  305. package/five/texture/loader.d.ts +6 -0
  306. package/five/types/cube.d.ts +0 -1
  307. package/five/utils/calculateThreeMouse.js +255 -0
  308. package/five/utils/calculateThreeMouse.mjs +255 -0
  309. package/five/utils/detector.d.ts +11 -1
  310. package/five/utils/distance.js +255 -0
  311. package/five/utils/distance.mjs +255 -0
  312. package/five/utils/error.d.ts +1 -0
  313. package/five/utils/event.d.ts +26 -3
  314. package/five/utils/gainmap-data.d.ts +23 -0
  315. package/five/utils/isNil.js +255 -0
  316. package/five/utils/isNil.mjs +255 -0
  317. package/five/utils/ktx2.d.ts +3 -3
  318. package/five/utils/uuid.js +255 -0
  319. package/five/utils/uuid.mjs +255 -0
  320. package/five/webxr/XRControllerModelFactory.d.ts +55 -0
  321. package/five/webxr/buttonStateMachine.d.ts +31 -0
  322. package/five/webxr/deviceProfile.d.ts +70 -0
  323. package/five/webxr/inputSourceTracker.d.ts +59 -0
  324. package/five/webxr/referenceSpace.d.ts +60 -0
  325. package/five/webxr/renderTargetBridge.d.ts +45 -0
  326. package/five/webxr/xrButton.d.ts +4 -0
  327. package/five/webxr/xrManager.d.ts +174 -0
  328. package/five/work/index.d.ts +1 -1
  329. package/five/work/looseWorkType.d.ts +2 -1
  330. package/five/work/work.d.ts +30 -7
  331. package/five/work/workJsonType.d.ts +2 -1
  332. package/gltf-loader/gltf-object.d.ts +17 -0
  333. package/gltf-loader/index.d.ts +45 -0
  334. package/gltf-loader/index.js +255 -0
  335. package/gltf-loader/index.mjs +302 -0
  336. package/line/circle_png.d.ts +1 -0
  337. package/line/index.d.ts +49 -0
  338. package/line/index.js +255 -0
  339. package/line/index.mjs +340 -0
  340. package/llms.txt +1 -1
  341. package/package.json +34 -5
  342. package/plugins/BackgroundPlugin/Controller.d.ts +20 -0
  343. package/plugins/BackgroundPlugin/Controller.js +276 -0
  344. package/plugins/BackgroundPlugin/Controller.mjs +276 -0
  345. package/plugins/BackgroundPlugin/index.d.ts +5 -0
  346. package/plugins/BackgroundPlugin/index.js +255 -0
  347. package/plugins/BackgroundPlugin/index.mjs +255 -0
  348. package/plugins/BackgroundPlugin/typings.d.ts +44 -0
  349. package/plugins/BasePlugin/index.d.ts +1 -1
  350. package/plugins/BasePlugin/index.js +255 -0
  351. package/plugins/BasePlugin/index.mjs +255 -0
  352. package/plugins/CSS2DPlugin/Controller.d.ts +59 -0
  353. package/plugins/CSS2DPlugin/Controller.js +255 -0
  354. package/plugins/CSS2DPlugin/Controller.mjs +255 -0
  355. package/plugins/CSS2DPlugin/index.d.ts +5 -0
  356. package/plugins/CSS2DPlugin/index.js +255 -0
  357. package/plugins/CSS2DPlugin/index.mjs +255 -0
  358. package/plugins/CSS2DPlugin/style.css_raw.js +275 -0
  359. package/plugins/CSS2DPlugin/style.css_raw.mjs +275 -0
  360. package/plugins/CSS2DPlugin/typing.d.ts +31 -0
  361. package/plugins/CSS3DPlugin/Controller.d.ts +64 -0
  362. package/plugins/CSS3DPlugin/Controller.js +255 -0
  363. package/plugins/CSS3DPlugin/Controller.mjs +255 -0
  364. package/plugins/CSS3DPlugin/index.d.ts +5 -0
  365. package/plugins/CSS3DPlugin/index.js +255 -0
  366. package/plugins/CSS3DPlugin/index.mjs +255 -0
  367. package/plugins/CSS3DPlugin/style.css_raw.js +274 -0
  368. package/plugins/CSS3DPlugin/style.css_raw.mjs +274 -0
  369. package/plugins/CSS3DPlugin/typing.d.ts +33 -0
  370. package/plugins/FloorplanPlugin/Controller.d.ts +100 -0
  371. package/plugins/FloorplanPlugin/Controller.js +255 -0
  372. package/plugins/FloorplanPlugin/Controller.mjs +255 -0
  373. package/plugins/FloorplanPlugin/index.d.ts +6 -0
  374. package/plugins/FloorplanPlugin/index.js +255 -0
  375. package/plugins/FloorplanPlugin/index.mjs +255 -0
  376. package/plugins/FloorplanPlugin/render/assets.d.ts +9 -0
  377. package/plugins/FloorplanPlugin/render/assets.js +255 -0
  378. package/plugins/FloorplanPlugin/render/assets.mjs +255 -0
  379. package/plugins/FloorplanPlugin/render/index.d.ts +35 -0
  380. package/plugins/FloorplanPlugin/render/index.js +255 -0
  381. package/plugins/FloorplanPlugin/render/index.mjs +255 -0
  382. package/plugins/FloorplanPlugin/render/isPointInPolygon.d.ts +5 -0
  383. package/plugins/FloorplanPlugin/render/isPointInPolygon.js +255 -0
  384. package/plugins/FloorplanPlugin/render/isPointInPolygon.mjs +255 -0
  385. package/plugins/FloorplanPlugin/render/renderFloor.d.ts +22 -0
  386. package/plugins/FloorplanPlugin/render/renderFloor.js +255 -0
  387. package/plugins/FloorplanPlugin/render/renderFloor.mjs +255 -0
  388. package/plugins/FloorplanPlugin/render/roomLabelVisibility.d.ts +10 -0
  389. package/plugins/FloorplanPlugin/render/roomLabelVisibility.js +255 -0
  390. package/plugins/FloorplanPlugin/render/roomLabelVisibility.mjs +255 -0
  391. package/plugins/FloorplanPlugin/render/style.css_raw.js +585 -0
  392. package/plugins/FloorplanPlugin/render/style.css_raw.mjs +585 -0
  393. package/plugins/FloorplanPlugin/typing.d.ts +156 -0
  394. package/plugins/FloorplanPlugin/typings/floorplanData.d.ts +112 -0
  395. package/plugins/FloorplanPlugin/typings/floorplanJson.d.ts +167 -0
  396. package/plugins/FloorplanPlugin/typings/floorplanServerData.d.ts +78 -0
  397. package/plugins/FloorplanPlugin/typings/index.d.ts +3 -0
  398. package/plugins/FloorplanPlugin/utils/changeMode.d.ts +5 -0
  399. package/plugins/FloorplanPlugin/utils/changeMode.js +255 -0
  400. package/plugins/FloorplanPlugin/utils/changeMode.mjs +255 -0
  401. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.d.ts +6 -0
  402. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.js +255 -0
  403. package/plugins/FloorplanPlugin/utils/changeModelCanvasOpacity.mjs +255 -0
  404. package/plugins/FloorplanPlugin/utils/correctFiveState.d.ts +11 -0
  405. package/plugins/FloorplanPlugin/utils/correctFiveState.js +255 -0
  406. package/plugins/FloorplanPlugin/utils/correctFiveState.mjs +255 -0
  407. package/plugins/FloorplanPlugin/utils/equal.d.ts +9 -0
  408. package/plugins/FloorplanPlugin/utils/equal.js +255 -0
  409. package/plugins/FloorplanPlugin/utils/equal.mjs +255 -0
  410. package/plugins/FloorplanPlugin/utils/filter.d.ts +8 -0
  411. package/plugins/FloorplanPlugin/utils/filter.js +255 -0
  412. package/plugins/FloorplanPlugin/utils/filter.mjs +255 -0
  413. package/plugins/FloorplanPlugin/utils/fiveModelLoad.d.ts +6 -0
  414. package/plugins/FloorplanPlugin/utils/fiveModelLoad.js +255 -0
  415. package/plugins/FloorplanPlugin/utils/fiveModelLoad.mjs +255 -0
  416. package/plugins/FloorplanPlugin/utils/formatData.d.ts +6 -0
  417. package/plugins/FloorplanPlugin/utils/formatData.js +255 -0
  418. package/plugins/FloorplanPlugin/utils/formatData.mjs +255 -0
  419. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.d.ts +20 -0
  420. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.js +255 -0
  421. package/plugins/FloorplanPlugin/utils/formatFloorplanJson.mjs +255 -0
  422. package/plugins/FloorplanPlugin/utils/formatPosition.d.ts +33 -0
  423. package/plugins/FloorplanPlugin/utils/formatPosition.js +255 -0
  424. package/plugins/FloorplanPlugin/utils/formatPosition.mjs +255 -0
  425. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.d.ts +6 -0
  426. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.js +255 -0
  427. package/plugins/FloorplanPlugin/utils/getDistanceFromModel.mjs +255 -0
  428. package/plugins/FloorplanPlugin/utils/getPxmm.d.ts +19 -0
  429. package/plugins/FloorplanPlugin/utils/getPxmm.js +255 -0
  430. package/plugins/FloorplanPlugin/utils/getPxmm.mjs +255 -0
  431. package/plugins/FloorplanPlugin/utils/isTruelyObject.d.ts +4 -0
  432. package/plugins/FloorplanPlugin/utils/isTruelyObject.js +255 -0
  433. package/plugins/FloorplanPlugin/utils/isTruelyObject.mjs +255 -0
  434. package/plugins/FloorplanPlugin/utils/nearlyEqual.d.ts +8 -0
  435. package/plugins/FloorplanPlugin/utils/nearlyEqual.js +255 -0
  436. package/plugins/FloorplanPlugin/utils/nearlyEqual.mjs +255 -0
  437. package/plugins/FloorplanPlugin/utils/polylabel.d.ts +8 -0
  438. package/plugins/FloorplanPlugin/utils/polylabel.js +255 -0
  439. package/plugins/FloorplanPlugin/utils/polylabel.mjs +255 -0
  440. package/plugins/FloorplanPlugin/utils/to.d.ts +5 -0
  441. package/plugins/FloorplanPlugin/utils/to.js +255 -0
  442. package/plugins/FloorplanPlugin/utils/to.mjs +255 -0
  443. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.d.ts +1 -1
  444. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.js +255 -0
  445. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.mjs +255 -0
  446. package/plugins/GaussianSplattingEntranceAnimationPlugin/index.d.ts +1 -1
  447. package/plugins/GaussianSplattingEntranceAnimationPlugin/index.js +255 -0
  448. package/plugins/GaussianSplattingEntranceAnimationPlugin/index.mjs +255 -0
  449. package/plugins/Object3DHelperPlugin/Controller.d.ts +99 -0
  450. package/plugins/Object3DHelperPlugin/Controller.js +255 -0
  451. package/plugins/Object3DHelperPlugin/Controller.mjs +255 -0
  452. package/plugins/Object3DHelperPlugin/Controllers/BaseController.d.ts +139 -0
  453. package/plugins/Object3DHelperPlugin/Controllers/BaseController.js +255 -0
  454. package/plugins/Object3DHelperPlugin/Controllers/BaseController.mjs +255 -0
  455. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.d.ts +16 -0
  456. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.js +255 -0
  457. package/plugins/Object3DHelperPlugin/Controllers/BoundingBoxController.mjs +255 -0
  458. package/plugins/Object3DHelperPlugin/Controllers/MoveController.d.ts +66 -0
  459. package/plugins/Object3DHelperPlugin/Controllers/MoveController.js +255 -0
  460. package/plugins/Object3DHelperPlugin/Controllers/MoveController.mjs +255 -0
  461. package/plugins/Object3DHelperPlugin/Controllers/RotateController.d.ts +61 -0
  462. package/plugins/Object3DHelperPlugin/Controllers/RotateController.js +255 -0
  463. package/plugins/Object3DHelperPlugin/Controllers/RotateController.mjs +255 -0
  464. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.d.ts +17 -0
  465. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.js +255 -0
  466. package/plugins/Object3DHelperPlugin/FiveControllerWrapper.mjs +255 -0
  467. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.d.ts +97 -0
  468. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.js +255 -0
  469. package/plugins/Object3DHelperPlugin/Helper/BaseHelper.mjs +255 -0
  470. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.d.ts +16 -0
  471. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.js +255 -0
  472. package/plugins/Object3DHelperPlugin/Helper/BoundingBoxHelper.mjs +255 -0
  473. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.d.ts +37 -0
  474. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.js +255 -0
  475. package/plugins/Object3DHelperPlugin/Helper/MoveHelper.mjs +255 -0
  476. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.d.ts +93 -0
  477. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.js +255 -0
  478. package/plugins/Object3DHelperPlugin/Helper/RotateHelper.mjs +255 -0
  479. package/plugins/Object3DHelperPlugin/constant.d.ts +27 -0
  480. package/plugins/Object3DHelperPlugin/constant.js +255 -0
  481. package/plugins/Object3DHelperPlugin/constant.mjs +255 -0
  482. package/plugins/Object3DHelperPlugin/index.d.ts +6 -0
  483. package/plugins/Object3DHelperPlugin/index.js +255 -0
  484. package/plugins/Object3DHelperPlugin/index.mjs +255 -0
  485. package/plugins/Object3DHelperPlugin/typing.d.ts +143 -0
  486. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.d.ts +22 -0
  487. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.js +255 -0
  488. package/plugins/Object3DHelperPlugin/utils/ArrowGroup.mjs +255 -0
  489. package/plugins/Object3DHelperPlugin/utils/CenterHandle.d.ts +23 -0
  490. package/plugins/Object3DHelperPlugin/utils/CenterHandle.js +255 -0
  491. package/plugins/Object3DHelperPlugin/utils/CenterHandle.mjs +255 -0
  492. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.d.ts +19 -0
  493. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.js +255 -0
  494. package/plugins/Object3DHelperPlugin/utils/PlaneHandle.mjs +255 -0
  495. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.d.ts +5 -0
  496. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.js +255 -0
  497. package/plugins/Object3DHelperPlugin/utils/calculateScaleByCamera.mjs +255 -0
  498. package/plugins/Object3DHelperPlugin/utils/cameraHooks.d.ts +3 -0
  499. package/plugins/Object3DHelperPlugin/utils/cameraHooks.js +255 -0
  500. package/plugins/Object3DHelperPlugin/utils/cameraHooks.mjs +255 -0
  501. package/plugins/Object3DHelperPlugin/utils/direction.d.ts +14 -0
  502. package/plugins/Object3DHelperPlugin/utils/direction.js +255 -0
  503. package/plugins/Object3DHelperPlugin/utils/direction.mjs +255 -0
  504. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.d.ts +5 -0
  505. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.js +255 -0
  506. package/plugins/Object3DHelperPlugin/utils/getMouseRaycaster.mjs +255 -0
  507. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.d.ts +8 -0
  508. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.js +255 -0
  509. package/plugins/Object3DHelperPlugin/utils/getOrthographicCameraDirection.mjs +255 -0
  510. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.d.ts +8 -0
  511. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.js +255 -0
  512. package/plugins/Object3DHelperPlugin/utils/setObjectQuaternion.mjs +255 -0
  513. package/plugins/Object3DHelperPlugin/utils/solidGuide.d.ts +27 -0
  514. package/plugins/Object3DHelperPlugin/utils/solidGuide.js +255 -0
  515. package/plugins/Object3DHelperPlugin/utils/solidGuide.mjs +255 -0
  516. package/plugins/Object3DHelperPlugin/utils/tipsDom.d.ts +8 -0
  517. package/plugins/Object3DHelperPlugin/utils/tipsDom.js +255 -0
  518. package/plugins/Object3DHelperPlugin/utils/tipsDom.mjs +255 -0
  519. package/plugins/PanoAnimePlugin/Controller.d.ts +49 -0
  520. package/plugins/PanoAnimePlugin/Controller.js +255 -0
  521. package/plugins/PanoAnimePlugin/Controller.mjs +255 -0
  522. package/plugins/PanoAnimePlugin/index.d.ts +5 -0
  523. package/plugins/PanoAnimePlugin/index.js +255 -0
  524. package/plugins/PanoAnimePlugin/index.mjs +255 -0
  525. package/plugins/PanoAnimePlugin/typing.d.ts +37 -0
  526. package/plugins/WordPassPlugin/Controller.d.ts +62 -0
  527. package/plugins/WordPassPlugin/Controller.js +255 -0
  528. package/plugins/WordPassPlugin/Controller.mjs +255 -0
  529. package/plugins/WordPassPlugin/hersheyFont.d.ts +11 -0
  530. package/plugins/WordPassPlugin/hersheyFont.js +255 -0
  531. package/plugins/WordPassPlugin/hersheyFont.mjs +255 -0
  532. package/plugins/WordPassPlugin/index.d.ts +7 -0
  533. package/plugins/WordPassPlugin/index.js +255 -0
  534. package/plugins/WordPassPlugin/index.mjs +255 -0
  535. package/plugins/WordPassPlugin/textToStrokeOrderStrokes.d.ts +82 -0
  536. package/plugins/WordPassPlugin/textToStrokeOrderStrokes.js +256 -0
  537. package/plugins/WordPassPlugin/textToStrokeOrderStrokes.mjs +256 -0
  538. package/plugins/WordPassPlugin/typing.d.ts +109 -0
  539. package/plugins/WordPassPlugin/word-pass.d.ts +172 -0
  540. package/plugins/WordPassPlugin/word-pass.js +255 -0
  541. package/plugins/WordPassPlugin/word-pass.mjs +255 -0
  542. package/plugins/index.d.ts +8 -0
  543. package/plugins/index.js +3 -3
  544. package/plugins/index.mjs +3 -287
  545. package/plugins/thirdParty/CSS2DRenderer.d.ts +37 -0
  546. package/plugins/thirdParty/CSS2DRenderer.js +255 -0
  547. package/plugins/thirdParty/CSS2DRenderer.mjs +255 -0
  548. package/plugins/thirdParty/CSS3DRenderer.d.ts +45 -0
  549. package/plugins/thirdParty/CSS3DRenderer.js +255 -0
  550. package/plugins/thirdParty/CSS3DRenderer.mjs +255 -0
  551. package/plugins/thirdParty/OrbitControls.d.ts +78 -0
  552. package/plugins/thirdParty/doctorstrange-model.d.ts +92 -0
  553. package/plugins/thirdParty/doctorstrange-model.js +610 -0
  554. package/plugins/thirdParty/doctorstrange-model.mjs +610 -0
  555. package/plugins/thirdParty/domevents.d.ts +36 -0
  556. package/plugins/thirdParty/domevents.js +255 -0
  557. package/plugins/thirdParty/domevents.mjs +255 -0
  558. package/plugins/utils/absoluteUrl.js +255 -0
  559. package/plugins/utils/absoluteUrl.mjs +255 -0
  560. package/plugins/utils/calculatePath.d.ts +3 -0
  561. package/plugins/utils/calculatePath.js +255 -0
  562. package/plugins/utils/calculatePath.mjs +255 -0
  563. package/plugins/utils/clamp.d.ts +2 -0
  564. package/plugins/utils/clamp.js +255 -0
  565. package/plugins/utils/clamp.mjs +255 -0
  566. package/plugins/utils/uuid.d.ts +2 -0
  567. package/plugins/utils/uuid.js +255 -0
  568. package/plugins/utils/uuid.mjs +255 -0
  569. package/react/context.d.ts +1 -1
  570. package/react/createProvider.d.ts +1 -1
  571. package/react/fiveApp.d.ts +1 -1
  572. package/react/hooks/unsafe__useFiveInstance.d.ts +1 -1
  573. package/react/hooks/useFiveAction.d.ts +1 -1
  574. package/react/hooks/useFiveCurrentObserver.d.ts +1 -1
  575. package/react/hooks/useFiveCurrentState.d.ts +1 -1
  576. package/react/hooks/useFiveEventCallback.d.ts +1 -1
  577. package/react/hooks/useFiveModelEffect.d.ts +1 -1
  578. package/react/hooks/useFiveModelIntersectRaycaster.d.ts +1 -1
  579. package/react/hooks/useFivePlugin.d.ts +1 -1
  580. package/react/hooks/useFiveSceneEffect.d.ts +1 -1
  581. package/react/hooks/useFiveState.d.ts +1 -1
  582. package/react/hooks/useFiveWork.d.ts +1 -1
  583. package/react/index.js +3 -3
  584. package/react/index.mjs +3 -3
  585. package/react/withFive.d.ts +1 -1
  586. package/sticker/geometry.d.ts +3 -0
  587. package/sticker/index.d.ts +68 -0
  588. package/sticker/index.js +255 -0
  589. package/sticker/index.mjs +358 -0
  590. package/umd/five-gltf-loader.js +255 -0
  591. package/umd/five-line.js +322 -0
  592. package/umd/five-plugins.js +817 -3
  593. package/umd/five-react.js +3 -3
  594. package/umd/five-sticker.js +255 -0
  595. package/umd/five-vfx.js +323 -0
  596. package/umd/five.js +472 -412
  597. package/vfx/airflow/airflow.d.ts +18 -0
  598. package/vfx/common/simplex-noise.d.ts +2 -0
  599. package/vfx/frame/frame.d.ts +27 -0
  600. package/vfx/index.d.ts +7 -0
  601. package/vfx/index.js +255 -0
  602. package/vfx/index.mjs +738 -0
  603. package/vfx/particle/instance.d.ts +36 -0
  604. package/vfx/particle/particle.d.ts +119 -0
  605. package/vfx/particle/utils.d.ts +11 -0
  606. package/vfx/particle-gpu/particle.d.ts +75 -0
  607. package/vfx/particle-gpu/utils.d.ts +11 -0
  608. package/vfx/spotLight/spotLight.d.ts +15 -0
  609. package/work-downloader/components/model-3d-tile.d.ts +2 -0
  610. package/work-downloader/components/model.d.ts +3 -0
  611. package/work-downloader/components/observer.d.ts +9 -0
  612. package/work-downloader/download.d.ts +16 -0
  613. package/work-downloader/index.d.ts +2 -0
  614. package/work-downloader/index.js +255 -0
  615. package/work-downloader/index.mjs +595 -0
  616. package/work-downloader/type.d.ts +28 -0
  617. package/work-downloader/utils/download-to-file.d.ts +1 -0
  618. package/work-downloader/utils/image-processing.d.ts +7 -0
  619. package/work-downloader/utils/join-url.d.ts +2 -0
  620. package/work-downloader/utils/log.d.ts +1 -0
  621. package/work-downloader/utils/relative-url.d.ts +1 -0
  622. package/docs/interfaces/index.PBMHDRConfig.html +0 -12
  623. package/five/gaussian-splatting/util/renderData.d.ts +0 -66
  624. package/five/gaussian-splatting/worker/dataWorker.d.ts +0 -1
  625. package/five/three-version-check.d.ts +0 -1
  626. package/five/utils/hdr-data.d.ts +0 -13
  627. package/five/utils/shaderContentFix.d.ts +0 -7
  628. /package/five/{renderer/compute-renderers/shaders/rasterize.d.ts → gaussian-splatting/gpu-sort/shaders/prefixSum.d.ts} +0 -0
@@ -39,7 +39,7 @@
39
39
  <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>
40
40
  <h3 id="放大镜-magnifier" class="tsd-anchor-link">放大镜 (Magnifier)<a href="#放大镜-magnifier" 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>
41
41
  <p>这是一个经典的放大镜实现示例。通过获取鼠标周围的像素,并以更高的 <code>pixelRatio</code> 重新渲染,从而获得清晰的放大效果。</p>
42
- <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">&#39;three&#39;</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">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 假设有一个用于显示的 canvas</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">magnifierCanvas</span><span class="hl-1"> = </span><span class="hl-6">document</span><span class="hl-1">.</span><span class="hl-5">getElementById</span><span class="hl-1">(</span><span class="hl-9">&#39;magnifier-canvas&#39;</span><span class="hl-1">) </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-7">HTMLCanvasElement</span><span class="hl-1">;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">ctx</span><span class="hl-1"> = </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-5">getContext</span><span class="hl-1">(</span><span class="hl-9">&#39;2d&#39;</span><span class="hl-1">)!;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">magnifierSize</span><span class="hl-1"> = </span><span class="hl-11">200</span><span class="hl-1">; </span><span class="hl-8">// 放大镜尺寸 200px</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">scale</span><span class="hl-1"> = </span><span class="hl-11">2</span><span class="hl-1">; </span><span class="hl-8">// 放大倍数</span><br/><br/><span class="hl-8">// 预先创建 Buffer 以提升性能</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">pixelWidth</span><span class="hl-1"> = </span><span class="hl-6">magnifierSize</span><span class="hl-1"> * </span><span class="hl-6">scale</span><span class="hl-1">;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">pixelHeight</span><span class="hl-1"> = </span><span class="hl-6">magnifierSize</span><span class="hl-1"> * </span><span class="hl-6">scale</span><span class="hl-1">;</span><br/><span class="hl-3">let</span><span class="hl-1"> </span><span class="hl-6">magnifierImageData</span><span class="hl-1"> = </span><span class="hl-6">ctx</span><span class="hl-1">.</span><span class="hl-5">createImageData</span><span class="hl-1">(</span><span class="hl-6">pixelWidth</span><span class="hl-1">, </span><span class="hl-6">pixelHeight</span><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">&#39;gesture.mousemove&#39;</span><span class="hl-1">, (</span><span class="hl-6">event</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">// 1. 获取鼠标在 Canvas 上的坐标</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">mouse</span><span class="hl-1"> = </span><span class="hl-6">event</span><span class="hl-1">.</span><span class="hl-6">pointers</span><span class="hl-1">[</span><span class="hl-11">0</span><span class="hl-1">]?.</span><span class="hl-6">coords</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-10">if</span><span class="hl-1"> (!</span><span class="hl-6">mouse</span><span class="hl-1">) </span><span class="hl-10">return</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 转换归一化坐标 (-1 到 1) 到 像素坐标</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">renderSize</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">getSize</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">Vector2</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">x</span><span class="hl-1"> = (</span><span class="hl-6">mouse</span><span class="hl-1">.</span><span class="hl-6">x</span><span class="hl-1"> + </span><span class="hl-11">1</span><span class="hl-1">) / </span><span class="hl-11">2</span><span class="hl-1"> * </span><span class="hl-6">renderSize</span><span class="hl-1">.</span><span class="hl-6">x</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">y</span><span class="hl-1"> = (</span><span class="hl-6">mouse</span><span class="hl-1">.</span><span class="hl-6">y</span><span class="hl-1"> + </span><span class="hl-11">1</span><span class="hl-1">) / </span><span class="hl-11">2</span><span class="hl-1"> * </span><span class="hl-6">renderSize</span><span class="hl-1">.</span><span class="hl-6">y</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 2. 获取像素数据</span><br/><span class="hl-1"> </span><span class="hl-8">// 注意:我们以更高的分辨率 (pixelRatio * scale) 渲染小区域,从而获得“无损”放大效果</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">pixelRatio</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">renderer</span><span class="hl-1">?.</span><span class="hl-5">getPixelRatio</span><span class="hl-1">() ?? </span><span class="hl-11">1</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">targetPixelRatio</span><span class="hl-1"> = </span><span class="hl-6">Math</span><span class="hl-1">.</span><span class="hl-5">ceil</span><span class="hl-1">(</span><span class="hl-6">pixelRatio</span><span class="hl-1"> * </span><span class="hl-6">scale</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">getPixels</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">x:</span><span class="hl-1"> </span><span class="hl-6">x</span><span class="hl-1"> - </span><span class="hl-6">magnifierSize</span><span class="hl-1"> / </span><span class="hl-11">2</span><span class="hl-1">, </span><span class="hl-8">// 居中</span><br/><span class="hl-1"> </span><span class="hl-6">y:</span><span class="hl-1"> </span><span class="hl-6">y</span><span class="hl-1"> - </span><span class="hl-6">magnifierSize</span><span class="hl-1"> / </span><span class="hl-11">2</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">width:</span><span class="hl-1"> </span><span class="hl-6">magnifierSize</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">height:</span><span class="hl-1"> </span><span class="hl-6">magnifierSize</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">pixelRatio:</span><span class="hl-1"> </span><span class="hl-6">targetPixelRatio</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">flipY:</span><span class="hl-1"> </span><span class="hl-3">true</span><span class="hl-1">, </span><span class="hl-8">// 翻转以适配 Canvas 2D</span><br/><span class="hl-1"> </span><span class="hl-6">buffer:</span><span class="hl-1"> </span><span class="hl-6">magnifierImageData</span><span class="hl-1">.</span><span class="hl-6">data</span><span class="hl-1">, </span><span class="hl-8">// 复用 buffer</span><br/><span class="hl-1"> </span><span class="hl-6">helperVisible:</span><span class="hl-1"> </span><span class="hl-3">false</span><span class="hl-1">, </span><span class="hl-8">// 隐藏辅助线等干扰元素</span><br/><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 3. 将数据绘制到放大镜 Canvas 上</span><br/><span class="hl-1"> </span><span class="hl-8">// 需要调整 Canvas 尺寸以匹配数据</span><br/><span class="hl-1"> </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-6">width</span><span class="hl-1"> = </span><span class="hl-6">pixelWidth</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-6">height</span><span class="hl-1"> = </span><span class="hl-6">pixelHeight</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">ctx</span><span class="hl-1">.</span><span class="hl-5">putImageData</span><span class="hl-1">(</span><span class="hl-6">magnifierImageData</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 4. 更新放大镜位置 (CSS)</span><br/><span class="hl-1"> </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-6">style</span><span class="hl-1">.</span><span class="hl-6">left</span><span class="hl-1"> = </span><span class="hl-9">`</span><span class="hl-3">${</span><span class="hl-6">x</span><span class="hl-12"> </span><span class="hl-1">-</span><span class="hl-12"> </span><span class="hl-6">magnifierSize</span><span class="hl-12"> </span><span class="hl-1">/</span><span class="hl-12"> </span><span class="hl-11">2</span><span class="hl-3">}</span><span class="hl-9">px`</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-6">style</span><span class="hl-1">.</span><span class="hl-6">top</span><span class="hl-1"> = </span><span class="hl-9">`</span><span class="hl-3">${</span><span class="hl-6">renderSize</span><span class="hl-12">.</span><span class="hl-6">y</span><span class="hl-12"> </span><span class="hl-1">-</span><span class="hl-12"> </span><span class="hl-6">y</span><span class="hl-12"> </span><span class="hl-1">-</span><span class="hl-12"> </span><span class="hl-6">magnifierSize</span><span class="hl-12"> </span><span class="hl-1">/</span><span class="hl-12"> </span><span class="hl-11">2</span><span class="hl-3">}</span><span class="hl-9">px`</span><span class="hl-1">; </span><span class="hl-8">// 注意 Y 轴方向</span><br/><span class="hl-1">});</span>
42
+ <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">&#39;three&#39;</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">&#39;@realsee/five-webgpu&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 假设有一个用于显示的 canvas</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">magnifierCanvas</span><span class="hl-1"> = </span><span class="hl-6">document</span><span class="hl-1">.</span><span class="hl-5">getElementById</span><span class="hl-1">(</span><span class="hl-9">&#39;magnifier-canvas&#39;</span><span class="hl-1">) </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-7">HTMLCanvasElement</span><span class="hl-1">;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">ctx</span><span class="hl-1"> = </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-5">getContext</span><span class="hl-1">(</span><span class="hl-9">&#39;2d&#39;</span><span class="hl-1">)!;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">magnifierSize</span><span class="hl-1"> = </span><span class="hl-11">200</span><span class="hl-1">; </span><span class="hl-8">// 放大镜尺寸 200px</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">scale</span><span class="hl-1"> = </span><span class="hl-11">2</span><span class="hl-1">; </span><span class="hl-8">// 放大倍数</span><br/><br/><span class="hl-8">// 预先创建 Buffer 以提升性能</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">pixelWidth</span><span class="hl-1"> = </span><span class="hl-6">magnifierSize</span><span class="hl-1"> * </span><span class="hl-6">scale</span><span class="hl-1">;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">pixelHeight</span><span class="hl-1"> = </span><span class="hl-6">magnifierSize</span><span class="hl-1"> * </span><span class="hl-6">scale</span><span class="hl-1">;</span><br/><span class="hl-3">let</span><span class="hl-1"> </span><span class="hl-6">magnifierImageData</span><span class="hl-1"> = </span><span class="hl-6">ctx</span><span class="hl-1">.</span><span class="hl-5">createImageData</span><span class="hl-1">(</span><span class="hl-6">pixelWidth</span><span class="hl-1">, </span><span class="hl-6">pixelHeight</span><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">&#39;gesture.mousemove&#39;</span><span class="hl-1">, (</span><span class="hl-6">event</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">// 1. 获取鼠标在 Canvas 上的坐标</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">mouse</span><span class="hl-1"> = </span><span class="hl-6">event</span><span class="hl-1">.</span><span class="hl-6">pointers</span><span class="hl-1">[</span><span class="hl-11">0</span><span class="hl-1">]?.</span><span class="hl-6">coords</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-10">if</span><span class="hl-1"> (!</span><span class="hl-6">mouse</span><span class="hl-1">) </span><span class="hl-10">return</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 转换归一化坐标 (-1 到 1) 到 像素坐标</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">renderSize</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">getSize</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">Vector2</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">x</span><span class="hl-1"> = (</span><span class="hl-6">mouse</span><span class="hl-1">.</span><span class="hl-6">x</span><span class="hl-1"> + </span><span class="hl-11">1</span><span class="hl-1">) / </span><span class="hl-11">2</span><span class="hl-1"> * </span><span class="hl-6">renderSize</span><span class="hl-1">.</span><span class="hl-6">x</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">y</span><span class="hl-1"> = (</span><span class="hl-6">mouse</span><span class="hl-1">.</span><span class="hl-6">y</span><span class="hl-1"> + </span><span class="hl-11">1</span><span class="hl-1">) / </span><span class="hl-11">2</span><span class="hl-1"> * </span><span class="hl-6">renderSize</span><span class="hl-1">.</span><span class="hl-6">y</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 2. 获取像素数据</span><br/><span class="hl-1"> </span><span class="hl-8">// 注意:我们以更高的分辨率 (pixelRatio * scale) 渲染小区域,从而获得“无损”放大效果</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">pixelRatio</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">renderer</span><span class="hl-1">?.</span><span class="hl-5">getPixelRatio</span><span class="hl-1">() ?? </span><span class="hl-11">1</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">targetPixelRatio</span><span class="hl-1"> = </span><span class="hl-6">Math</span><span class="hl-1">.</span><span class="hl-5">ceil</span><span class="hl-1">(</span><span class="hl-6">pixelRatio</span><span class="hl-1"> * </span><span class="hl-6">scale</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">getPixels</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">x:</span><span class="hl-1"> </span><span class="hl-6">x</span><span class="hl-1"> - </span><span class="hl-6">magnifierSize</span><span class="hl-1"> / </span><span class="hl-11">2</span><span class="hl-1">, </span><span class="hl-8">// 居中</span><br/><span class="hl-1"> </span><span class="hl-6">y:</span><span class="hl-1"> </span><span class="hl-6">y</span><span class="hl-1"> - </span><span class="hl-6">magnifierSize</span><span class="hl-1"> / </span><span class="hl-11">2</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">width:</span><span class="hl-1"> </span><span class="hl-6">magnifierSize</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">height:</span><span class="hl-1"> </span><span class="hl-6">magnifierSize</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">pixelRatio:</span><span class="hl-1"> </span><span class="hl-6">targetPixelRatio</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">flipY:</span><span class="hl-1"> </span><span class="hl-3">true</span><span class="hl-1">, </span><span class="hl-8">// 翻转以适配 Canvas 2D</span><br/><span class="hl-1"> </span><span class="hl-6">buffer:</span><span class="hl-1"> </span><span class="hl-6">magnifierImageData</span><span class="hl-1">.</span><span class="hl-6">data</span><span class="hl-1">, </span><span class="hl-8">// 复用 buffer</span><br/><span class="hl-1"> </span><span class="hl-6">helperVisible:</span><span class="hl-1"> </span><span class="hl-3">false</span><span class="hl-1">, </span><span class="hl-8">// 隐藏辅助线等干扰元素</span><br/><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 3. 将数据绘制到放大镜 Canvas 上</span><br/><span class="hl-1"> </span><span class="hl-8">// 需要调整 Canvas 尺寸以匹配数据</span><br/><span class="hl-1"> </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-6">width</span><span class="hl-1"> = </span><span class="hl-6">pixelWidth</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-6">height</span><span class="hl-1"> = </span><span class="hl-6">pixelHeight</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">ctx</span><span class="hl-1">.</span><span class="hl-5">putImageData</span><span class="hl-1">(</span><span class="hl-6">magnifierImageData</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 4. 更新放大镜位置 (CSS)</span><br/><span class="hl-1"> </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-6">style</span><span class="hl-1">.</span><span class="hl-6">left</span><span class="hl-1"> = </span><span class="hl-9">`</span><span class="hl-3">${</span><span class="hl-6">x</span><span class="hl-12"> </span><span class="hl-1">-</span><span class="hl-12"> </span><span class="hl-6">magnifierSize</span><span class="hl-12"> </span><span class="hl-1">/</span><span class="hl-12"> </span><span class="hl-11">2</span><span class="hl-3">}</span><span class="hl-9">px`</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">magnifierCanvas</span><span class="hl-1">.</span><span class="hl-6">style</span><span class="hl-1">.</span><span class="hl-6">top</span><span class="hl-1"> = </span><span class="hl-9">`</span><span class="hl-3">${</span><span class="hl-6">renderSize</span><span class="hl-12">.</span><span class="hl-6">y</span><span class="hl-12"> </span><span class="hl-1">-</span><span class="hl-12"> </span><span class="hl-6">y</span><span class="hl-12"> </span><span class="hl-1">-</span><span class="hl-12"> </span><span class="hl-6">magnifierSize</span><span class="hl-12"> </span><span class="hl-1">/</span><span class="hl-12"> </span><span class="hl-11">2</span><span class="hl-3">}</span><span class="hl-9">px`</span><span class="hl-1">; </span><span class="hl-8">// 注意 Y 轴方向</span><br/><span class="hl-1">});</span>
43
43
  </code><button type="button">Copy</button></pre>
44
44
 
45
45
  <h3 id="获取中心点颜色-color-picker" class="tsd-anchor-link">获取中心点颜色 (Color Picker)<a href="#获取中心点颜色-color-picker" 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>
@@ -84,17 +84,17 @@
84
84
  <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>
85
85
  <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>
86
86
  <p>启用 AVIF 格式并设置初始尺寸为 <code>512</code>,适用于大多数场景。</p>
87
- <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&quot;</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">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">format:</span><span class="hl-1"> </span><span class="hl-9">&quot;avif&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">size:</span><span class="hl-1"> </span><span class="hl-11">512</span><span class="hl-1">,</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
87
+ <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-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">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">format:</span><span class="hl-1"> </span><span class="hl-9">&quot;avif&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">size:</span><span class="hl-1"> </span><span class="hl-11">512</span><span class="hl-1">,</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
88
88
  </code><button type="button">Copy</button></pre>
89
89
 
90
90
  <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>
91
91
  <p>将数据中的 <code>custom-oss-public.ljcdn.com</code> 域名映射到对应的资源专用 OSS 域名。</p>
92
- <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&quot;</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">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">mappings:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-9">&quot;custom-oss-public.ljcdn.com&quot;</span><span class="hl-6">:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">type:</span><span class="hl-1"> </span><span class="hl-9">&quot;tencentCloud&quot;</span><span class="hl-1">, </span><span class="hl-8">// 指定使用腾讯云图片处理协议</span><br/><span class="hl-1"> </span><span class="hl-6">pano:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-image-1.com&quot;</span><span class="hl-1">, </span><span class="hl-9">&quot;custom-oss-image-2.com&quot;</span><span class="hl-1">], </span><span class="hl-8">// 双域名负载均衡</span><br/><span class="hl-1"> </span><span class="hl-6">tile:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-tile-1.com&quot;</span><span class="hl-1">, </span><span class="hl-9">&quot;custom-oss-tile-2.com&quot;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">model:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-model-1.com&quot;</span><span class="hl-1">, </span><span class="hl-9">&quot;custom-oss-model-2.com&quot;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">texture:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-image-3.com&quot;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">default:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-image-4.com&quot;</span><span class="hl-1">]</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
92
+ <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-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">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">mappings:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-9">&quot;custom-oss-public.ljcdn.com&quot;</span><span class="hl-6">:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">type:</span><span class="hl-1"> </span><span class="hl-9">&quot;tencentCloud&quot;</span><span class="hl-1">, </span><span class="hl-8">// 指定使用腾讯云图片处理协议</span><br/><span class="hl-1"> </span><span class="hl-6">pano:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-image-1.com&quot;</span><span class="hl-1">, </span><span class="hl-9">&quot;custom-oss-image-2.com&quot;</span><span class="hl-1">], </span><span class="hl-8">// 双域名负载均衡</span><br/><span class="hl-1"> </span><span class="hl-6">tile:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-tile-1.com&quot;</span><span class="hl-1">, </span><span class="hl-9">&quot;custom-oss-tile-2.com&quot;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">model:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-model-1.com&quot;</span><span class="hl-1">, </span><span class="hl-9">&quot;custom-oss-model-2.com&quot;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">texture:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-image-3.com&quot;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">default:</span><span class="hl-1"> [</span><span class="hl-9">&quot;custom-oss-image-4.com&quot;</span><span class="hl-1">]</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
93
93
  </code><button type="button">Copy</button></pre>
94
94
 
95
95
  <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>
96
96
  <p>使用 SDK 提供的 <code>defaultImageURLTransform</code> 工具函数(通常导出为 <code>defaultImageURLTransform</code>,可重命名为 <code>imageURL</code>),结合 <code>cut</code> 参数获取全景图特定区域(例如获取前方图片的中心 512x512 区域)。</p>
97
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">defaultImageURLTransform</span><span class="hl-1"> </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-6">imageURL</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;@realsee/five&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">originalUrl</span><span class="hl-1"> = </span><span class="hl-9">&quot;https://vr-public.realsee-cdn.com/.../pano_f.jpg&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">cutUrl</span><span class="hl-1"> = </span><span class="hl-5">imageURL</span><span class="hl-1">(</span><span class="hl-6">originalUrl</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">cut:</span><span class="hl-1"> [</span><span class="hl-11">256</span><span class="hl-1">, </span><span class="hl-11">256</span><span class="hl-1">, </span><span class="hl-11">512</span><span class="hl-1">, </span><span class="hl-11">512</span><span class="hl-1">], </span><span class="hl-8">// x, y, width, height</span><br/><span class="hl-1"> </span><span class="hl-6">format:</span><span class="hl-1"> </span><span class="hl-9">&quot;webp&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">quality:</span><span class="hl-1"> </span><span class="hl-11">80</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><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-6">cutUrl</span><span class="hl-1">);</span><br/><span class="hl-8">// 输出示例: https://vr-image-4.realsee-cdn.com/.../pano_f.jpg?imageMogr2/format/webp/cut/512x512x256x256/quality/80</span>
97
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">defaultImageURLTransform</span><span class="hl-1"> </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-6">imageURL</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">originalUrl</span><span class="hl-1"> = </span><span class="hl-9">&quot;https://vr-public.realsee-cdn.com/.../pano_f.jpg&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">cutUrl</span><span class="hl-1"> = </span><span class="hl-5">imageURL</span><span class="hl-1">(</span><span class="hl-6">originalUrl</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">cut:</span><span class="hl-1"> [</span><span class="hl-11">256</span><span class="hl-1">, </span><span class="hl-11">256</span><span class="hl-1">, </span><span class="hl-11">512</span><span class="hl-1">, </span><span class="hl-11">512</span><span class="hl-1">], </span><span class="hl-8">// x, y, width, height</span><br/><span class="hl-1"> </span><span class="hl-6">format:</span><span class="hl-1"> </span><span class="hl-9">&quot;webp&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">quality:</span><span class="hl-1"> </span><span class="hl-11">80</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><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-6">cutUrl</span><span class="hl-1">);</span><br/><span class="hl-8">// 输出示例: https://vr-image-4.realsee-cdn.com/.../pano_f.jpg?imageMogr2/format/webp/cut/512x512x256x256/quality/80</span>
98
98
  </code><button type="button">Copy</button></pre>
99
99
 
100
100
  <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>
@@ -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
- <p>这些加载函数(如 <code>loadGltf</code>, <code>loadPly</code>)是 <code>@realsee/five</code> 包导出的<strong>独立函数</strong>,而非 <code>Five</code> 实例的方法。你需要单独引入它们使用。</p>
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>
@@ -533,31 +533,31 @@
533
533
  </table>
534
534
  <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>
535
535
  <h3 id="基础用法:加载-gltf-模型-basic-usage" class="tsd-anchor-link">基础用法:加载 GLTF 模型 (Basic Usage)<a href="#基础用法:加载-gltf-模型-basic-usage" 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>
536
- <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">FivePlugin</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadGltf</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><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">&#39;three&#39;</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><span class="hl-8">/*...*/</span><span class="hl-1">});</span><br/><br/><span class="hl-8">// 加载 GLB 模型</span><br/><span class="hl-5">loadGltf</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/model.glb&#39;</span><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-8">// 1. 获取模型对象</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">model</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/><br/><span class="hl-1"> </span><span class="hl-8">// 2. 设置位置和大小</span><br/><span class="hl-1"> </span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-6">position</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-6">scale</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-11">1</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 3. 添加到 Five 场景</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">model</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 4. (可选) 渲染一帧以确保显示</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/><br/><span class="hl-1"> </span><span class="hl-8">// 保存 result 用于后续销毁</span><br/><span class="hl-1"> </span><span class="hl-8">// result.dispose();</span><br/><span class="hl-1">}).</span><span class="hl-5">catch</span><span class="hl-1">(</span><span class="hl-6">err</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">error</span><span class="hl-1">(</span><span class="hl-9">&#39;加载失败&#39;</span><span class="hl-1">, </span><span class="hl-6">err</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
536
+ <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">FivePlugin</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/><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadGltf</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/><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">&#39;three&#39;</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><span class="hl-8">/*...*/</span><span class="hl-1">});</span><br/><br/><span class="hl-8">// 加载 GLB 模型</span><br/><span class="hl-5">loadGltf</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/model.glb&#39;</span><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-8">// 1. 获取模型对象</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">model</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/><br/><span class="hl-1"> </span><span class="hl-8">// 2. 设置位置和大小</span><br/><span class="hl-1"> </span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-6">position</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-6">scale</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-11">1</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 3. 添加到 Five 场景</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">model</span><span class="hl-1">);</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 4. (可选) 渲染一帧以确保显示</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/><br/><span class="hl-1"> </span><span class="hl-8">// 保存 result 用于后续销毁</span><br/><span class="hl-1"> </span><span class="hl-8">// result.dispose();</span><br/><span class="hl-1">}).</span><span class="hl-5">catch</span><span class="hl-1">(</span><span class="hl-6">err</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">error</span><span class="hl-1">(</span><span class="hl-9">&#39;加载失败&#39;</span><span class="hl-1">, </span><span class="hl-6">err</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
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&#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>
544
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadPly</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">loadPly</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/data.ply&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">type:</span><span class="hl-1"> </span><span class="hl-9">&#39;pbmPointCloud&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">customPropertyMapping:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">intensity:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">itemType:</span><span class="hl-1"> </span><span class="hl-9">&#39;float32&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">itemNames:</span><span class="hl-1"> [</span><span class="hl-9">&#39;intensity&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">normalized:</span><span class="hl-1"> </span><span class="hl-3">true</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</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-8">// result.scene 是一个 PBMPointCloud 对象</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">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
544
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadPly</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">loadPly</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/data.ply&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">type:</span><span class="hl-1"> </span><span class="hl-9">&#39;pbmPointCloud&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">customPropertyMapping:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">intensity:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">itemType:</span><span class="hl-1"> </span><span class="hl-9">&#39;float32&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">itemNames:</span><span class="hl-1"> [</span><span class="hl-9">&#39;intensity&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-6">normalized:</span><span class="hl-1"> </span><span class="hl-3">true</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</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-8">// result.scene 是一个 PBMPointCloud 对象</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">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
545
545
  </code><button type="button">Copy</button></pre>
546
546
 
547
547
  <h3 id="基础用法:加载-obj-模型-basic-usage-obj" class="tsd-anchor-link">基础用法:加载 OBJ 模型 (Basic Usage - OBJ)<a href="#基础用法:加载-obj-模型-basic-usage-obj" 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>
548
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadObj</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">loadObj</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/model.obj&#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;Z&#39;</span><span class="hl-1">, </span><span class="hl-8">// OBJ 默认通常是 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-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">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-8">// OBJ 文件中定义的 .mtl 材质会自动加载</span><br/><span class="hl-1">});</span>
548
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadObj</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">loadObj</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/model.obj&#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;Z&#39;</span><span class="hl-1">, </span><span class="hl-8">// OBJ 默认通常是 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-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">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-8">// OBJ 文件中定义的 .mtl 材质会自动加载</span><br/><span class="hl-1">});</span>
549
549
  </code><button type="button">Copy</button></pre>
550
550
 
551
551
  <h3 id="基础用法:加载-fbx-模型" class="tsd-anchor-link">基础用法:加载 FBX 模型<a href="#基础用法:加载-fbx-模型" 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>
552
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadFbx</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">loadFbx</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/model.fbx&#39;</span><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-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">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-8">// 动画会自动解析到 result.animations</span><br/><span class="hl-1">});</span>
552
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadFbx</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">loadFbx</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/model.fbx&#39;</span><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-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">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-8">// 动画会自动解析到 result.animations</span><br/><span class="hl-1">});</span>
553
553
  </code><button type="button">Copy</button></pre>
554
554
 
555
555
  <h3 id="进阶用法:加载-dome-全景-panorama" class="tsd-anchor-link">进阶用法:加载 Dome 全景 (Panorama)<a href="#进阶用法:加载-dome-全景-panorama" 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>
556
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadDome</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 加载 .dome 或 .domez 格式</span><br/><span class="hl-5">loadDome</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/panorama.domez&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">light:</span><span class="hl-1"> </span><span class="hl-3">false</span><span class="hl-1">, </span><span class="hl-8">// 全景模型通常不需要光照计算</span><br/><span class="hl-1"> </span><span class="hl-6">textureOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">size:</span><span class="hl-1"> </span><span class="hl-11">4096</span><span class="hl-1">, </span><span class="hl-8">// 限制最大纹理尺寸</span><br/><span class="hl-1"> }</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-6">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">.</span><span class="hl-6">position</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</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">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
556
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadDome</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">// 加载 .dome 或 .domez 格式</span><br/><span class="hl-5">loadDome</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/panorama.domez&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">light:</span><span class="hl-1"> </span><span class="hl-3">false</span><span class="hl-1">, </span><span class="hl-8">// 全景模型通常不需要光照计算</span><br/><span class="hl-1"> </span><span class="hl-6">textureOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">size:</span><span class="hl-1"> </span><span class="hl-11">4096</span><span class="hl-1">, </span><span class="hl-8">// 限制最大纹理尺寸</span><br/><span class="hl-1"> }</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-6">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">.</span><span class="hl-6">position</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">0</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">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
557
557
  </code><button type="button">Copy</button></pre>
558
558
 
559
559
  <h3 id="进阶用法:加载压缩模型-at3d" class="tsd-anchor-link">进阶用法:加载压缩模型 (AT3D)<a href="#进阶用法:加载压缩模型-at3d" 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>
560
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadAt3d</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">loadAt3d</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/model.at3d&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">light:</span><span class="hl-1"> </span><span class="hl-3">false</span><span class="hl-1">,</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-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">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
560
+ <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">loadAt3d</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">loadAt3d</span><span class="hl-1">(</span><span class="hl-9">&#39;https://example.com/model.at3d&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">light:</span><span class="hl-1"> </span><span class="hl-3">false</span><span class="hl-1">,</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-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">result</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">);</span><br/><span class="hl-1">});</span>
561
561
  </code><button type="button">Copy</button></pre>
562
562
 
563
563
  <h2 id="debugging" class="tsd-anchor-link">Debugging<a href="#debugging" 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>
@@ -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>