@realsee/five 6.9.0-alpha.0 → 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 (266) 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 +7 -7
  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/react.useFiveAction.html +6 -6
  107. package/docs/functions/react.useFiveCurrentObserver.html +1 -1
  108. package/docs/functions/react.useFiveCurrentState.html +1 -1
  109. package/docs/functions/react.useFiveEventCallback.html +1 -1
  110. package/docs/functions/react.useFiveFloor.html +1 -1
  111. package/docs/functions/react.useFiveHelper.html +1 -1
  112. package/docs/functions/react.useFiveModelIntersectRaycaster.html +2 -2
  113. package/docs/functions/react.useFiveProject2d.html +2 -2
  114. package/docs/functions/react.useFiveSceneEffect.html +1 -1
  115. package/docs/functions/react.useFiveWork.html +2 -2
  116. package/docs/functions/vue.useFiveAction.html +8 -8
  117. package/docs/functions/vue.useFiveCurrentObserver.html +1 -1
  118. package/docs/functions/vue.useFiveCurrentState.html +1 -1
  119. package/docs/functions/vue.useFiveEventCallback.html +1 -1
  120. package/docs/functions/vue.useFiveFloor.html +1 -1
  121. package/docs/functions/vue.useFiveHelper.html +1 -1
  122. package/docs/functions/vue.useFiveModelIntersectRaycaster.html +2 -2
  123. package/docs/functions/vue.useFiveProject2d.html +2 -2
  124. package/docs/functions/vue.useFiveState.html +1 -1
  125. package/docs/functions/vue.useFiveWorks.html +2 -2
  126. package/docs/hierarchy.html +1 -1
  127. package/docs/interfaces/five.AddableObject.html +1 -1
  128. package/docs/interfaces/five.AjaxOptions.html +1 -1
  129. package/docs/interfaces/five.BaseEvent.html +1 -1
  130. package/docs/interfaces/five.BaseExtendableEvent.html +1 -1
  131. package/docs/interfaces/five.EventCallback.html +1 -1
  132. package/docs/interfaces/five.FiveInitArgs.html +2 -2
  133. package/docs/interfaces/five.GestureEvent.html +1 -1
  134. package/docs/interfaces/five.ImageOptions.html +1 -1
  135. package/docs/interfaces/five.IntersectEvent.html +1 -1
  136. package/docs/interfaces/five.IntersectMesh.html +1 -1
  137. package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
  138. package/docs/interfaces/five.Intersection.html +1 -1
  139. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
  140. package/docs/interfaces/five.ModeChangeEvent.html +1 -1
  141. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  142. package/docs/interfaces/five.ModelEvent.html +1 -1
  143. package/docs/interfaces/five.ModelSceneEvent.html +1 -1
  144. package/docs/interfaces/five.ModelTileEvent.html +1 -1
  145. package/docs/interfaces/five.MovePanoOptions.html +1 -1
  146. package/docs/interfaces/five.NetworkAbortError.html +1 -1
  147. package/docs/interfaces/five.NetworkFirbiddenError.html +1 -1
  148. package/docs/interfaces/five.NetworkOptions.html +1 -1
  149. package/docs/interfaces/five.NetworkProxyError.html +1 -1
  150. package/docs/interfaces/five.NetworkResourceEvent.html +1 -1
  151. package/docs/interfaces/five.NetworkResponseError.html +1 -1
  152. package/docs/interfaces/five.NetworkTimeoutError.html +1 -1
  153. package/docs/interfaces/five.ObjectEvent.html +1 -1
  154. package/docs/interfaces/five.PBMMaterial.html +1 -1
  155. package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
  156. package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
  157. package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
  158. package/docs/interfaces/five.PanoEvent.html +1 -1
  159. package/docs/interfaces/five.PanoPrepareEvent.html +1 -1
  160. package/docs/interfaces/five.PanoTextureEvent.html +1 -1
  161. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  162. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  163. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  164. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  165. package/docs/interfaces/five.ParameterValue.html +1 -1
  166. package/docs/interfaces/five.Pose.html +1 -1
  167. package/docs/interfaces/five.RenderEvent.html +1 -1
  168. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  169. package/docs/interfaces/five.State.html +1 -1
  170. package/docs/interfaces/five.StateEvent.html +1 -1
  171. package/docs/interfaces/five.TextureOptions.html +1 -1
  172. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  173. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  174. package/docs/interfaces/five.ViewLayer.html +1 -1
  175. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  176. package/docs/interfaces/five.WorkImage.html +1 -1
  177. package/docs/interfaces/five.WorkObserver.html +2 -2
  178. package/docs/interfaces/five.WorkObserverProto.html +1 -1
  179. package/docs/interfaces/five.WorkTile.html +1 -1
  180. package/docs/interfaces/five.WorksEvent.html +1 -1
  181. package/docs/interfaces/five.XRControllerEvent.html +1 -1
  182. package/docs/interfaces/five.XRGestureEvent.html +1 -1
  183. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  184. package/docs/interfaces/five.XRSessionEvent.html +1 -1
  185. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  186. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  187. package/docs/interfaces/plugins.BasePlugin.State.html +1 -1
  188. package/docs/interfaces/plugins.CSS2DPluginController.html +1 -1
  189. package/docs/interfaces/plugins.CSS2DPluginType.EventMap.html +1 -1
  190. package/docs/interfaces/plugins.CSS2DPluginType.State.html +1 -1
  191. package/docs/interfaces/plugins.CSS3DPluginController.html +1 -1
  192. package/docs/interfaces/plugins.CSS3DPluginType.EventMap.html +1 -1
  193. package/docs/interfaces/plugins.CSS3DPluginType.State.html +1 -1
  194. package/docs/interfaces/plugins.DynamicPathLinePluginController.html +1 -1
  195. package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +1 -1
  196. package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +1 -1
  197. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationController.html +1 -1
  198. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.EventMap.html +1 -1
  199. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.State.html +1 -1
  200. package/docs/interfaces/plugins.ItemMaskController.html +1 -1
  201. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  202. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  203. package/docs/interfaces/plugins.Object3DHelperPluginType.BaseController.html +1 -1
  204. package/docs/interfaces/plugins.Object3DHelperPluginType.BaseHelper.html +1 -1
  205. package/docs/interfaces/plugins.Object3DHelperPluginType.BoundingBoxController.html +1 -1
  206. package/docs/interfaces/plugins.Object3DHelperPluginType.MoveController.html +1 -1
  207. package/docs/interfaces/plugins.Object3DHelperPluginType.MoveHelperAbstract.html +1 -1
  208. package/docs/interfaces/plugins.Object3DHelperPluginType.RotateController.html +1 -1
  209. package/docs/interfaces/plugins.Object3DHelperPluginType.RotateHelperAbstract.html +1 -1
  210. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  211. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  212. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  213. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  214. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  215. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  216. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  217. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  218. package/docs/interfaces/plugins.TrajectoryController.html +1 -1
  219. package/docs/interfaces/react.FiveInjectionTypes.html +2 -2
  220. package/docs/interfaces/react.UseFivePluginOptions.html +1 -1
  221. package/docs/interfaces/react.UseFivePluginOptionsWithCreate.html +1 -1
  222. package/docs/modules/five.html +1 -1
  223. package/docs/modules.html +1 -1
  224. package/docs/types/five.FlowingFireworks3DPassLine.html +16 -0
  225. package/docs/types/five.ParseOptions.html +1 -1
  226. package/docs/types/plugins.BasePlugin.EventMap.html +1 -1
  227. package/docs/variables/react.FiveCanvas.html +1 -1
  228. package/docs/variables/react.useFiveScene.html +1 -1
  229. package/docs/variables/vue.FiveCanvas.html +1 -1
  230. package/docs/variables/vue.FiveProvider.html +1 -1
  231. package/five/index.js +177 -106
  232. package/five/index.mjs +795 -639
  233. package/five/model/objects/pbmGaussianSplattingObject.d.ts +5 -5
  234. package/five/renderer/index.d.ts +1 -1
  235. package/five/renderer/postprocessing/index.d.ts +1 -1
  236. package/five/renderer/postprocessing/passes/flowing-fireworks-3d-pass.d.ts +4 -5
  237. package/gltf-loader/index.js +3 -3
  238. package/gltf-loader/index.mjs +3 -3
  239. package/line/index.js +3 -3
  240. package/line/index.mjs +3 -3
  241. package/package.json +1 -1
  242. package/{pbmGaussianSplattingObject-B2uXNUOB.cjs → pbmGaussianSplattingObject-C6i7CUTu.cjs} +3 -3
  243. package/{pbmGaussianSplattingObject-yJQySQfR.js → pbmGaussianSplattingObject-CaE6q4r-.js} +16 -20
  244. package/plugins/index.js +2 -2
  245. package/plugins/index.mjs +2 -2
  246. package/react/index.js +2 -2
  247. package/react/index.mjs +2 -2
  248. package/shader-lib/index.js +2 -2
  249. package/shader-lib/index.mjs +2 -2
  250. package/sticker/index.js +3 -3
  251. package/sticker/index.mjs +3 -3
  252. package/umd/five-gltf-loader.js +3 -3
  253. package/umd/five-line.js +3 -3
  254. package/umd/five-plugins.js +2 -2
  255. package/umd/five-react.js +2 -2
  256. package/umd/five-shader-lib.js +2 -2
  257. package/umd/five-sticker.js +3 -3
  258. package/umd/five-vfx.js +2 -2
  259. package/umd/five-vue.js +2 -2
  260. package/umd/five.js +151 -80
  261. package/vfx/index.js +2 -2
  262. package/vfx/index.mjs +2 -2
  263. package/vue/index.js +2 -2
  264. package/vue/index.mjs +2 -2
  265. package/work-downloader/index.js +2 -2
  266. package/work-downloader/index.mjs +2 -2
