@realsee/five 6.8.9 → 6.9.0-alpha.1

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 (281) hide show
  1. package/ai_guides/3dgs-current-branch-changes.md +237 -0
  2. package/docs/assets/hierarchy.js +1 -1
  3. package/docs/assets/highlight.css +18 -18
  4. package/docs/assets/navigation.js +1 -1
  5. package/docs/assets/search.js +1 -1
  6. package/docs/classes/five.AdaptiveLuminancePass.html +1 -1
  7. package/docs/classes/five.BoundingMesh.html +1 -1
  8. package/docs/classes/five.Camera.html +1 -1
  9. package/docs/classes/five.EyeDomeLightingPass.html +1 -1
  10. package/docs/classes/five.Five.html +4 -4
  11. package/docs/classes/five.FivePass.html +1 -1
  12. package/docs/classes/five.FlowingFireworks3DPass.html +30 -0
  13. package/docs/classes/five.FlowingLight2DPass.html +1 -1
  14. package/docs/classes/five.FlowingLight3DPass.html +1 -1
  15. package/docs/classes/five.GaussianBlurPass.html +1 -1
  16. package/docs/classes/five.InternalWebGLRenderer.html +1 -1
  17. package/docs/classes/five.Model.html +2 -2
  18. package/docs/classes/five.ModelScene.html +1 -1
  19. package/docs/classes/five.NetworkSubscribe.html +2 -2
  20. package/docs/classes/five.PBMContainer.html +1 -1
  21. package/docs/classes/five.PBMCustomShader.html +2 -2
  22. package/docs/classes/five.PBMGSObject.html +10 -13
  23. package/docs/classes/five.PBMGroup.html +1 -1
  24. package/docs/classes/five.PBMMesh.html +1 -1
  25. package/docs/classes/five.PBMMeshMaterial.html +1 -1
  26. package/docs/classes/five.PBMPanoFilter.html +2 -2
  27. package/docs/classes/five.PBMPointCloud.html +1 -1
  28. package/docs/classes/five.PBMPointCloudMaterial.html +1 -1
  29. package/docs/classes/five.PBMSkinnedMesh.html +1 -1
  30. package/docs/classes/five.PBMUpdateable.html +2 -2
  31. package/docs/classes/five.PanoCircleMesh.html +1 -1
  32. package/docs/classes/five.PanoCircleMeshCustom.html +1 -1
  33. package/docs/classes/five.PanoCircleMeshSolid.html +1 -1
  34. package/docs/classes/five.Parameter.html +1 -1
  35. package/docs/classes/five.Scene.html +1 -1
  36. package/docs/classes/five.Subscribe.html +2 -2
  37. package/docs/classes/five.Tile3D.html +1 -1
  38. package/docs/classes/five.TileNode.html +1 -1
  39. package/docs/classes/five.TrajectoryNode.html +1 -1
  40. package/docs/classes/five.WorkResolvedObserver.html +2 -2
  41. package/docs/classes/gltf-loader.DDSLoader.html +1 -1
  42. package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
  43. package/docs/classes/gltf-loader.GLTFLoader.html +2 -2
  44. package/docs/classes/gltf-loader.GLTFObject.html +1 -1
  45. package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
  46. package/docs/classes/line.Line.html +1 -1
  47. package/docs/classes/line.LineGeometry.html +1 -1
  48. package/docs/classes/line.LineMaterial.html +1 -1
  49. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  50. package/docs/classes/line.THREE_Line2.html +1 -1
  51. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  52. package/docs/classes/plugins.BasePlugin.Controller.html +1 -1
  53. package/docs/classes/plugins.CSS2DObject.html +1 -1
  54. package/docs/classes/plugins.CSS3DObject.html +1 -1
  55. package/docs/classes/plugins.CSS3DSprite.html +1 -1
  56. package/docs/classes/plugins.InstancedPrefabBufferGeometry.html +1 -1
  57. package/docs/classes/plugins.Object3DHelperController.html +1 -1
  58. package/docs/classes/plugins.PointBufferGeometry.html +1 -1
  59. package/docs/classes/plugins.PrefabBufferGeometry.html +1 -1
  60. package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
  61. package/docs/classes/react.Store.html +1 -1
  62. package/docs/classes/sticker.Sticker.html +2 -2
  63. package/docs/classes/vfx.Airflow.html +1 -1
  64. package/docs/classes/vfx.Flame.html +1 -1
  65. package/docs/classes/vfx.Particle.html +1 -1
  66. package/docs/classes/vfx.ParticleGPU.html +1 -1
  67. package/docs/classes/vfx.SpotLight.html +1 -1
  68. package/docs/documents/3dgs-current-branch-changes.html +205 -0
  69. package/docs/documents/api.html +6 -6
  70. package/docs/documents/features_3dtile.html +4 -4
  71. package/docs/documents/features_camera-animation.html +10 -10
  72. package/docs/documents/features_clipper.html +3 -3
  73. package/docs/documents/features_coordinate-system.html +3 -3
  74. package/docs/documents/features_event.html +10 -10
  75. package/docs/documents/features_five.html +4 -4
  76. package/docs/documents/features_flowing-fireworks-3d-pass.html +7 -7
  77. package/docs/documents/features_flowing-light-2d-pass.html +11 -11
  78. package/docs/documents/features_flowing-light-3d-pass.html +11 -11
  79. package/docs/documents/features_gaussian-blur-pass.html +6 -6
  80. package/docs/documents/features_gesture.html +6 -6
  81. package/docs/documents/features_get-screen-pixels.html +4 -4
  82. package/docs/documents/features_image-options.html +5 -5
  83. package/docs/documents/features_load-external-model.html +8 -8
  84. package/docs/documents/features_load-progress.html +7 -7
  85. package/docs/documents/features_material.html +3 -3
  86. package/docs/documents/features_mode.html +11 -11
  87. package/docs/documents/features_model.html +4 -4
  88. package/docs/documents/features_move-pano-effect.html +5 -5
  89. package/docs/documents/features_multi-work.html +5 -5
  90. package/docs/documents/features_pano-filter.html +3 -3
  91. package/docs/documents/features_pano-tile.html +4 -4
  92. package/docs/documents/features_pano-uv.html +4 -4
  93. package/docs/documents/features_parameter.html +7 -7
  94. package/docs/documents/features_plugin.html +4 -4
  95. package/docs/documents/features_postprocessing.html +5 -5
  96. package/docs/documents/features_raycast.html +4 -4
  97. package/docs/documents/features_request-proxy.html +4 -4
  98. package/docs/documents/features_screen-project.html +3 -3
  99. package/docs/documents/features_state.html +4 -4
  100. package/docs/documents/features_view-layer.html +4 -4
  101. package/docs/documents/features_work.html +5 -5
  102. package/docs/documents/quick-start.html +2 -2
  103. package/docs/documents/release_notes_6.6.html +4 -4
  104. package/docs/documents/release_notes_6.7.html +14 -14
  105. package/docs/documents/release_notes_6.8.html +4 -4
  106. package/docs/functions/five.loadSpz.html +1 -1
  107. package/docs/functions/react.useFiveAction.html +6 -6
  108. package/docs/functions/react.useFiveCurrentObserver.html +1 -1
  109. package/docs/functions/react.useFiveCurrentState.html +1 -1
  110. package/docs/functions/react.useFiveEventCallback.html +1 -1
  111. package/docs/functions/react.useFiveFloor.html +1 -1
  112. package/docs/functions/react.useFiveHelper.html +1 -1
  113. package/docs/functions/react.useFiveModelIntersectRaycaster.html +2 -2
  114. package/docs/functions/react.useFiveProject2d.html +2 -2
  115. package/docs/functions/react.useFiveSceneEffect.html +1 -1
  116. package/docs/functions/react.useFiveWork.html +2 -2
  117. package/docs/functions/vue.useFiveAction.html +8 -8
  118. package/docs/functions/vue.useFiveCurrentObserver.html +1 -1
  119. package/docs/functions/vue.useFiveCurrentState.html +1 -1
  120. package/docs/functions/vue.useFiveEventCallback.html +1 -1
  121. package/docs/functions/vue.useFiveFloor.html +1 -1
  122. package/docs/functions/vue.useFiveHelper.html +1 -1
  123. package/docs/functions/vue.useFiveModelIntersectRaycaster.html +2 -2
  124. package/docs/functions/vue.useFiveProject2d.html +2 -2
  125. package/docs/functions/vue.useFiveState.html +1 -1
  126. package/docs/functions/vue.useFiveWorks.html +2 -2
  127. package/docs/hierarchy.html +1 -1
  128. package/docs/interfaces/five.AddableObject.html +1 -1
  129. package/docs/interfaces/five.AjaxOptions.html +1 -1
  130. package/docs/interfaces/five.BaseEvent.html +1 -1
  131. package/docs/interfaces/five.BaseExtendableEvent.html +1 -1
  132. package/docs/interfaces/five.EventCallback.html +1 -1
  133. package/docs/interfaces/five.FiveInitArgs.html +2 -2
  134. package/docs/interfaces/five.GestureEvent.html +1 -1
  135. package/docs/interfaces/five.ImageOptions.html +1 -1
  136. package/docs/interfaces/five.IntersectEvent.html +1 -1
  137. package/docs/interfaces/five.IntersectMesh.html +1 -1
  138. package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
  139. package/docs/interfaces/five.Intersection.html +1 -1
  140. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
  141. package/docs/interfaces/five.ModeChangeEvent.html +1 -1
  142. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  143. package/docs/interfaces/five.ModelEvent.html +1 -1
  144. package/docs/interfaces/five.ModelSceneEvent.html +1 -1
  145. package/docs/interfaces/five.ModelTileEvent.html +1 -1
  146. package/docs/interfaces/five.MovePanoOptions.html +1 -1
  147. package/docs/interfaces/five.NetworkAbortError.html +1 -1
  148. package/docs/interfaces/five.NetworkFirbiddenError.html +1 -1
  149. package/docs/interfaces/five.NetworkOptions.html +1 -1
  150. package/docs/interfaces/five.NetworkProxyError.html +1 -1
  151. package/docs/interfaces/five.NetworkResourceEvent.html +1 -1
  152. package/docs/interfaces/five.NetworkResponseError.html +1 -1
  153. package/docs/interfaces/five.NetworkTimeoutError.html +1 -1
  154. package/docs/interfaces/five.ObjectEvent.html +1 -1
  155. package/docs/interfaces/five.PBMMaterial.html +1 -1
  156. package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
  157. package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
  158. package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
  159. package/docs/interfaces/five.PanoEvent.html +1 -1
  160. package/docs/interfaces/five.PanoPrepareEvent.html +1 -1
  161. package/docs/interfaces/five.PanoTextureEvent.html +1 -1
  162. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  163. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  164. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  165. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  166. package/docs/interfaces/five.ParameterValue.html +1 -1
  167. package/docs/interfaces/five.Pose.html +1 -1
  168. package/docs/interfaces/five.RenderEvent.html +1 -1
  169. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  170. package/docs/interfaces/five.SplatData.html +3 -6
  171. package/docs/interfaces/five.State.html +1 -1
  172. package/docs/interfaces/five.StateEvent.html +1 -1
  173. package/docs/interfaces/five.TextureOptions.html +1 -1
  174. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  175. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  176. package/docs/interfaces/five.ViewLayer.html +1 -1
  177. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  178. package/docs/interfaces/five.WorkImage.html +1 -1
  179. package/docs/interfaces/five.WorkObserver.html +2 -2
  180. package/docs/interfaces/five.WorkObserverProto.html +1 -1
  181. package/docs/interfaces/five.WorkTile.html +1 -1
  182. package/docs/interfaces/five.WorksEvent.html +1 -1
  183. package/docs/interfaces/five.XRControllerEvent.html +1 -1
  184. package/docs/interfaces/five.XRGestureEvent.html +1 -1
  185. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  186. package/docs/interfaces/five.XRSessionEvent.html +1 -1
  187. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  188. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  189. package/docs/interfaces/plugins.BasePlugin.State.html +1 -1
  190. package/docs/interfaces/plugins.CSS2DPluginController.html +1 -1
  191. package/docs/interfaces/plugins.CSS2DPluginType.EventMap.html +1 -1
  192. package/docs/interfaces/plugins.CSS2DPluginType.State.html +1 -1
  193. package/docs/interfaces/plugins.CSS3DPluginController.html +1 -1
  194. package/docs/interfaces/plugins.CSS3DPluginType.EventMap.html +1 -1
  195. package/docs/interfaces/plugins.CSS3DPluginType.State.html +1 -1
  196. package/docs/interfaces/plugins.DynamicPathLinePluginController.html +1 -1
  197. package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +1 -1
  198. package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +1 -1
  199. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationController.html +1 -1
  200. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.EventMap.html +1 -1
  201. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.State.html +1 -1
  202. package/docs/interfaces/plugins.ItemMaskController.html +1 -1
  203. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  204. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  205. package/docs/interfaces/plugins.Object3DHelperPluginType.BaseController.html +1 -1
  206. package/docs/interfaces/plugins.Object3DHelperPluginType.BaseHelper.html +1 -1
  207. package/docs/interfaces/plugins.Object3DHelperPluginType.BoundingBoxController.html +1 -1
  208. package/docs/interfaces/plugins.Object3DHelperPluginType.MoveController.html +1 -1
  209. package/docs/interfaces/plugins.Object3DHelperPluginType.MoveHelperAbstract.html +1 -1
  210. package/docs/interfaces/plugins.Object3DHelperPluginType.RotateController.html +1 -1
  211. package/docs/interfaces/plugins.Object3DHelperPluginType.RotateHelperAbstract.html +1 -1
  212. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  213. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  214. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  215. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  216. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  217. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  218. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  219. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  220. package/docs/interfaces/plugins.TrajectoryController.html +1 -1
  221. package/docs/interfaces/react.FiveInjectionTypes.html +2 -2
  222. package/docs/interfaces/react.UseFivePluginOptions.html +1 -1
  223. package/docs/interfaces/react.UseFivePluginOptionsWithCreate.html +1 -1
  224. package/docs/modules/five.html +1 -1
  225. package/docs/modules.html +1 -1
  226. package/docs/types/five.FlowingFireworks3DPassLine.html +16 -0
  227. package/docs/types/five.ParseOptions.html +1 -1
  228. package/docs/types/plugins.BasePlugin.EventMap.html +1 -1
  229. package/docs/variables/react.FiveCanvas.html +1 -1
  230. package/docs/variables/react.useFiveScene.html +1 -1
  231. package/docs/variables/vue.FiveCanvas.html +1 -1
  232. package/docs/variables/vue.FiveProvider.html +1 -1
  233. package/five/gaussian-splatting/layerRegistry.d.ts +10 -0
  234. package/five/gaussian-splatting/orderTexture.d.ts +18 -0
  235. package/five/gaussian-splatting/reorderPass.d.ts +34 -0
  236. package/five/gaussian-splatting/shStore.d.ts +16 -0
  237. package/five/gaussian-splatting/splatAssembler.d.ts +60 -0
  238. package/five/gaussian-splatting/tileTexture.d.ts +10 -0
  239. package/five/gaussian-splatting/transformStore.d.ts +20 -0
  240. package/five/index.js +305 -169
  241. package/five/index.mjs +6684 -6508
  242. package/five/model/index.d.ts +0 -1
  243. package/five/model/loaders/spz.d.ts +19 -3
  244. package/five/model/objects/pbmGaussianSplattingObject.d.ts +10 -14
  245. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +48 -42
  246. package/five/renderer/index.d.ts +1 -1
  247. package/five/renderer/postprocessing/index.d.ts +1 -1
  248. package/five/renderer/postprocessing/passes/flowing-fireworks-3d-pass.d.ts +4 -5
  249. package/gltf-loader/index.js +3 -3
  250. package/gltf-loader/index.mjs +3 -3
  251. package/line/index.js +3 -3
  252. package/line/index.mjs +3 -3
  253. package/package.json +2 -2
  254. package/pbmGaussianSplattingObject-C6i7CUTu.cjs +255 -0
  255. package/pbmGaussianSplattingObject-CaE6q4r-.js +324 -0
  256. package/plugins/index.js +2 -2
  257. package/plugins/index.mjs +2 -2
  258. package/react/index.js +2 -2
  259. package/react/index.mjs +2 -2
  260. package/shader-lib/index.js +2 -2
  261. package/shader-lib/index.mjs +2 -2
  262. package/sticker/index.js +3 -3
  263. package/sticker/index.mjs +3 -3
  264. package/umd/five-gltf-loader.js +3 -3
  265. package/umd/five-line.js +3 -3
  266. package/umd/five-plugins.js +2 -2
  267. package/umd/five-react.js +2 -2
  268. package/umd/five-shader-lib.js +2 -2
  269. package/umd/five-sticker.js +3 -3
  270. package/umd/five-vfx.js +2 -2
  271. package/umd/five-vue.js +2 -2
  272. package/umd/five.js +218 -82
  273. package/vfx/index.js +2 -2
  274. package/vfx/index.mjs +2 -2
  275. package/vue/index.js +2 -2
  276. package/vue/index.mjs +2 -2
  277. package/work-downloader/index.js +2 -2
  278. package/work-downloader/index.mjs +2 -2
  279. package/docs/functions/five.loadSplat.html +0 -1
  280. package/five/gaussian-splatting/util/renderData.d.ts +0 -68
  281. package/five/model/loaders/splat.d.ts +0 -8
@@ -11,7 +11,7 @@
11
11
  <p><strong>Definition</strong>: <a href="../../five/model/materials/pbmMaterial.d.ts">PBMPanoFilter</a></p>
12
12
  </blockquote>
13
13
  <p><code>PBMPanoFilter</code> 类定义了全景图的滤镜参数。所有属性均为对象引用,直接修改其内部属性即可生效。</p>
14
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">PBMUpdateable</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-10">export</span><span class="hl-1"> </span><span class="hl-3">class</span><span class="hl-1"> </span><span class="hl-7">PBMPanoFilter</span><span class="hl-1"> </span><span class="hl-3">extends</span><span class="hl-1"> </span><span class="hl-7">PBMUpdateable</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 对比度控制 */</span><br/><span class="hl-1"> </span><span class="hl-3">public</span><span class="hl-1"> </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-6">contrast</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 对比度偏移 [-1, 1] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-6">contrastBias</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> </span><span class="hl-8">/** 饱和度控制 */</span><br/><span class="hl-1"> </span><span class="hl-3">public</span><span class="hl-1"> </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-6">saturation</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 饱和度偏移 [-1, 1] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-6">saturationBias</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> </span><span class="hl-8">/** 颜色控制 (色温与色调) */</span><br/><span class="hl-1"> </span><span class="hl-3">public</span><span class="hl-1"> </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-6">color</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 色温偏移 [-100, 100] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-6">temperatureBias</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 色调偏移 [-100, 100] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-6">tintBias</span><span class="hl-1">: </span><span class="hl-7">number</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> </span><span class="hl-8">/** 高光与阴影控制 */</span><br/><span class="hl-1"> </span><span class="hl-3">public</span><span class="hl-1"> </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-6">highlightShadow</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 全局亮度偏移 [-255, 255] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-6">globalBias</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 高光偏移 [-255, 255] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-6">highlightBias</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 阴影偏移 [-255, 255] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-6">shadowBias</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> };</span><br/><span class="hl-1">}</span>
14
+ <pre><code class="typescript"><span class="hl-11">import</span><span class="hl-1"> { </span><span class="hl-5">PBMUpdateable</span><span class="hl-1"> } </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-10">&quot;@realsee/five&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-11">export</span><span class="hl-1"> </span><span class="hl-8">class</span><span class="hl-1"> </span><span class="hl-9">PBMPanoFilter</span><span class="hl-1"> </span><span class="hl-8">extends</span><span class="hl-1"> </span><span class="hl-9">PBMUpdateable</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 对比度控制 */</span><br/><span class="hl-1"> </span><span class="hl-8">public</span><span class="hl-1"> </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-5">contrast</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 对比度偏移 [-1, 1] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-5">contrastBias</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/** 饱和度控制 */</span><br/><span class="hl-1"> </span><span class="hl-8">public</span><span class="hl-1"> </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-5">saturation</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 饱和度偏移 [-1, 1] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-5">saturationBias</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/** 颜色控制 (色温与色调) */</span><br/><span class="hl-1"> </span><span class="hl-8">public</span><span class="hl-1"> </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-5">color</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 色温偏移 [-100, 100] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-5">temperatureBias</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 色调偏移 [-100, 100] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-5">tintBias</span><span class="hl-1">: </span><span class="hl-9">number</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/** 高光与阴影控制 */</span><br/><span class="hl-1"> </span><span class="hl-8">public</span><span class="hl-1"> </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-5">highlightShadow</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 全局亮度偏移 [-255, 255] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-5">globalBias</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 高光偏移 [-255, 255] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-5">highlightBias</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 阴影偏移 [-255, 255] (默认 0) */</span><br/><span class="hl-1"> </span><span class="hl-5">shadowBias</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1"> };</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>
@@ -101,12 +101,12 @@
101
101
  <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>