@@ -12,18 +12,18 @@
12
12
  <p><strong>Definition</strong>: <a href="../../five/types/movePanoOptions.d.ts">MovePanoOptions</a></p>
13
13
  </blockquote>
14
14
  <p>点位移动参数配置。</p>
15
- <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">MovePanoOptions</span><span class="hl-1"> </span><span class="hl-3">extends</span><span class="hl-1"> </span><span class="hl-7">Partial</span><span class="hl-1">&lt;</span><span class="hl-7">Omit</span><span class="hl-1">&lt;</span><span class="hl-7">State</span><span class="hl-1">, </span><span class="hl-9">&quot;offset&quot;</span><span class="hl-1"> | </span><span class="hl-9">&#39;distance&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;mode&#39;</span><span class="hl-1">&gt;&gt; {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 动画效果: &#39;fly&#39; | &#39;fade&#39; | &#39;instant&#39; ... */</span><br/><span class="hl-1"> </span><span class="hl-6">effect</span><span class="hl-1">?: </span><span class="hl-7">MovePanoEffect</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">effectEasing</span><span class="hl-1">?: (</span><span class="hl-6">progress</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/**</span><br/><span class="hl-8"> * 运动耗时 (ms)</span><br/><span class="hl-8"> * - number: 固定时长</span><br/><span class="hl-8"> * - function: (distance, speed) =&gt; number 根据距离动态计算</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-6">duration</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1"> | ((</span><span class="hl-6">distance</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">, </span><span class="hl-6">speed</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">number</span><span class="hl-1">) | </span><span class="hl-7">string</span><span class="hl-1"> | </span><span class="hl-7">null</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">moveStartCallback</span><span class="hl-1">?: (</span><span class="hl-6">toState</span><span class="hl-1">: </span><span class="hl-7">State</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">void</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 运动结束回调 */</span><br/><span class="hl-1"> </span><span class="hl-5">moveEndCallback</span><span class="hl-1">?: (</span><span class="hl-6">state</span><span class="hl-1">: </span><span class="hl-7">State</span><span class="hl-1">) </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">void</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 运动被取消回调 */</span><br/><span class="hl-1"> </span><span class="hl-5">moveCancelCallback</span><span class="hl-1">?: () </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-7">void</span><span class="hl-1">;</span><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">MovePanoOptions</span><span class="hl-1"> </span><span class="hl-8">extends</span><span class="hl-1"> </span><span class="hl-9">Partial</span><span class="hl-1">&lt;</span><span class="hl-9">Omit</span><span class="hl-1">&lt;</span><span class="hl-9">State</span><span class="hl-1">, </span><span class="hl-10">&quot;offset&quot;</span><span class="hl-1"> | </span><span class="hl-10">&#39;distance&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;mode&#39;</span><span class="hl-1">&gt;&gt; {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 动画效果: &#39;fly&#39; | &#39;fade&#39; | &#39;instant&#39; ... */</span><br/><span class="hl-1"> </span><span class="hl-5">effect</span><span class="hl-1">?: </span><span class="hl-9">MovePanoEffect</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">effectEasing</span><span class="hl-1">?: (</span><span class="hl-5">progress</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">) </span><span class="hl-8">=&gt;</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-7"> * 运动耗时 (ms)</span><br/><span class="hl-7"> * - number: 固定时长</span><br/><span class="hl-7"> * - function: (distance, speed) =&gt; number 根据距离动态计算</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-5">duration</span><span class="hl-1">?: </span><span class="hl-9">number</span><span class="hl-1"> | ((</span><span class="hl-5">distance</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">, </span><span class="hl-5">speed</span><span class="hl-1">: </span><span class="hl-9">number</span><span class="hl-1">) </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-9">number</span><span class="hl-1">) | </span><span class="hl-9">string</span><span class="hl-1"> | </span><span class="hl-9">null</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">moveStartCallback</span><span class="hl-1">?: (</span><span class="hl-5">toState</span><span class="hl-1">: </span><span class="hl-9">State</span><span class="hl-1">) </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-9">void</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">moveEndCallback</span><span class="hl-1">?: (</span><span class="hl-5">state</span><span class="hl-1">: </span><span class="hl-9">State</span><span class="hl-1">) </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-9">void</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">moveCancelCallback</span><span class="hl-1">?: () </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-9">void</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
16
16
  </code><button type="button">Copy</button></pre>
17
17
 
18
18
  <h3 id="movepanoeffect" class="tsd-anchor-link">MovePanoEffect<a href="#movepanoeffect" 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
- <pre><code class="typescript"><span class="hl-3">type</span><span class="hl-1"> </span><span class="hl-7">MovePanoEffect</span><span class="hl-1"> =</span><br/><span class="hl-1"> | </span><span class="hl-9">&quot;fly&quot;</span><span class="hl-1"> </span><span class="hl-8">// 通过相机移动方式变化 (默认)</span><br/><span class="hl-1"> | </span><span class="hl-9">&quot;instant&quot;</span><span class="hl-1"> </span><span class="hl-8">// 直接变化 (无动画)</span><br/><span class="hl-1"> | </span><span class="hl-9">&quot;fade&quot;</span><span class="hl-1"> </span><span class="hl-8">// 通过渐变方式变化</span><br/><span class="hl-1"> | </span><span class="hl-9">&quot;model&quot;</span><span class="hl-1">; </span><span class="hl-8">// 通过过度到模型</span>
19
+ <pre><code class="typescript"><span class="hl-8">type</span><span class="hl-1"> </span><span class="hl-9">MovePanoEffect</span><span class="hl-1"> =</span><br/><span class="hl-1"> | </span><span class="hl-10">&quot;fly&quot;</span><span class="hl-1"> </span><span class="hl-7">// 通过相机移动方式变化 (默认)</span><br/><span class="hl-1"> | </span><span class="hl-10">&quot;instant&quot;</span><span class="hl-1"> </span><span class="hl-7">// 直接变化 (无动画)</span><br/><span class="hl-1"> | </span><span class="hl-10">&quot;fade&quot;</span><span class="hl-1"> </span><span class="hl-7">// 通过渐变方式变化</span><br/><span class="hl-1"> | </span><span class="hl-10">&quot;model&quot;</span><span class="hl-1">; </span><span class="hl-7">// 通过过度到模型</span>
20
20
  </code><button type="button">Copy</button></pre>
21
21
 
22
22
  <h2 id="core-methods-核心方法" class="tsd-anchor-link">Core Methods (核心方法)<a href="#core-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></h2>
23
23
  <p>Five 提供了多种层级的 API 来控制相机动画。</p>
24
24
  <h3 id="1-setstate" class="tsd-anchor-link">1. setState<a href="#1-setstate" 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>
25
25
  <p>最通用的状态更新方法。可以通过修改 <code>longitude</code> / <code>latitude</code> (旋转) 或 <code>fov</code> (缩放) 来产生动画。</p>
26
- <pre><code class="typescript"><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">setState</span><span class="hl-1">(</span><span class="hl-6">state</span><span class="hl-1">: </span><span class="hl-6">Partial</span><span class="hl-1">&lt;</span><span class="hl-6">State</span><span class="hl-1">&gt;, </span><span class="hl-6">immediately</span><span class="hl-1">?: </span><span class="hl-6">boolean</span><span class="hl-1">): </span><span class="hl-3">void</span>
26
+ <pre><code class="typescript"><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">setState</span><span class="hl-1">(</span><span class="hl-5">state</span><span class="hl-1">: </span><span class="hl-5">Partial</span><span class="hl-1">&lt;</span><span class="hl-5">State</span><span class="hl-1">&gt;, </span><span class="hl-5">immediately</span><span class="hl-1">?: </span><span class="hl-5">boolean</span><span class="hl-1">): </span><span class="hl-8">void</span>
27
27
  </code><button type="button">Copy</button></pre>
28
28
 
29
29
  <ul>
@@ -32,7 +32,7 @@
32
32
  </ul>
33
33
  <h3 id="2-movetopano" class="tsd-anchor-link">2. moveToPano<a href="#2-movetopano" 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>
34
34
  <p>专用于全景点位之间的切换。支持 &quot;飞行&quot; (Fly) 和 &quot;渐变&quot; (Fade) 两种效果。</p>
35
- <pre><code class="typescript"><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">moveToPano</span><span class="hl-1">(</span><span class="hl-6">panoIndex</span><span class="hl-1">: </span><span class="hl-6">number</span><span class="hl-1">, </span><span class="hl-6">options</span><span class="hl-1">?: </span><span class="hl-6">MovePanoOptions</span><span class="hl-1">): </span><span class="hl-7">Promise</span><span class="hl-1">&lt;</span><span class="hl-3">void</span><span class="hl-1">&gt;</span>
35
+ <pre><code class="typescript"><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">moveToPano</span><span class="hl-1">(</span><span class="hl-5">panoIndex</span><span class="hl-1">: </span><span class="hl-5">number</span><span class="hl-1">, </span><span class="hl-5">options</span><span class="hl-1">?: </span><span class="hl-5">MovePanoOptions</span><span class="hl-1">): </span><span class="hl-9">Promise</span><span class="hl-1">&lt;</span><span class="hl-8">void</span><span class="hl-1">&gt;</span>
36
36
  </code><button type="button">Copy</button></pre>
37
37
 
38
38
  <ul>
@@ -42,12 +42,12 @@
42
42
  </ul>
43
43
  <h3 id="3-changemode" class="tsd-anchor-link">3. changeMode<a href="#3-changemode" 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>
44
44
  <p>切换交互模式 (如从全景切换到模型鸟瞰)。</p>
45
- <pre><code class="typescript"><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">changeMode</span><span class="hl-1">(</span><span class="hl-6">mode</span><span class="hl-1">: </span><span class="hl-6">Mode</span><span class="hl-1">, </span><span class="hl-6">options</span><span class="hl-1">?, </span><span class="hl-6">animationOptions</span><span class="hl-1">?): </span><span class="hl-7">Promise</span><span class="hl-1">&lt;</span><span class="hl-3">void</span><span class="hl-1">&gt;</span>
45
+ <pre><code class="typescript"><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">changeMode</span><span class="hl-1">(</span><span class="hl-5">mode</span><span class="hl-1">: </span><span class="hl-5">Mode</span><span class="hl-1">, </span><span class="hl-5">options</span><span class="hl-1">?, </span><span class="hl-5">animationOptions</span><span class="hl-1">?): </span><span class="hl-9">Promise</span><span class="hl-1">&lt;</span><span class="hl-8">void</span><span class="hl-1">&gt;</span>
46
46
  </code><button type="button">Copy</button></pre>
47
47
 
48
48
  <h3 id="4-updatecamera" class="tsd-anchor-link">4. updateCamera<a href="#4-updatecamera" 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>
49
49
  <p>在不切换全景点位的情况下,将相机平滑动画到目标位姿。适用于&quot;定点环顾&quot;或&quot;聚焦某个方向&quot;等场景。</p>
50
- <pre><code class="typescript"><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">updateCamera</span><span class="hl-1">(</span><span class="hl-6">pose</span><span class="hl-1">: </span><span class="hl-6">Partial</span><span class="hl-1">&lt;</span><span class="hl-6">Pose</span><span class="hl-1">&gt;, </span><span class="hl-6">duration</span><span class="hl-1">: </span><span class="hl-6">number</span><span class="hl-1">, </span><span class="hl-6">userAction</span><span class="hl-1">?: </span><span class="hl-6">boolean</span><span class="hl-1">): </span><span class="hl-7">Promise</span><span class="hl-1">&lt;</span><span class="hl-3">void</span><span class="hl-1">&gt;</span>
50
+ <pre><code class="typescript"><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">updateCamera</span><span class="hl-1">(</span><span class="hl-5">pose</span><span class="hl-1">: </span><span class="hl-5">Partial</span><span class="hl-1">&lt;</span><span class="hl-5">Pose</span><span class="hl-1">&gt;, </span><span class="hl-5">duration</span><span class="hl-1">: </span><span class="hl-5">number</span><span class="hl-1">, </span><span class="hl-5">userAction</span><span class="hl-1">?: </span><span class="hl-5">boolean</span><span class="hl-1">): </span><span class="hl-9">Promise</span><span class="hl-1">&lt;</span><span class="hl-8">void</span><span class="hl-1">&gt;</span>
51
51
  </code><button type="button">Copy</button></pre>
52
52
 
53
53
  <ul>
@@ -135,22 +135,22 @@
135
135
  <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>
136
136
  <h3 id="1-旋转视角-rotate-camera" class="tsd-anchor-link">1. 旋转视角 (Rotate Camera)<a href="#1-旋转视角-rotate-camera" 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>
137
137
  <p>平滑旋转到指定角度。</p>
138
- <pre><code class="typescript"><span class="hl-8">// 旋转到水平 0 度,垂直 0 度</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">setState</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">longitude:</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">latitude:</span><span class="hl-1"> </span><span class="hl-11">0</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-8">// 立即跳转 (无动画)</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">setState</span><span class="hl-1">({ </span><span class="hl-6">longitude:</span><span class="hl-1"> </span><span class="hl-6">Math</span><span class="hl-1">.</span><span class="hl-4">PI</span><span class="hl-1"> }, </span><span class="hl-3">true</span><span class="hl-1">);</span>
138
+ <pre><code class="typescript"><span class="hl-7">// 旋转到水平 0 度,垂直 0 度</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">setState</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-5">longitude:</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">latitude:</span><span class="hl-1"> </span><span class="hl-3">0</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-7">// 立即跳转 (无动画)</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">setState</span><span class="hl-1">({ </span><span class="hl-5">longitude:</span><span class="hl-1"> </span><span class="hl-5">Math</span><span class="hl-1">.</span><span class="hl-6">PI</span><span class="hl-1"> }, </span><span class="hl-8">true</span><span class="hl-1">);</span>
139
139
  </code><button type="button">Copy</button></pre>
140
140
 
141
141
  <h3 id="2-切换全景点-change-pano" class="tsd-anchor-link">2. 切换全景点 (Change Pano)<a href="#2-切换全景点-change-pano" 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>
142
142
  <p>模拟行走效果切换到下一个房间。</p>
143
- <pre><code class="typescript"><span class="hl-8">// 飞向索引为 2 的全景点</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">moveToPano</span><span class="hl-1">(</span><span class="hl-11">2</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">effect:</span><span class="hl-1"> </span><span class="hl-9">&#39;fly&#39;</span><span class="hl-1">, </span><span class="hl-8">// 飞行效果</span><br/><span class="hl-1"> </span><span class="hl-6">duration:</span><span class="hl-1"> </span><span class="hl-11">1500</span><span class="hl-1">, </span><span class="hl-8">// 1.5秒</span><br/><span class="hl-1"> </span><span class="hl-5">moveEndCallback</span><span class="hl-6">:</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">&quot;到达目的地&quot;</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
143
+ <pre><code class="typescript"><span class="hl-7">// 飞向索引为 2 的全景点</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">moveToPano</span><span class="hl-1">(</span><span class="hl-3">2</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-5">effect:</span><span class="hl-1"> </span><span class="hl-10">&#39;fly&#39;</span><span class="hl-1">, </span><span class="hl-7">// 飞行效果</span><br/><span class="hl-1"> </span><span class="hl-5">duration:</span><span class="hl-1"> </span><span class="hl-3">1500</span><span class="hl-1">, </span><span class="hl-7">// 1.5秒</span><br/><span class="hl-1"> </span><span class="hl-4">moveEndCallback</span><span class="hl-5">:</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">&quot;到达目的地&quot;</span><span class="hl-1">);</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
144
144
  </code><button type="button">Copy</button></pre>
145
145
 
146
146
  <h3 id="3-模态切换-change-mode" class="tsd-anchor-link">3. 模态切换 (Change Mode)<a href="#3-模态切换-change-mode" 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>
147
147
  <p>从全景模式切换到户型图模式。</p>
148
- <pre><code class="typescript"><span class="hl-8">// 切换到 Floorplan 模式</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">changeMode</span><span class="hl-1">(</span><span class="hl-9">&#39;Floorplan&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 切换回 Panorama 模式,并指定进入时的视角</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">setState</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">mode:</span><span class="hl-1"> </span><span class="hl-9">&#39;Panorama&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">panoIndex:</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">longitude:</span><span class="hl-1"> </span><span class="hl-6">Math</span><span class="hl-1">.</span><span class="hl-4">PI</span><span class="hl-1"> / </span><span class="hl-11">2</span><br/><span class="hl-1">});</span>
148
+ <pre><code class="typescript"><span class="hl-7">// 切换到 Floorplan 模式</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">changeMode</span><span class="hl-1">(</span><span class="hl-10">&#39;Floorplan&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 切换回 Panorama 模式,并指定进入时的视角</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">setState</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-5">mode:</span><span class="hl-1"> </span><span class="hl-10">&#39;Panorama&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">panoIndex:</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">longitude:</span><span class="hl-1"> </span><span class="hl-5">Math</span><span class="hl-1">.</span><span class="hl-6">PI</span><span class="hl-1"> / </span><span class="hl-3">2</span><br/><span class="hl-1">});</span>
149
149
  </code><button type="button">Copy</button></pre>
150
150
 
151
151
  <h3 id="4-自动巡更-auto-tour" class="tsd-anchor-link">4. 自动巡更 (Auto Tour)<a href="#4-自动巡更-auto-tour" 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>
152
152
  <p>通过连续调用 <code>setState</code> 或 <code>moveToPano</code> 实现简单的自动导览。</p>
153
- <pre><code class="typescript"><span class="hl-3">async</span><span class="hl-1"> </span><span class="hl-3">function</span><span class="hl-1"> </span><span class="hl-5">startTour</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-8">// 1. 先看天花板</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">setState</span><span class="hl-1">({ </span><span class="hl-6">latitude:</span><span class="hl-1"> </span><span class="hl-6">Math</span><span class="hl-1">.</span><span class="hl-4">PI</span><span class="hl-1"> / </span><span class="hl-11">3</span><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-10">await</span><span class="hl-1"> </span><span class="hl-5">wait</span><span class="hl-1">(</span><span class="hl-11">2000</span><span class="hl-1">); </span><span class="hl-8">// 等待动画完成</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 2. 移动到下一个点</span><br/><span class="hl-1"> </span><span class="hl-10">await</span><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">moveToPano</span><span class="hl-1">(</span><span class="hl-11">1</span><span class="hl-1">, { </span><span class="hl-6">effect:</span><span class="hl-1"> </span><span class="hl-9">&#39;fly&#39;</span><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 3. 切换到模型鸟瞰</span><br/><span class="hl-1"> </span><span class="hl-10">await</span><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">changeMode</span><span class="hl-1">(</span><span class="hl-9">&#39;Mapview&#39;</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">wait</span><span class="hl-1">(</span><span class="hl-6">ms</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-10">return</span><span class="hl-1"> </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-7">Promise</span><span class="hl-1">(</span><span class="hl-6">resolve</span><span class="hl-1"> </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-5">setTimeout</span><span class="hl-1">(</span><span class="hl-6">resolve</span><span class="hl-1">, </span><span class="hl-6">ms</span><span class="hl-1">));</span><br/><span class="hl-1">}</span>
153
+ <pre><code class="typescript"><span class="hl-8">async</span><span class="hl-1"> </span><span class="hl-8">function</span><span class="hl-1"> </span><span class="hl-4">startTour</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-7">// 1. 先看天花板</span><br/><span class="hl-1"> </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">setState</span><span class="hl-1">({ </span><span class="hl-5">latitude:</span><span class="hl-1"> </span><span class="hl-5">Math</span><span class="hl-1">.</span><span class="hl-6">PI</span><span class="hl-1"> / </span><span class="hl-3">3</span><span class="hl-1"> });</span><br/><span class="hl-1"> </span><span class="hl-11">await</span><span class="hl-1"> </span><span class="hl-4">wait</span><span class="hl-1">(</span><span class="hl-3">2000</span><span class="hl-1">); </span><span class="hl-7">// 等待动画完成</span><br/><br/><span class="hl-1"> </span><span class="hl-7">// 2. 移动到下一个点</span><br/><span class="hl-1"> </span><span class="hl-11">await</span><span class="hl-1"> </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">moveToPano</span><span class="hl-1">(</span><span class="hl-3">1</span><span class="hl-1">, { </span><span class="hl-5">effect:</span><span class="hl-1"> </span><span class="hl-10">&#39;fly&#39;</span><span class="hl-1"> });</span><br/><br/><span class="hl-1"> </span><span class="hl-7">// 3. 切换到模型鸟瞰</span><br/><span class="hl-1"> </span><span class="hl-11">await</span><span class="hl-1"> </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">changeMode</span><span class="hl-1">(</span><span class="hl-10">&#39;Mapview&#39;</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">wait</span><span class="hl-1">(</span><span class="hl-5">ms</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-11">return</span><span class="hl-1"> </span><span class="hl-8">new</span><span class="hl-1"> </span><span class="hl-9">Promise</span><span class="hl-1">(</span><span class="hl-5">resolve</span><span class="hl-1"> </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-4">setTimeout</span><span class="hl-1">(</span><span class="hl-5">resolve</span><span class="hl-1">, </span><span class="hl-5">ms</span><span class="hl-1">));</span><br/><span class="hl-1">}</span>
154
154
  </code><button type="button">Copy</button></pre>
155
155
 
156
156
  <h2 id="common-pitfalls" class="tsd-anchor-link">Common Pitfalls<a href="#common-pitfalls" 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>
@@ -10,7 +10,7 @@
10
10
  <blockquote>
11
11
  <p><strong>Definition</strong>: <a href="../../five/model/materials/pbmMaterial.d.ts">PBMClipperParameter</a></p>
12
12
  </blockquote>
13
- <pre><code class="typescript"><span class="hl-8">/** 模型裁切参数 */</span><br/><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">PBMClipperParameter</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">@description</span><br/><span class="hl-8"> * 定义了一个变换后的立方体空间。</span><br/><span class="hl-8"> * 基础形状为边长为 1 的立方体,中心在 (0,0,0),范围 [-0.5, 0.5]。</span><br/><span class="hl-8"> * 凡是落在这个变换后立方体内部的模型点,都会被丢弃 (discard)。</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-6">clippingBoxMatrix</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Matrix4</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">@description</span><br/><span class="hl-8"> * 如果指定,则裁切仅对该楼层的点云生效。</span><br/><span class="hl-8"> * 如果未指定 (undefined),则对所有楼层生效。</span><br/><span class="hl-8"> */</span><br/><span class="hl-1"> </span><span class="hl-6">floorIndex</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
13
+ <pre><code class="typescript"><span class="hl-7">/** 模型裁切参数 */</span><br/><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">PBMClipperParameter</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">@description</span><br/><span class="hl-7"> * 定义了一个变换后的立方体空间。</span><br/><span class="hl-7"> * 基础形状为边长为 1 的立方体,中心在 (0,0,0),范围 [-0.5, 0.5]。</span><br/><span class="hl-7"> * 凡是落在这个变换后立方体内部的模型点,都会被丢弃 (discard)。</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-5">clippingBoxMatrix</span><span class="hl-1">: </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Matrix4</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">@description</span><br/><span class="hl-7"> * 如果指定,则裁切仅对该楼层的点云生效。</span><br/><span class="hl-7"> * 如果未指定 (undefined),则对所有楼层生效。</span><br/><span class="hl-7"> */</span><br/><span class="hl-1"> </span><span class="hl-5">floorIndex</span><span class="hl-1">?: </span><span class="hl-9">number</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
14
14
  </code><button type="button">Copy</button></pre>
15
15
 
16
16
  <h2 id="concepts" class="tsd-anchor-link">Concepts<a href="#concepts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
@@ -49,12 +49,12 @@
49
49
  <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>
50
50
  <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>
51
51
  <p>创建一个不可见的 Box,将其位置和大小作为裁切区域。</p>
52
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> </span><span class="hl-3">*</span><span class="hl-1"> </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-6">THREE</span><span class="hl-1"> </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;three&#39;</span><span class="hl-1">;</span><br/><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">Five</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 1. 创建一个辅助 Mesh 来定义裁切区域</span><br/><span class="hl-8">// 注意:必须使用 1x1x1 的 BoxGeometry,因为 Shader 是基于单位立方体判断的</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">clipperMesh</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">Mesh</span><span class="hl-1">(</span><br/><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">BoxGeometry</span><span class="hl-1">(</span><span class="hl-11">1</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1">),</span><br/><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">MeshBasicMaterial</span><span class="hl-1">({ </span><span class="hl-6">color:</span><span class="hl-1"> </span><span class="hl-11">0xff0000</span><span class="hl-1">, </span><span class="hl-6">wireframe:</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-8">// 2. 设置裁切盒的位置、旋转和缩放</span><br/><span class="hl-6">clipperMesh</span><span class="hl-1">.</span><span class="hl-6">position</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">1.5</span><span class="hl-1">, </span><span class="hl-11">0</span><span class="hl-1">); </span><span class="hl-8">// 抬高位置</span><br/><span class="hl-6">clipperMesh</span><span class="hl-1">.</span><span class="hl-6">scale</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-11">2</span><span class="hl-1">, </span><span class="hl-11">3</span><span class="hl-1">, </span><span class="hl-11">2</span><span class="hl-1">); </span><span class="hl-8">// 设定大小为 2x3x2</span><br/><span class="hl-6">clipperMesh</span><span class="hl-1">.</span><span class="hl-6">rotation</span><span class="hl-1">.</span><span class="hl-6">y</span><span class="hl-1"> = </span><span class="hl-6">Math</span><span class="hl-1">.</span><span class="hl-4">PI</span><span class="hl-1"> / </span><span class="hl-11">4</span><span class="hl-1">; </span><span class="hl-8">// 旋转 45 度</span><br/><br/><span class="hl-8">// 更新矩阵,确保 .matrix 属性是最新的</span><br/><span class="hl-6">clipperMesh</span><span class="hl-1">.</span><span class="hl-5">updateMatrix</span><span class="hl-1">();</span><br/><br/><span class="hl-8">// (可选) 将辅助 Mesh 加入场景以便调试看到范围</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">scene</span><span class="hl-1">.</span><span class="hl-5">add</span><span class="hl-1">(</span><span class="hl-6">clipperMesh</span><span class="hl-1">);</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">model</span><span class="hl-1">.</span><span class="hl-6">clippers</span><span class="hl-1"> = [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">clippingBoxMatrix:</span><span class="hl-1"> </span><span class="hl-6">clipperMesh</span><span class="hl-1">.</span><span class="hl-6">matrix</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-8">// floorIndex: 0 // 可选:仅裁切第 0 层</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">];</span><br/><br/><span class="hl-8">// 4. 触发重绘</span><br/><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>
52
+ <pre><code class="typescript"><span class="hl-11">import</span><span class="hl-1"> </span><span class="hl-8">*</span><span class="hl-1"> </span><span class="hl-11">as</span><span class="hl-1"> </span><span class="hl-5">THREE</span><span class="hl-1"> </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-10">&#39;three&#39;</span><span class="hl-1">;</span><br/><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">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-7">// 1. 创建一个辅助 Mesh 来定义裁切区域</span><br/><span class="hl-7">// 注意:必须使用 1x1x1 的 BoxGeometry,因为 Shader 是基于单位立方体判断的</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">clipperMesh</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">Mesh</span><span class="hl-1">(</span><br/><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">BoxGeometry</span><span class="hl-1">(</span><span class="hl-3">1</span><span class="hl-1">, </span><span class="hl-3">1</span><span class="hl-1">, </span><span class="hl-3">1</span><span class="hl-1">),</span><br/><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">MeshBasicMaterial</span><span class="hl-1">({ </span><span class="hl-5">color:</span><span class="hl-1"> </span><span class="hl-3">0xff0000</span><span class="hl-1">, </span><span class="hl-5">wireframe:</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-7">// 2. 设置裁切盒的位置、旋转和缩放</span><br/><span class="hl-5">clipperMesh</span><span class="hl-1">.</span><span class="hl-5">position</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-3">0</span><span class="hl-1">, </span><span class="hl-3">1.5</span><span class="hl-1">, </span><span class="hl-3">0</span><span class="hl-1">); </span><span class="hl-7">// 抬高位置</span><br/><span class="hl-5">clipperMesh</span><span class="hl-1">.</span><span class="hl-5">scale</span><span class="hl-1">.</span><span class="hl-4">set</span><span class="hl-1">(</span><span class="hl-3">2</span><span class="hl-1">, </span><span class="hl-3">3</span><span class="hl-1">, </span><span class="hl-3">2</span><span class="hl-1">); </span><span class="hl-7">// 设定大小为 2x3x2</span><br/><span class="hl-5">clipperMesh</span><span class="hl-1">.</span><span class="hl-5">rotation</span><span class="hl-1">.</span><span class="hl-5">y</span><span class="hl-1"> = </span><span class="hl-5">Math</span><span class="hl-1">.</span><span class="hl-6">PI</span><span class="hl-1"> / </span><span class="hl-3">4</span><span class="hl-1">; </span><span class="hl-7">// 旋转 45 度</span><br/><br/><span class="hl-7">// 更新矩阵,确保 .matrix 属性是最新的</span><br/><span class="hl-5">clipperMesh</span><span class="hl-1">.</span><span class="hl-4">updateMatrix</span><span class="hl-1">();</span><br/><br/><span class="hl-7">// (可选) 将辅助 Mesh 加入场景以便调试看到范围</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">scene</span><span class="hl-1">.</span><span class="hl-4">add</span><span class="hl-1">(</span><span class="hl-5">clipperMesh</span><span class="hl-1">);</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">model</span><span class="hl-1">.</span><span class="hl-5">clippers</span><span class="hl-1"> = [</span><br/><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">clippingBoxMatrix:</span><span class="hl-1"> </span><span class="hl-5">clipperMesh</span><span class="hl-1">.</span><span class="hl-5">matrix</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-7">// floorIndex: 0 // 可选:仅裁切第 0 层</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">];</span><br/><br/><span class="hl-7">// 4. 触发重绘</span><br/><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>
53
53
  </code><button type="button">Copy</button></pre>
54
54
 
55
55
  <h3 id="动态更新-dynamic-update" class="tsd-anchor-link">动态更新 (Dynamic Update)<a href="#动态更新-dynamic-update" 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>
56
56
  <p>如果需要动态移动裁切盒,需要重新赋值 <code>five.model.clippers</code> 或手动触发更新机制(虽然 setter 会自动触发更新,但如果只修改数组内部对象可能需要重新赋值)。</p>
57
- <pre><code class="typescript"><span class="hl-3">function</span><span class="hl-1"> </span><span class="hl-5">updateClipper</span><span class="hl-1">(</span><span class="hl-6">mesh</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Mesh</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-6">mesh</span><span class="hl-1">.</span><span class="hl-5">updateMatrix</span><span class="hl-1">();</span><br/><br/><span class="hl-1"> </span><span class="hl-8">// 重新赋值以触发 Five 内部的 setter 和 uniform 更新</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-6">clippers</span><span class="hl-1"> = [{</span><br/><span class="hl-1"> </span><span class="hl-6">clippingBoxMatrix:</span><span class="hl-1"> </span><span class="hl-6">mesh</span><span class="hl-1">.</span><span class="hl-6">matrix</span><br/><span class="hl-1"> }];</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">// 在动画循环或交互事件中调用</span><br/><span class="hl-8">// ...</span>
57
+ <pre><code class="typescript"><span class="hl-8">function</span><span class="hl-1"> </span><span class="hl-4">updateClipper</span><span class="hl-1">(</span><span class="hl-5">mesh</span><span class="hl-1">: </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Mesh</span><span class="hl-1">) {</span><br/><span class="hl-1"> </span><span class="hl-5">mesh</span><span class="hl-1">.</span><span class="hl-4">updateMatrix</span><span class="hl-1">();</span><br/><br/><span class="hl-1"> </span><span class="hl-7">// 重新赋值以触发 Five 内部的 setter 和 uniform 更新</span><br/><span class="hl-1"> </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">model</span><span class="hl-1">.</span><span class="hl-5">clippers</span><span class="hl-1"> = [{</span><br/><span class="hl-1"> </span><span class="hl-5">clippingBoxMatrix:</span><span class="hl-1"> </span><span class="hl-5">mesh</span><span class="hl-1">.</span><span class="hl-5">matrix</span><br/><span class="hl-1"> }];</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-7">// 在动画循环或交互事件中调用</span><br/><span class="hl-7">// ...</span>
58
58
  </code><button type="button">Copy</button></pre>
59
59
 
60
60
  <h2 id="debugging" class="tsd-anchor-link">Debugging<a href="#debugging" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
@@ -11,12 +11,12 @@
11
11
  </blockquote>
12
12
  <h3 id="rootmeta" class="tsd-anchor-link">RootMeta<a href="#rootmeta" 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>
13
13
  <p>3D Tiles <code>rootMeta</code> 字段中定义的坐标系元数据。</p>
14
- <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">RootMeta</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 模型垂直轴向 (如 &quot;Z&quot;, &quot;-Y&quot;) */</span><br/><span class="hl-1"> </span><span class="hl-6">upAxis</span><span class="hl-1">?: </span><span class="hl-7">string</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">coordinate</span><span class="hl-1">?: </span><span class="hl-7">Coordinate</span><span class="hl-1">;</span><br/><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">RootMeta</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 模型垂直轴向 (如 &quot;Z&quot;, &quot;-Y&quot;) */</span><br/><span class="hl-1"> </span><span class="hl-5">upAxis</span><span class="hl-1">?: </span><span class="hl-9">string</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">coordinate</span><span class="hl-1">?: </span><span class="hl-9">Coordinate</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
15
15
  </code><button type="button">Copy</button></pre>
16
16
 
17
17
  <h3 id="coordinate" class="tsd-anchor-link">Coordinate<a href="#coordinate" 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>
18
18
  <p>描述 ECEF 与 ENU 之间的转换关系。</p>
19
- <pre><code class="typescript"><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">Coordinate</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">ground_height</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">/** ECEF 到 ENU 的转换矩阵 (4x4 数组) */</span><br/><span class="hl-1"> </span><span class="hl-6">pose_ecef_to_enu</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">/** ENU 到 ECEF 的转换矩阵 (4x4 数组) */</span><br/><span class="hl-1"> </span><span class="hl-6">pose_enu_to_ecef</span><span class="hl-1">?: </span><span class="hl-7">number</span><span class="hl-1">[];</span><br/><span class="hl-1">}</span>
19
+ <pre><code class="typescript"><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">Coordinate</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">ground_height</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">/** ECEF 到 ENU 的转换矩阵 (4x4 数组) */</span><br/><span class="hl-1"> </span><span class="hl-5">pose_ecef_to_enu</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">/** ENU 到 ECEF 的转换矩阵 (4x4 数组) */</span><br/><span class="hl-1"> </span><span class="hl-5">pose_enu_to_ecef</span><span class="hl-1">?: </span><span class="hl-9">number</span><span class="hl-1">[];</span><br/><span class="hl-1">}</span>
20
20
  </code><button type="button">Copy</button></pre>
21
21
 
22
22
  <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>
@@ -162,7 +162,7 @@
162
162
  <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>
163
163
  <h3 id="坐标转换-coordinate-transformation" class="tsd-anchor-link">坐标转换 (Coordinate Transformation)<a href="#坐标转换-coordinate-transformation" 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>
164
164
  <p>推荐在与后端或算法交互时,将 Local 坐标转换为 ENU 坐标。</p>
165
- <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> </span><span class="hl-3">*</span><span class="hl-1"> </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-6">THREE</span><span class="hl-1"> </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;three&#39;</span><span class="hl-1">;</span><br/><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">ViewLayer</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 假设已加载 ViewLayer</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">viewLayer</span><span class="hl-1">: </span><span class="hl-7">ViewLayer</span><span class="hl-1"> = ...;</span><br/><br/><span class="hl-8">// 1. 获取场景中某点的坐标 (Local Y-up)</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">localPosition</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">20</span><span class="hl-1">, </span><span class="hl-11">30</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 2. 转换为 ENU 坐标 (Z-up) 用于传输给后端/算法</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">enuPosition</span><span class="hl-1"> = </span><span class="hl-6">viewLayer</span><span class="hl-1">.</span><span class="hl-5">localToEnu</span><span class="hl-1">(</span><span class="hl-6">localPosition</span><span class="hl-1">.</span><span class="hl-5">clone</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">`Local: </span><span class="hl-3">${</span><span class="hl-6">localPosition</span><span class="hl-12">.</span><span class="hl-5">toArray</span><span class="hl-12">()</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">); </span><span class="hl-8">// [x, y, z] (y-up)</span><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">`ENU: </span><span class="hl-3">${</span><span class="hl-6">enuPosition</span><span class="hl-12">.</span><span class="hl-5">toArray</span><span class="hl-12">()</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">); </span><span class="hl-8">// [x, y, z] (z-up)</span><br/><br/><span class="hl-8">// 3. 将 ECEF 坐标转换为 Local 坐标用于显示</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">ecefPosition</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><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">displayPosition</span><span class="hl-1"> = </span><span class="hl-6">viewLayer</span><span class="hl-1">.</span><span class="hl-5">ecefToLocal</span><span class="hl-1">(</span><span class="hl-6">ecefPosition</span><span class="hl-1">.</span><span class="hl-5">clone</span><span class="hl-1">());</span>
165
+ <pre><code class="typescript"><span class="hl-11">import</span><span class="hl-1"> </span><span class="hl-8">*</span><span class="hl-1"> </span><span class="hl-11">as</span><span class="hl-1"> </span><span class="hl-5">THREE</span><span class="hl-1"> </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-10">&#39;three&#39;</span><span class="hl-1">;</span><br/><span class="hl-11">import</span><span class="hl-1"> { </span><span class="hl-5">ViewLayer</span><span class="hl-1"> } </span><span class="hl-11">from</span><span class="hl-1"> </span><span class="hl-10">&#39;@realsee/five&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-7">// 假设已加载 ViewLayer</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">viewLayer</span><span class="hl-1">: </span><span class="hl-9">ViewLayer</span><span class="hl-1"> = ...;</span><br/><br/><span class="hl-7">// 1. 获取场景中某点的坐标 (Local Y-up)</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">localPosition</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">20</span><span class="hl-1">, </span><span class="hl-3">30</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 2. 转换为 ENU 坐标 (Z-up) 用于传输给后端/算法</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">enuPosition</span><span class="hl-1"> = </span><span class="hl-5">viewLayer</span><span class="hl-1">.</span><span class="hl-4">localToEnu</span><span class="hl-1">(</span><span class="hl-5">localPosition</span><span class="hl-1">.</span><span class="hl-4">clone</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">`Local: </span><span class="hl-8">${</span><span class="hl-5">localPosition</span><span class="hl-12">.</span><span class="hl-4">toArray</span><span class="hl-12">()</span><span class="hl-8">}</span><span class="hl-10">`</span><span class="hl-1">); </span><span class="hl-7">// [x, y, z] (y-up)</span><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">`ENU: </span><span class="hl-8">${</span><span class="hl-5">enuPosition</span><span class="hl-12">.</span><span class="hl-4">toArray</span><span class="hl-12">()</span><span class="hl-8">}</span><span class="hl-10">`</span><span class="hl-1">); </span><span class="hl-7">// [x, y, z] (z-up)</span><br/><br/><span class="hl-7">// 3. 将 ECEF 坐标转换为 Local 坐标用于显示</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">ecefPosition</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><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">displayPosition</span><span class="hl-1"> = </span><span class="hl-5">viewLayer</span><span class="hl-1">.</span><span class="hl-4">ecefToLocal</span><span class="hl-1">(</span><span class="hl-5">ecefPosition</span><span class="hl-1">.</span><span class="hl-4">clone</span><span class="hl-1">());</span>
166
166
  </code><button type="button">Copy</button></pre>
167
167
 
168
168
  <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>