102
102
  <h3 id="basic-usage-基础用法" class="tsd-anchor-link">Basic Usage (基础用法)<a href="#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>
103
103
  <p>创建一个滤镜实例并应用到 Five 场景中。</p>
104
- <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">PBMPanoFilter</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-8">// ... 初始化 five ...</span><br/><br/><span class="hl-8">// 1. 创建滤镜实例</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">panoFilter</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-5">PBMPanoFilter</span><span class="hl-1">();</span><br/><br/><span class="hl-8">// 2. 配置参数 (例如:增加一点暖色调和亮度)</span><br/><span class="hl-6">panoFilter</span><span class="hl-1">.</span><span class="hl-6">color</span><span class="hl-1">.</span><span class="hl-6">temperatureBias</span><span class="hl-1"> = </span><span class="hl-11">10</span><span class="hl-1">; </span><span class="hl-8">// 暖色</span><br/><span class="hl-6">panoFilter</span><span class="hl-1">.</span><span class="hl-6">highlightShadow</span><span class="hl-1">.</span><span class="hl-6">globalBias</span><span class="hl-1"> = </span><span class="hl-11">20</span><span class="hl-1">; </span><span class="hl-8">// 提亮</span><br/><br/><span class="hl-8">// 3. 启用滤镜</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;panoFilter&#39;</span><span class="hl-1">, </span><span class="hl-6">panoFilter</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 4. (可选) 停用滤镜</span><br/><span class="hl-8">// five.modelScene.parameter.reset(&#39;panoFilter&#39;);</span>
104
+ <pre><code class="typescript"><span class="hl-11">import</span><span class="hl-1"> { </span><span class="hl-5">Five</span><span class="hl-1">, </span><span class="hl-5">PBMPanoFilter</span><span class="hl-1"> } </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-10">&quot;@realsee/five&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1"> = </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-4">Five</span><span class="hl-1">();</span><br/><span class="hl-7">// ... 初始化 five ...</span><br/><br/><span class="hl-7">// 1. 创建滤镜实例</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">panoFilter</span><span class="hl-1"> = </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-4">PBMPanoFilter</span><span class="hl-1">();</span><br/><br/><span class="hl-7">// 2. 配置参数 (例如:增加一点暖色调和亮度)</span><br/><span class="hl-5">panoFilter</span><span class="hl-1">.</span><span class="hl-5">color</span><span class="hl-1">.</span><span class="hl-5">temperatureBias</span><span class="hl-1"> = </span><span class="hl-3">10</span><span class="hl-1">; </span><span class="hl-7">// 暖色</span><br/><span class="hl-5">panoFilter</span><span class="hl-1">.</span><span class="hl-5">highlightShadow</span><span class="hl-1">.</span><span class="hl-5">globalBias</span><span class="hl-1"> = </span><span class="hl-3">20</span><span class="hl-1">; </span><span class="hl-7">// 提亮</span><br/><br/><span class="hl-7">// 3. 启用滤镜</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-10">&#39;panoFilter&#39;</span><span class="hl-1">, </span><span class="hl-5">panoFilter</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 4. (可选) 停用滤镜</span><br/><span class="hl-7">// five.modelScene.parameter.reset(&#39;panoFilter&#39;);</span>
105
105
  </code><button type="button">Copy</button></pre>
106
106
 
107
107
  <h3 id="interactive-adjustment-动态调整" class="tsd-anchor-link">Interactive Adjustment (动态调整)<a href="#interactive-adjustment-动态调整" 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>
108
108
  <p>滤镜参数支持实时修改,适合制作调节面板。</p>
109
- <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">PBMPanoFilter</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-8">// 假设已经有 five 实例</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">panoFilter</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-5">PBMPanoFilter</span><span class="hl-1">();</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;panoFilter&#39;</span><span class="hl-1">, </span><span class="hl-6">panoFilter</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 模拟 UI 绑定的数据对象</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">filterSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-6">brightness:</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">contrast:</span><span class="hl-1"> </span><span class="hl-11">0</span><span class="hl-1">,</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-8">// 监听 UI 变化 (示例伪代码)</span><br/><span class="hl-3">function</span><span class="hl-1"> </span><span class="hl-5">onBrightnessChange</span><span class="hl-1">(</span><span class="hl-6">value</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-8">// value range: [-255, 255]</span><br/><span class="hl-1"> </span><span class="hl-6">panoFilter</span><span class="hl-1">.</span><span class="hl-6">highlightShadow</span><span class="hl-1">.</span><span class="hl-6">globalBias</span><span class="hl-1"> = </span><span class="hl-6">value</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">// 如果 five 没有开启自动渲染 (play: false),需要手动触发重绘</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><br/><br/><span class="hl-3">function</span><span class="hl-1"> </span><span class="hl-5">onContrastChange</span><span class="hl-1">(</span><span class="hl-6">value</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-8">// value range: [-1, 1]</span><br/><span class="hl-1"> </span><span class="hl-6">panoFilter</span><span class="hl-1">.</span><span class="hl-6">contrast</span><span class="hl-1">.</span><span class="hl-6">contrastBias</span><span class="hl-1"> = </span><span class="hl-6">value</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>
109
+ <pre><code class="typescript"><span class="hl-11">import</span><span class="hl-1"> { </span><span class="hl-5">Five</span><span class="hl-1">, </span><span class="hl-5">PBMPanoFilter</span><span class="hl-1"> } </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-10">&quot;@realsee/five&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-7">// 假设已经有 five 实例</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">panoFilter</span><span class="hl-1"> = </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-4">PBMPanoFilter</span><span class="hl-1">();</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-10">&#39;panoFilter&#39;</span><span class="hl-1">, </span><span class="hl-5">panoFilter</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 模拟 UI 绑定的数据对象</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">filterSettings</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-5">brightness:</span><span class="hl-1"> </span><span class="hl-3">0</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">contrast:</span><span class="hl-1"> </span><span class="hl-3">0</span><span class="hl-1">,</span><br/><span class="hl-1">};</span><br/><br/><span class="hl-7">// 监听 UI 变化 (示例伪代码)</span><br/><span class="hl-8">function</span><span class="hl-1"> </span><span class="hl-4">onBrightnessChange</span><span class="hl-1">(</span><span class="hl-5">value</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">// value range: [-255, 255]</span><br/><span class="hl-1"> </span><span class="hl-5">panoFilter</span><span class="hl-1">.</span><span class="hl-5">highlightShadow</span><span class="hl-1">.</span><span class="hl-5">globalBias</span><span class="hl-1"> = </span><span class="hl-5">value</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">// 如果 five 没有开启自动渲染 (play: false),需要手动触发重绘</span><br/><span class="hl-1"> </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">needsRender</span><span class="hl-1"> = </span><span class="hl-8">true</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">function</span><span class="hl-1"> </span><span class="hl-4">onContrastChange</span><span class="hl-1">(</span><span class="hl-5">value</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-7">// value range: [-1, 1]</span><br/><span class="hl-1"> </span><span class="hl-5">panoFilter</span><span class="hl-1">.</span><span class="hl-5">contrast</span><span class="hl-1">.</span><span class="hl-5">contrastBias</span><span class="hl-1"> = </span><span class="hl-5">value</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">needsRender</span><span class="hl-1"> = </span><span class="hl-8">true</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
110
110
  </code><button type="button">Copy</button></pre>
111
111
 
112
112
  <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>
@@ -12,12 +12,12 @@
12
12
  </blockquote>
13
13
  <h3 id="workobserverimages" class="tsd-anchor-link">WorkObserver.images<a href="#workobserverimages" 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>
14
14
  <p>点位全景图数据结构,包含瓦片列表。</p>
15
- <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">WorkImage</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 分辨率列表 */</span><br/><span class="hl-1"> </span><span class="hl-6">sizeList</span><span class="hl-1">: </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-7">number</span><span class="hl-1">[];</span><br/><span class="hl-1"> </span><span class="hl-8">/** 瓦片信息列表,按 level 排序 */</span><br/><span class="hl-1"> </span><span class="hl-6">tiles</span><span class="hl-1">: </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-7">WorkTile</span><span class="hl-1">[];</span><br/><span class="hl-1"> </span><span class="hl-8">// ... 其他基础图片 URL</span><br/><span class="hl-1">}</span>
15
+ <pre><code class="typescript"><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">WorkImage</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 分辨率列表 */</span><br/><span class="hl-1"> </span><span class="hl-5">sizeList</span><span class="hl-1">: </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-9">number</span><span class="hl-1">[];</span><br/><span class="hl-1"> </span><span class="hl-7">/** 瓦片信息列表,按 level 排序 */</span><br/><span class="hl-1"> </span><span class="hl-5">tiles</span><span class="hl-1">: </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-9">WorkTile</span><span class="hl-1">[];</span><br/><span class="hl-1"> </span><span class="hl-7">// ... 其他基础图片 URL</span><br/><span class="hl-1">}</span>
16
16
  </code><button type="button">Copy</button></pre>
17
17
 
18
18
  <h3 id="imageoptions" class="tsd-anchor-link">ImageOptions<a href="#imageoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
19
19
  <p>全景图及瓦片的图片处理配置。</p>
20
- <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">ImageOptions</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 图片尺寸参数 (例如 512, 1024...) */</span><br/><span class="hl-1"> </span><span class="hl-6">size</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 图片质量参数 (0-100) */</span><br/><span class="hl-1"> </span><span class="hl-6">quality</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 图片格式参数 */</span><br/><span class="hl-1"> </span><span class="hl-6">format</span><span class="hl-1">?: </span><span class="hl-9">&quot;jpg&quot;</span><span class="hl-1"> | </span><span class="hl-9">&quot;jpeg&quot;</span><span class="hl-1"> | </span><span class="hl-9">&quot;png&quot;</span><span class="hl-1"> | </span><span class="hl-9">&quot;heif&quot;</span><span class="hl-1"> | </span><span class="hl-9">&quot;heic&quot;</span><span class="hl-1"> | </span><span class="hl-9">&quot;webp&quot;</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-8">/** URL 转换函数 */</span><br/><span class="hl-1"> </span><span class="hl-5">transform</span><span class="hl-1">?: (</span><span class="hl-6">url</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1">, </span><span class="hl-6">options</span><span class="hl-1">: </span><span class="hl-7">ImageURLOptions</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">string</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
20
+ <pre><code class="typescript"><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">ImageOptions</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 图片尺寸参数 (例如 512, 1024...) */</span><br/><span class="hl-1"> </span><span class="hl-5">size</span><span class="hl-1">?: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 图片质量参数 (0-100) */</span><br/><span class="hl-1"> </span><span class="hl-5">quality</span><span class="hl-1">?: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 图片格式参数 */</span><br/><span class="hl-1"> </span><span class="hl-5">format</span><span class="hl-1">?: </span><span class="hl-10">&quot;jpg&quot;</span><span class="hl-1"> | </span><span class="hl-10">&quot;jpeg&quot;</span><span class="hl-1"> | </span><span class="hl-10">&quot;png&quot;</span><span class="hl-1"> | </span><span class="hl-10">&quot;heif&quot;</span><span class="hl-1"> | </span><span class="hl-10">&quot;heic&quot;</span><span class="hl-1"> | </span><span class="hl-10">&quot;webp&quot;</span><span class="hl-1"> | </span><span class="hl-10">&quot;avif&quot;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** URL 转换函数 */</span><br/><span class="hl-1"> </span><span class="hl-4">transform</span><span class="hl-1">?: (</span><span class="hl-5">url</span><span class="hl-1">: </span><span class="hl-9">string</span><span class="hl-1">, </span><span class="hl-5">options</span><span class="hl-1">: </span><span class="hl-9">ImageURLOptions</span><span class="hl-1">) </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-9">string</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
21
21
  </code><button type="button">Copy</button></pre>
22
22
 
23
23
  <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>
@@ -81,11 +81,11 @@
81
81
  </table>
82
82
  <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>
83
83
  <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>
84
- <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/><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;loaded&quot;</span><span class="hl-1">, () </span><span class="hl-3">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">observer</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">work</span><span class="hl-1">.</span><span class="hl-6">observers</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-10">if</span><span class="hl-1"> (</span><span class="hl-6">observer</span><span class="hl-1"> &amp;&amp; </span><span class="hl-6">observer</span><span class="hl-1">.</span><span class="hl-6">images</span><span class="hl-1"> &amp;&amp; </span><span class="hl-6">observer</span><span class="hl-1">.</span><span class="hl-6">images</span><span class="hl-1">.</span><span class="hl-6">tiles</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">&quot;Available Tiles:&quot;</span><span class="hl-1">, </span><span class="hl-6">observer</span><span class="hl-1">.</span><span class="hl-6">images</span><span class="hl-1">.</span><span class="hl-6">tiles</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-6">observer</span><span class="hl-1">.</span><span class="hl-6">images</span><span class="hl-1">.</span><span class="hl-6">tiles</span><span class="hl-1">.</span><span class="hl-5">forEach</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">`Level: </span><span class="hl-3">${</span><span class="hl-6">tile</span><span class="hl-12">.</span><span class="hl-6">level</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">size</span><span class="hl-3">}</span><span class="hl-9">, Scale: </span><span class="hl-3">${</span><span class="hl-6">tile</span><span class="hl-12">.</span><span class="hl-6">scale</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">);</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
84
+ <pre><code class="typescript"><span class="hl-11">import</span><span class="hl-1"> { </span><span class="hl-5">Five</span><span class="hl-1"> } </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-10">&quot;@realsee/five&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1"> = </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-4">Five</span><span class="hl-1">();</span><br/><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">on</span><span class="hl-1">(</span><span class="hl-10">&quot;loaded&quot;</span><span class="hl-1">, () </span><span class="hl-8">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">observer</span><span class="hl-1"> = </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">work</span><span class="hl-1">.</span><span class="hl-5">observers</span><span class="hl-1">[</span><span class="hl-3">0</span><span class="hl-1">];</span><br/><span class="hl-1"> </span><span class="hl-11">if</span><span class="hl-1"> (</span><span class="hl-5">observer</span><span class="hl-1"> &amp;&amp; </span><span class="hl-5">observer</span><span class="hl-1">.</span><span class="hl-5">images</span><span class="hl-1"> &amp;&amp; </span><span class="hl-5">observer</span><span class="hl-1">.</span><span class="hl-5">images</span><span class="hl-1">.</span><span class="hl-5">tiles</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-4">log</span><span class="hl-1">(</span><span class="hl-10">&quot;Available Tiles:&quot;</span><span class="hl-1">, </span><span class="hl-5">observer</span><span class="hl-1">.</span><span class="hl-5">images</span><span class="hl-1">.</span><span class="hl-5">tiles</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-5">observer</span><span class="hl-1">.</span><span class="hl-5">images</span><span class="hl-1">.</span><span class="hl-5">tiles</span><span class="hl-1">.</span><span class="hl-4">forEach</span><span class="hl-1">(</span><span class="hl-5">tile</span><span class="hl-1"> </span><span class="hl-8">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-4">log</span><span class="hl-1">(</span><span class="hl-10">`Level: </span><span class="hl-8">${</span><span class="hl-5">tile</span><span class="hl-12">.</span><span class="hl-5">level</span><span class="hl-8">}</span><span class="hl-10">, Size: </span><span class="hl-8">${</span><span class="hl-5">tile</span><span class="hl-12">.</span><span class="hl-5">size</span><span class="hl-8">}</span><span class="hl-10">, Scale: </span><span class="hl-8">${</span><span class="hl-5">tile</span><span class="hl-12">.</span><span class="hl-5">scale</span><span class="hl-8">}</span><span class="hl-10">`</span><span class="hl-1">);</span><br/><span class="hl-1"> });</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
85
85
  </code><button type="button">Copy</button></pre>
86
86
 
87
87
  <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>
88
- <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-8">// 自定义瓦片层级选择策略</span><br/><span class="hl-1"> </span><span class="hl-5">tileLevelForFov</span><span class="hl-6">:</span><span class="hl-1"> (</span><span class="hl-6">fov</span><span class="hl-1">, </span><span class="hl-6">viewSize</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">// 简单示例:FOV 小于 60 度时强制使用 Level 2,否则使用 Level 1</span><br/><span class="hl-1"> </span><span class="hl-10">if</span><span class="hl-1"> (</span><span class="hl-6">fov</span><span class="hl-1"> &lt; </span><span class="hl-11">60</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-10">return</span><span class="hl-1"> </span><span class="hl-11">2</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-10">return</span><span class="hl-1"> </span><span class="hl-11">1</span><span class="hl-1">;</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-8">// 限制并发请求数</span><br/><span class="hl-1"> </span><span class="hl-6">tileMaxRequest:</span><span class="hl-1"> </span><span class="hl-11">6</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-8">// 图片加载配置</span><br/><span class="hl-1"> </span><span class="hl-6">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">// 强制请求 WebP 格式的图片</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-8">// 图片质量设置为 80%</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><span class="hl-8">// (可选) 自定义 URL 转换逻辑</span><br/><span class="hl-1"> </span><span class="hl-8">// transform: (url, options) =&gt; {</span><br/><span class="hl-1"> </span><span class="hl-8">// return url + `?x-oss-process=image/format,webp/quality,q_80`;</span><br/><span class="hl-1"> </span><span class="hl-8">// }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
88
+ <pre><code class="typescript"><span class="hl-11">import</span><span class="hl-1"> { </span><span class="hl-5">Five</span><span class="hl-1"> } </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-10">&quot;@realsee/five&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1"> = </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-4">Five</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-7">// 自定义瓦片层级选择策略</span><br/><span class="hl-1"> </span><span class="hl-4">tileLevelForFov</span><span class="hl-5">:</span><span class="hl-1"> (</span><span class="hl-5">fov</span><span class="hl-1">, </span><span class="hl-5">viewSize</span><span class="hl-1">) </span><span class="hl-8">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">// 简单示例:FOV 小于 60 度时强制使用 Level 2,否则使用 Level 1</span><br/><span class="hl-1"> </span><span class="hl-11">if</span><span class="hl-1"> (</span><span class="hl-5">fov</span><span class="hl-1"> &lt; </span><span class="hl-3">60</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-11">return</span><span class="hl-1"> </span><span class="hl-3">2</span><span class="hl-1">;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> </span><span class="hl-11">return</span><span class="hl-1"> </span><span class="hl-3">1</span><span class="hl-1">;</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-7">// 限制并发请求数</span><br/><span class="hl-1"> </span><span class="hl-5">tileMaxRequest:</span><span class="hl-1"> </span><span class="hl-3">6</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">// 图片加载配置</span><br/><span class="hl-1"> </span><span class="hl-5">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">// 强制请求 WebP 格式的图片</span><br/><span class="hl-1"> </span><span class="hl-5">format:</span><span class="hl-1"> </span><span class="hl-10">&quot;webp&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">// 图片质量设置为 80%</span><br/><span class="hl-1"> </span><span class="hl-5">quality:</span><span class="hl-1"> </span><span class="hl-3">80</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">// (可选) 自定义 URL 转换逻辑</span><br/><span class="hl-1"> </span><span class="hl-7">// transform: (url, options) =&gt; {</span><br/><span class="hl-1"> </span><span class="hl-7">// return url + `?x-oss-process=image/format,webp/quality,q_80`;</span><br/><span class="hl-1"> </span><span class="hl-7">// }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
89
89
  </code><button type="button">Copy</button></pre>
90
90
 
91
91
  <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,7 +11,7 @@
11
11
  <p><strong>Definition</strong>: <a href="../../five/work/work.d.ts">WorkObserver</a></p>
12
12
  </blockquote>
13
13
  <p>这些方法挂载在 <code>WorkObserver</code> 实例上,依赖当前观察点 (Observer) 的位姿信息 (Position &amp; Quaternion) 以及 <code>work.transform</code> 进行计算。</p>
14
- <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">WorkObserver</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 将方向向量转化为全景图 uv</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">vector</span><span class="hl-8"> - 全局方向向量 (World Space)</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">uvOrigin</span><span class="hl-8"> - UV 原点位置,默认为 &#39;top-left&#39;</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-5">vectorToEquirectangularUv</span><span class="hl-1">(</span><span class="hl-6">vector</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-6">uvOrigin</span><span class="hl-1">?: </span><span class="hl-9">&#39;top-left&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;bottom-left&#39;</span><span class="hl-1">): </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Vector2</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 将全景图 uv 转化为方向向量</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">uv</span><span class="hl-8"> - 全景图 UV 坐标 [0, 1]</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">uvOrigin</span><span class="hl-8"> - UV 原点位置,默认为 &#39;top-left&#39;</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-5">equirectangularUvToVector</span><span class="hl-1">(</span><span class="hl-6">uv</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Vector2</span><span class="hl-1">, </span><span class="hl-6">uvOrigin</span><span class="hl-1">?: </span><span class="hl-9">&#39;top-left&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;bottom-left&#39;</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><br/><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 将方向向量转化为六视图 uv</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">vector</span><span class="hl-8"> - 全局方向向量 (World Space)</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">uvOrigin</span><span class="hl-8"> - UV 原点位置,默认为 &#39;top-left&#39;</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-5">vectorToCubemapUv</span><span class="hl-1">(</span><span class="hl-6">vector</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-6">uvOrigin</span><span class="hl-1">?: </span><span class="hl-9">&#39;top-left&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;bottom-left&#39;</span><span class="hl-1">): [</span><span class="hl-13">cubeFace</span><span class="hl-1">: </span><span class="hl-7">CubeFace</span><span class="hl-1">, </span><span class="hl-13">cubemapUv</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Vector2</span><span class="hl-1">];</span><br/><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 将六视图 uv 转化为方向向量</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">cubeFace</span><span class="hl-8"> - 立方体面 (&#39;up&#39; | &#39;down&#39; | &#39;left&#39; | &#39;right&#39; | &#39;front&#39; | &#39;back&#39;)</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">uv</span><span class="hl-8"> - 该面上的 UV 坐标 [0, 1]</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">uvOrigin</span><span class="hl-8"> - UV 原点位置,默认为 &#39;top-left&#39;</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-5">cubemapUvToVector</span><span class="hl-1">(</span><span class="hl-6">cubeFace</span><span class="hl-1">: </span><span class="hl-7">CubeFace</span><span class="hl-1">, </span><span class="hl-6">uv</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Vector2</span><span class="hl-1">, </span><span class="hl-6">uvOrigin</span><span class="hl-1">?: </span><span class="hl-9">&#39;top-left&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;bottom-left&#39;</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><br/><span class="hl-1">}</span><br/><br/><span class="hl-3">type</span><span class="hl-1"> </span><span class="hl-7">CubeFace</span><span class="hl-1"> = </span><span class="hl-9">&#39;up&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;down&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;left&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;right&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;front&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;back&#39;</span><span class="hl-1">;</span>
14
+ <pre><code class="typescript"><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">WorkObserver</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/**</span><br/><span class="hl-7"> * 将方向向量转化为全景图 uv</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">vector</span><span class="hl-7"> - 全局方向向量 (World Space)</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">uvOrigin</span><span class="hl-7"> - UV 原点位置,默认为 &#39;top-left&#39;</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-4">vectorToEquirectangularUv</span><span class="hl-1">(</span><span class="hl-5">vector</span><span class="hl-1">: </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Vector3</span><span class="hl-1">, </span><span class="hl-5">uvOrigin</span><span class="hl-1">?: </span><span class="hl-10">&#39;top-left&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;bottom-left&#39;</span><span class="hl-1">): </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Vector2</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/**</span><br/><span class="hl-7"> * 将全景图 uv 转化为方向向量</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">uv</span><span class="hl-7"> - 全景图 UV 坐标 [0, 1]</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">uvOrigin</span><span class="hl-7"> - UV 原点位置,默认为 &#39;top-left&#39;</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-4">equirectangularUvToVector</span><span class="hl-1">(</span><span class="hl-5">uv</span><span class="hl-1">: </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Vector2</span><span class="hl-1">, </span><span class="hl-5">uvOrigin</span><span class="hl-1">?: </span><span class="hl-10">&#39;top-left&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;bottom-left&#39;</span><span class="hl-1">): </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Vector3</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/**</span><br/><span class="hl-7"> * 将方向向量转化为六视图 uv</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">vector</span><span class="hl-7"> - 全局方向向量 (World Space)</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">uvOrigin</span><span class="hl-7"> - UV 原点位置,默认为 &#39;top-left&#39;</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-4">vectorToCubemapUv</span><span class="hl-1">(</span><span class="hl-5">vector</span><span class="hl-1">: </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Vector3</span><span class="hl-1">, </span><span class="hl-5">uvOrigin</span><span class="hl-1">?: </span><span class="hl-10">&#39;top-left&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;bottom-left&#39;</span><span class="hl-1">): [</span><span class="hl-13">cubeFace</span><span class="hl-1">: </span><span class="hl-9">CubeFace</span><span class="hl-1">, </span><span class="hl-13">cubemapUv</span><span class="hl-1">: </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Vector2</span><span class="hl-1">];</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/**</span><br/><span class="hl-7"> * 将六视图 uv 转化为方向向量</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">cubeFace</span><span class="hl-7"> - 立方体面 (&#39;up&#39; | &#39;down&#39; | &#39;left&#39; | &#39;right&#39; | &#39;front&#39; | &#39;back&#39;)</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">uv</span><span class="hl-7"> - 该面上的 UV 坐标 [0, 1]</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">uvOrigin</span><span class="hl-7"> - UV 原点位置,默认为 &#39;top-left&#39;</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-4">cubemapUvToVector</span><span class="hl-1">(</span><span class="hl-5">cubeFace</span><span class="hl-1">: </span><span class="hl-9">CubeFace</span><span class="hl-1">, </span><span class="hl-5">uv</span><span class="hl-1">: </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Vector2</span><span class="hl-1">, </span><span class="hl-5">uvOrigin</span><span class="hl-1">?: </span><span class="hl-10">&#39;top-left&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;bottom-left&#39;</span><span class="hl-1">): </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Vector3</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">type</span><span class="hl-1"> </span><span class="hl-9">CubeFace</span><span class="hl-1"> = </span><span class="hl-10">&#39;up&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;down&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;left&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;right&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;front&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;back&#39;</span><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>
@@ -57,17 +57,17 @@
57
57
  <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>
58
58
  <h3 id="1-点击全景图获取空间方向-click-to-vector" class="tsd-anchor-link">1. 点击全景图获取空间方向 (Click to Vector)<a href="#1-点击全景图获取空间方向-click-to-vector" 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>
59
59
  <p>假设你有一个全景图的点击事件,获取到了点击位置的 UV:</p>
60
- <pre><code class="typescript"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">observer</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">work</span><span class="hl-1">.</span><span class="hl-6">observers</span><span class="hl-1">[</span><span class="hl-11">0</span><span class="hl-1">];</span><br/><span class="hl-8">// 假设这是用户点击全景图后归一化得到的 UV (0~1)</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">clickUv</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><span class="hl-11">0.5</span><span class="hl-1">, </span><span class="hl-11">0.5</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 转换为世界空间的方向向量</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">direction</span><span class="hl-1"> = </span><span class="hl-6">observer</span><span class="hl-1">.</span><span class="hl-5">equirectangularUvToVector</span><span class="hl-1">(</span><span class="hl-6">clickUv</span><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-9">&#39;点击方向:&#39;</span><span class="hl-1">, </span><span class="hl-6">direction</span><span class="hl-1">);</span>
60
+ <pre><code class="typescript"><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">observer</span><span class="hl-1"> = </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">work</span><span class="hl-1">.</span><span class="hl-5">observers</span><span class="hl-1">[</span><span class="hl-3">0</span><span class="hl-1">];</span><br/><span class="hl-7">// 假设这是用户点击全景图后归一化得到的 UV (0~1)</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">clickUv</span><span class="hl-1"> = </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-6">THREE</span><span class="hl-1">.</span><span class="hl-4">Vector2</span><span class="hl-1">(</span><span class="hl-3">0.5</span><span class="hl-1">, </span><span class="hl-3">0.5</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 转换为世界空间的方向向量</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">direction</span><span class="hl-1"> = </span><span class="hl-5">observer</span><span class="hl-1">.</span><span class="hl-4">equirectangularUvToVector</span><span class="hl-1">(</span><span class="hl-5">clickUv</span><span class="hl-1">);</span><br/><br/><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-4">log</span><span class="hl-1">(</span><span class="hl-10">&#39;点击方向:&#39;</span><span class="hl-1">, </span><span class="hl-5">direction</span><span class="hl-1">);</span>
61
61
  </code><button type="button">Copy</button></pre>
62
62
 
63
63
  <h3 id="2-将空间点映射到全景图上-world-point-to-uv" class="tsd-anchor-link">2. 将空间点映射到全景图上 (World Point to UV)<a href="#2-将空间点映射到全景图上-world-point-to-uv" 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>
64
64
  <p>假设场景中有一个 3D 物体,你想知道它在当前全景图上的位置(例如打标签):</p>
65
- <pre><code class="typescript"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">observer</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">work</span><span class="hl-1">.</span><span class="hl-6">observers</span><span class="hl-1">[</span><span class="hl-11">0</span><span class="hl-1">];</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">objectPosition</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">Vector3</span><span class="hl-1">(</span><span class="hl-11">10</span><span class="hl-1">, </span><span class="hl-11">2</span><span class="hl-1">, </span><span class="hl-11">5</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 计算物体相对于观察点的方向向量</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">direction</span><span class="hl-1"> = </span><span class="hl-6">objectPosition</span><span class="hl-1">.</span><span class="hl-5">clone</span><span class="hl-1">().</span><span class="hl-5">sub</span><span class="hl-1">(</span><span class="hl-6">observer</span><span class="hl-1">.</span><span class="hl-6">position</span><span class="hl-1">).</span><span class="hl-5">normalize</span><span class="hl-1">();</span><br/><br/><span class="hl-8">// 获取全景图 UV</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">uv</span><span class="hl-1"> = </span><span class="hl-6">observer</span><span class="hl-1">.</span><span class="hl-5">vectorToEquirectangularUv</span><span class="hl-1">(</span><span class="hl-6">direction</span><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-9">`物体在全景图上的位置: u=</span><span class="hl-3">${</span><span class="hl-6">uv</span><span class="hl-12">.</span><span class="hl-6">x</span><span class="hl-3">}</span><span class="hl-9">, v=</span><span class="hl-3">${</span><span class="hl-6">uv</span><span class="hl-12">.</span><span class="hl-6">y</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">);</span>
65
+ <pre><code class="typescript"><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">observer</span><span class="hl-1"> = </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">work</span><span class="hl-1">.</span><span class="hl-5">observers</span><span class="hl-1">[</span><span class="hl-3">0</span><span class="hl-1">];</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">objectPosition</span><span class="hl-1"> = </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-6">THREE</span><span class="hl-1">.</span><span class="hl-4">Vector3</span><span class="hl-1">(</span><span class="hl-3">10</span><span class="hl-1">, </span><span class="hl-3">2</span><span class="hl-1">, </span><span class="hl-3">5</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 计算物体相对于观察点的方向向量</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">direction</span><span class="hl-1"> = </span><span class="hl-5">objectPosition</span><span class="hl-1">.</span><span class="hl-4">clone</span><span class="hl-1">().</span><span class="hl-4">sub</span><span class="hl-1">(</span><span class="hl-5">observer</span><span class="hl-1">.</span><span class="hl-5">position</span><span class="hl-1">).</span><span class="hl-4">normalize</span><span class="hl-1">();</span><br/><br/><span class="hl-7">// 获取全景图 UV</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">uv</span><span class="hl-1"> = </span><span class="hl-5">observer</span><span class="hl-1">.</span><span class="hl-4">vectorToEquirectangularUv</span><span class="hl-1">(</span><span class="hl-5">direction</span><span class="hl-1">);</span><br/><br/><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-4">log</span><span class="hl-1">(</span><span class="hl-10">`物体在全景图上的位置: u=</span><span class="hl-8">${</span><span class="hl-5">uv</span><span class="hl-12">.</span><span class="hl-5">x</span><span class="hl-8">}</span><span class="hl-10">, v=</span><span class="hl-8">${</span><span class="hl-5">uv</span><span class="hl-12">.</span><span class="hl-5">y</span><span class="hl-8">}</span><span class="hl-10">`</span><span class="hl-1">);</span>
66
66
  </code><button type="button">Copy</button></pre>
67
67
 
68
68
  <h3 id="3-处理-cubemap-坐标-cubemap-conversion" class="tsd-anchor-link">3. 处理 Cubemap 坐标 (Cubemap Conversion)<a href="#3-处理-cubemap-坐标-cubemap-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>
69
69
  <p>如果你使用的是六面体全景图资源:</p>
70
- <pre><code class="typescript"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">observer</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">work</span><span class="hl-1">.</span><span class="hl-6">observers</span><span class="hl-1">[</span><span class="hl-11">0</span><span class="hl-1">];</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">direction</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">Vector3</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">1</span><span class="hl-1">); </span><span class="hl-8">// 正前方</span><br/><br/><span class="hl-8">// 获取对应的面和 UV</span><br/><span class="hl-3">const</span><span class="hl-1"> [</span><span class="hl-4">face</span><span class="hl-1">, </span><span class="hl-4">uv</span><span class="hl-1">] = </span><span class="hl-6">observer</span><span class="hl-1">.</span><span class="hl-5">vectorToCubemapUv</span><span class="hl-1">(</span><span class="hl-6">direction</span><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-9">`正前方对应 Cubemap 的 </span><span class="hl-3">${</span><span class="hl-6">face</span><span class="hl-3">}</span><span class="hl-9"> 面,UV 为`</span><span class="hl-1">, </span><span class="hl-6">uv</span><span class="hl-1">);</span>
70
+ <pre><code class="typescript"><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">observer</span><span class="hl-1"> = </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">work</span><span class="hl-1">.</span><span class="hl-5">observers</span><span class="hl-1">[</span><span class="hl-3">0</span><span class="hl-1">];</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">direction</span><span class="hl-1"> = </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-6">THREE</span><span class="hl-1">.</span><span class="hl-4">Vector3</span><span class="hl-1">(</span><span class="hl-3">0</span><span class="hl-1">, </span><span class="hl-3">0</span><span class="hl-1">, -</span><span class="hl-3">1</span><span class="hl-1">); </span><span class="hl-7">// 正前方</span><br/><br/><span class="hl-7">// 获取对应的面和 UV</span><br/><span class="hl-8">const</span><span class="hl-1"> [</span><span class="hl-6">face</span><span class="hl-1">, </span><span class="hl-6">uv</span><span class="hl-1">] = </span><span class="hl-5">observer</span><span class="hl-1">.</span><span class="hl-4">vectorToCubemapUv</span><span class="hl-1">(</span><span class="hl-5">direction</span><span class="hl-1">);</span><br/><br/><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-4">log</span><span class="hl-1">(</span><span class="hl-10">`正前方对应 Cubemap 的 </span><span class="hl-8">${</span><span class="hl-5">face</span><span class="hl-8">}</span><span class="hl-10"> 面,UV 为`</span><span class="hl-1">, </span><span class="hl-5">uv</span><span class="hl-1">);</span>
71
71
  </code><button type="button">Copy</button></pre>
72
72
 
73
73
  <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>
@@ -45,12 +45,12 @@
45
45
  </ul>
46
46
  </li>
47
47
  </ul>
48
- <pre><code class="typescript"><span class="hl-8">// 方式 A: 直接访问 (获取当前层级配置)</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">currentVal</span><span class="hl-1"> = </span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-6">maxMemoryUsage</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 方式 B: 计算最终值 (包含继承逻辑)</span><br/><br/><span class="hl-8">// 1. 基础用法:仅继承默认值</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">finalVal</span><span class="hl-1"> = </span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">resolveValue</span><span class="hl-1">().</span><span class="hl-6">maxMemoryUsage</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 2. 进阶用法:指定继承源 (例如 ViewLayer 继承自 Model)</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">inheritedVal</span><span class="hl-1"> = </span><span class="hl-6">viewLayerParam</span><span class="hl-1">.</span><span class="hl-5">resolveValue</span><span class="hl-1">(</span><span class="hl-6">parentParameter</span><span class="hl-1">).</span><span class="hl-6">maxMemoryUsage</span><span class="hl-1">;</span>
48
+ <pre><code class="typescript"><span class="hl-7">// 方式 A: 直接访问 (获取当前层级配置)</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">currentVal</span><span class="hl-1"> = </span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-5">maxMemoryUsage</span><span class="hl-1">;</span><br/><br/><span class="hl-7">// 方式 B: 计算最终值 (包含继承逻辑)</span><br/><br/><span class="hl-7">// 1. 基础用法:仅继承默认值</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">finalVal</span><span class="hl-1"> = </span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">resolveValue</span><span class="hl-1">().</span><span class="hl-5">maxMemoryUsage</span><span class="hl-1">;</span><br/><br/><span class="hl-7">// 2. 进阶用法:指定继承源 (例如 ViewLayer 继承自 Model)</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">inheritedVal</span><span class="hl-1"> = </span><span class="hl-5">viewLayerParam</span><span class="hl-1">.</span><span class="hl-4">resolveValue</span><span class="hl-1">(</span><span class="hl-5">parentParameter</span><span class="hl-1">).</span><span class="hl-5">maxMemoryUsage</span><span class="hl-1">;</span>
49
49
  </code><button type="button">Copy</button></pre>
50
50
 
51
51
  <h4 id="2-methods-方法" class="tsd-anchor-link">2. Methods (方法)<a href="#2-methods-方法" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4>
52
52
  <p><code>Parameter</code> 实例提供了以下核心方法来管理配置:</p>
53
- <pre><code class="typescript"><span class="hl-3">class</span><span class="hl-1"> </span><span class="hl-7">Parameter</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 设置配置项</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">key</span><span class="hl-8"> 参数名 (如 &#39;opacity&#39;, &#39;maxMemoryUsage&#39;)</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">value</span><span class="hl-8"> 参数值</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-6">key</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1">, </span><span class="hl-6">value</span><span class="hl-1">: </span><span class="hl-7">any</span><span class="hl-1">): </span><span class="hl-7">void</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 重置配置项(移除当前层级的设置,恢复继承上游的值)</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">keys</span><span class="hl-8"> 要重置的参数名列表</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-5">reset</span><span class="hl-1">(...</span><span class="hl-6">keys</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1">[]): </span><span class="hl-7">void</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 获取经过继承计算后的最终值(每次调用创建新对象)</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">upstream</span><span class="hl-8"> 上游 Parameter 对象列表(通常由引擎自动传入)</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-5">resolveValue</span><span class="hl-1">(...</span><span class="hl-6">upstream</span><span class="hl-1">: </span><span class="hl-7">Parameter</span><span class="hl-1">[]): </span><span class="hl-7">ResolvedParameterValue</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 获取经过继承计算后的最终值(复用 target 对象,避免重复创建)</span><br/><span class="hl-8"> * 适用于高频调用场景(如逐帧更新),可显著减少 GC 压力。</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">target</span><span class="hl-8"> 用于写入结果的已有对象,其属性会被重置为默认值后重新赋值</span><br/><span class="hl-8"> * </span><span class="hl-3">@param</span><span class="hl-8"> </span><span class="hl-6">upstream</span><span class="hl-8"> 上游 Parameter 对象列表</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-3">static</span><span class="hl-1"> </span><span class="hl-5">resolveValueTo</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-6">target</span><span class="hl-1">: </span><span class="hl-7">Partial</span><span class="hl-1">&lt;</span><span class="hl-7">ResolvedParameterValue</span><span class="hl-1">&gt;,</span><br/><span class="hl-1"> ...</span><span class="hl-6">upstream</span><span class="hl-1">: </span><span class="hl-7">Partial</span><span class="hl-1">&lt;</span><span class="hl-7">ParameterValue</span><span class="hl-1">&gt;[]</span><br/><span class="hl-1"> ): </span><span class="hl-7">ResolvedParameterValue</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
53
+ <pre><code class="typescript"><span class="hl-8">class</span><span class="hl-1"> </span><span class="hl-9">Parameter</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/**</span><br/><span class="hl-7"> * 设置配置项</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">key</span><span class="hl-7"> 参数名 (如 &#39;opacity&#39;, &#39;maxMemoryUsage&#39;)</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">value</span><span class="hl-7"> 参数值</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-5">key</span><span class="hl-1">: </span><span class="hl-9">string</span><span class="hl-1">, </span><span class="hl-5">value</span><span class="hl-1">: </span><span class="hl-9">any</span><span class="hl-1">): </span><span class="hl-9">void</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/**</span><br/><span class="hl-7"> * 重置配置项(移除当前层级的设置,恢复继承上游的值)</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">keys</span><span class="hl-7"> 要重置的参数名列表</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-4">reset</span><span class="hl-1">(...</span><span class="hl-5">keys</span><span class="hl-1">: </span><span class="hl-9">string</span><span class="hl-1">[]): </span><span class="hl-9">void</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/**</span><br/><span class="hl-7"> * 获取经过继承计算后的最终值(每次调用创建新对象)</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">upstream</span><span class="hl-7"> 上游 Parameter 对象列表(通常由引擎自动传入)</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-4">resolveValue</span><span class="hl-1">(...</span><span class="hl-5">upstream</span><span class="hl-1">: </span><span class="hl-9">Parameter</span><span class="hl-1">[]): </span><span class="hl-9">ResolvedParameterValue</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-7">/**</span><br/><span class="hl-7"> * 获取经过继承计算后的最终值(复用 target 对象,避免重复创建)</span><br/><span class="hl-7"> * 适用于高频调用场景(如逐帧更新),可显著减少 GC 压力。</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">target</span><span class="hl-7"> 用于写入结果的已有对象,其属性会被重置为默认值后重新赋值</span><br/><span class="hl-7"> * </span><span class="hl-8">@param</span><span class="hl-7"> </span><span class="hl-5">upstream</span><span class="hl-7"> 上游 Parameter 对象列表</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-8">static</span><span class="hl-1"> </span><span class="hl-4">resolveValueTo</span><span class="hl-1">(</span><br/><span class="hl-1"> </span><span class="hl-5">target</span><span class="hl-1">: </span><span class="hl-9">Partial</span><span class="hl-1">&lt;</span><span class="hl-9">ResolvedParameterValue</span><span class="hl-1">&gt;,</span><br/><span class="hl-1"> ...</span><span class="hl-5">upstream</span><span class="hl-1">: </span><span class="hl-9">Partial</span><span class="hl-1">&lt;</span><span class="hl-9">ParameterValue</span><span class="hl-1">&gt;[]</span><br/><span class="hl-1"> ): </span><span class="hl-9">ResolvedParameterValue</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
54
54
  </code><button type="button">Copy</button></pre>
55
55
 
56
56
  <blockquote>
@@ -58,7 +58,7 @@
58
58
  </blockquote>
59
59
  <h4 id="3-version-版本标识" class="tsd-anchor-link">3. Version (版本标识)<a href="#3-version-版本标识" 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>
60
60
  <p><code>ResolvedParameterValue</code> 通过 <code>versionNumber: number</code> 标识当前配置的版本。引擎内部使用整数哈希(而非字符串拼接)计算版本号,用于高效的脏检查。</p>
61
- <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">ResolvedParameterValue</span><span class="hl-1"> </span><span class="hl-3">extends</span><span class="hl-1"> </span><span class="hl-7">ParameterValue</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 整数哈希,输入参数变化时值会改变,用于脏检查 */</span><br/><span class="hl-1"> </span><span class="hl-6">versionNumber</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
61
+ <pre><code class="typescript"><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">ResolvedParameterValue</span><span class="hl-1"> </span><span class="hl-8">extends</span><span class="hl-1"> </span><span class="hl-9">ParameterValue</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 整数哈希,输入参数变化时值会改变,用于脏检查 */</span><br/><span class="hl-1"> </span><span class="hl-5">versionNumber</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
62
62
  </code><button type="button">Copy</button></pre>
63
63
 
64
64
  <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>
@@ -81,19 +81,19 @@
81
81
  </blockquote>
82
82
  <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>
83
83
  <h3 id="1-基础配置-basic-usage" class="tsd-anchor-link">1. 基础配置 (Basic Usage)<a href="#1-基础配置-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>
84
- <pre><code class="typescript"><span class="hl-8">// 1. 设置全局最大显存 (影响所有模型)</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;maxMemoryUsage&#39;</span><span class="hl-1">, </span><span class="hl-11">512</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 2. 设置全局半透明</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;opacity&#39;</span><span class="hl-1">, </span><span class="hl-11">0.5</span><span class="hl-1">);</span>
84
+ <pre><code class="typescript"><span class="hl-7">// 1. 设置全局最大显存 (影响所有模型)</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-10">&#39;maxMemoryUsage&#39;</span><span class="hl-1">, </span><span class="hl-3">512</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 2. 设置全局半透明</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-10">&#39;opacity&#39;</span><span class="hl-1">, </span><span class="hl-3">0.5</span><span class="hl-1">);</span>
85
85
  </code><button type="button">Copy</button></pre>
86
86
 
87
87
  <h3 id="2-局部覆盖-override" class="tsd-anchor-link">2. 局部覆盖 (Override)<a href="#2-局部覆盖-override" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
88
- <pre><code class="typescript"><span class="hl-8">// 场景中大部分模型不产生阴影</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;castShadow&#39;</span><span class="hl-1">, </span><span class="hl-3">false</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 但让特定的“主角”模型产生阴影</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">heroModel</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">models</span><span class="hl-1">[</span><span class="hl-11">0</span><span class="hl-1">];</span><br/><span class="hl-6">heroModel</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;castShadow&#39;</span><span class="hl-1">, </span><span class="hl-3">true</span><span class="hl-1">);</span>
88
+ <pre><code class="typescript"><span class="hl-7">// 场景中大部分模型不产生阴影</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-10">&#39;castShadow&#39;</span><span class="hl-1">, </span><span class="hl-8">false</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 但让特定的“主角”模型产生阴影</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">heroModel</span><span class="hl-1"> = </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">models</span><span class="hl-1">[</span><span class="hl-3">0</span><span class="hl-1">];</span><br/><span class="hl-5">heroModel</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-10">&#39;castShadow&#39;</span><span class="hl-1">, </span><span class="hl-8">true</span><span class="hl-1">);</span>
89
89
  </code><button type="button">Copy</button></pre>
90
90
 
91
91
  <h3 id="3-重置配置-reset" class="tsd-anchor-link">3. 重置配置 (Reset)<a href="#3-重置配置-reset" 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>
92
- <pre><code class="typescript"><span class="hl-8">// 假设之前设置了 opacity</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;opacity&#39;</span><span class="hl-1">, </span><span class="hl-11">0.5</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// ... 一段时间后 ...</span><br/><br/><span class="hl-8">// 移除该设置,恢复默认值 (或继承值)</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">reset</span><span class="hl-1">(</span><span class="hl-9">&#39;opacity&#39;</span><span class="hl-1">);</span>
92
+ <pre><code class="typescript"><span class="hl-7">// 假设之前设置了 opacity</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-10">&#39;opacity&#39;</span><span class="hl-1">, </span><span class="hl-3">0.5</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// ... 一段时间后 ...</span><br/><br/><span class="hl-7">// 移除该设置,恢复默认值 (或继承值)</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">reset</span><span class="hl-1">(</span><span class="hl-10">&#39;opacity&#39;</span><span class="hl-1">);</span>
93
93
  </code><button type="button">Copy</button></pre>
94
94
 
95
95
  <h3 id="4-获取配置-get-value" class="tsd-anchor-link">4. 获取配置 (Get Value)<a href="#4-获取配置-get-value" 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
- <pre><code class="typescript"><span class="hl-8">// 获取当前对象上的配置(如果未设置,则为 undefined)</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">ownOpacity</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-6">opacity</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 获取最终生效的配置(计算继承链后的值)</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">finalOpacity</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">modelScene</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">resolveValue</span><span class="hl-1">().</span><span class="hl-6">opacity</span><span class="hl-1">;</span>
96
+ <pre><code class="typescript"><span class="hl-7">// 获取当前对象上的配置(如果未设置,则为 undefined)</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">ownOpacity</span><span class="hl-1"> = </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-5">opacity</span><span class="hl-1">;</span><br/><br/><span class="hl-7">// 获取最终生效的配置(计算继承链后的值)</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">finalOpacity</span><span class="hl-1"> = </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">modelScene</span><span class="hl-1">.</span><span class="hl-5">parameter</span><span class="hl-1">.</span><span class="hl-4">resolveValue</span><span class="hl-1">().</span><span class="hl-5">opacity</span><span class="hl-1">;</span>
97
97
  </code><button type="button">Copy</button></pre>
98
98
 
99
99
  <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>