@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
@@ -10,7 +10,7 @@
10
10
  <p><strong>Definition</strong>: <a href="../../five/work/work.d.ts">Work</a>, <a href="../../five/work/looseWorkType.d.ts">LooseWork</a>, <a href="../../five/work/workJsonType.d.ts">WorkJson</a></p>
11
11
  </blockquote>
12
12
  <p><code>Work</code> 及其相关核心接口定义如下:</p>
13
- <pre><code class="ts"><span class="hl-10">import</span><span class="hl-1"> </span><span class="hl-3">*</span><span class="hl-1"> </span><span class="hl-10">as</span><span class="hl-1"> </span><span class="hl-6">THREE</span><span class="hl-1"> </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;three&quot;</span><span class="hl-1">;</span><br/><span class="hl-10">import</span><span class="hl-1"> </span><span class="hl-10">type</span><span class="hl-1"> { </span><span class="hl-6">Mode</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">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><br/><br/><span class="hl-8">/** Work 实体:VR 项目的根对象 */</span><br/><span class="hl-10">export</span><span class="hl-1"> </span><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">Work</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 唯一标识 (Work ID) */</span><br/><span class="hl-1"> </span><span class="hl-6">workCode</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">name</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">/** 资源加载的基础路径 (Base URL) */</span><br/><span class="hl-1"> </span><span class="hl-6">baseURL</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">issuer</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">expire</span><span class="hl-1">: </span><span class="hl-7">Date</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">allowHosts</span><span class="hl-1">: </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-7">string</span><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-6">initial</span><span class="hl-1">: </span><span class="hl-7">WorkInitial</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 相对位姿 (用于多 Work 拼接时的坐标变换) */</span><br/><span class="hl-1"> </span><span class="hl-6">transform</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">/** 模型参数 (3D 模型资源信息) */</span><br/><span class="hl-1"> </span><span class="hl-6">model</span><span class="hl-1">?: </span><span class="hl-7">WorkModel</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">observers</span><span class="hl-1">: </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-7">WorkObserver</span><span class="hl-1">[];</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">/** 观察点:空间中可驻足观看的点位 */</span><br/><span class="hl-10">export</span><span class="hl-1"> </span><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">/** 所属 Work 引用 */</span><br/><span class="hl-1"> </span><span class="hl-6">work</span><span class="hl-1">: </span><span class="hl-7">Work</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 在 observers 数组中的索引 */</span><br/><span class="hl-1"> </span><span class="hl-6">index</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">/** 点位序号 (通常与 index 相同) */</span><br/><span class="hl-1"> </span><span class="hl-6">panoIndex</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">/** 点位唯一 ID (通常格式为 `${workCode}[${panoIndex}]`) */</span><br/><span class="hl-1"> </span><span class="hl-6">panoId</span><span class="hl-1">: </span><span class="hl-7">string</span><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-6">active</span><span class="hl-1">: </span><span class="hl-7">boolean</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 点位是否可加载 */</span><br/><span class="hl-1"> </span><span class="hl-6">loadable</span><span class="hl-1">: </span><span class="hl-7">boolean</span><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-6">floorIndex</span><span class="hl-1">: </span><span class="hl-7">number</span><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-6">position</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><span class="hl-8">/** 点位在模型坐标系下的地面位置 (用于导航和 UI 定位) */</span><br/><span class="hl-1"> </span><span class="hl-6">standingPosition</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><span class="hl-8">/** 点位和模型的旋转对齐四元数 */</span><br/><span class="hl-1"> </span><span class="hl-6">quaternion</span><span class="hl-1">: </span><span class="hl-7">THREE</span><span class="hl-1">.</span><span class="hl-7">Quaternion</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">matrix</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-1"> </span><span class="hl-6">accessibleNodes</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/><br/><span class="hl-1"> </span><span class="hl-8">/** 点位全景图资源信息 */</span><br/><span class="hl-1"> </span><span class="hl-6">images</span><span class="hl-1">: </span><span class="hl-7">WorkImage</span><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-5">getWorldPosition</span><span class="hl-1">(</span><span class="hl-3">this</span><span class="hl-1">: </span><span class="hl-7">WorkObserver</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-1"> </span><span class="hl-5">getWorldStandingPosition</span><span class="hl-1">(</span><span class="hl-3">this</span><span class="hl-1">: </span><span class="hl-7">WorkObserver</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">/** 将方向向量转化为全景图 uv */</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/><span class="hl-1"> </span><span class="hl-8">/** 将全景图 uv 转化为方向向量 */</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/><span class="hl-1"> </span><span class="hl-8">/** 将方向向量转化为获六视图 uv */</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/><span class="hl-1"> </span><span class="hl-8">/** 将六视图 uv 转化为方向向量 */</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-8">/** 初始化位姿参数 */</span><br/><span class="hl-10">export</span><span class="hl-1"> </span><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">WorkInitial</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">work</span><span class="hl-1">: </span><span class="hl-7">Work</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">mode</span><span class="hl-1">?: </span><span class="hl-7">Mode</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">panoIndex</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">longitude</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">latitude</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">fov</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">/** 相机观察点位置 [x, y, z] */</span><br/><span class="hl-1"> </span><span class="hl-6">offset</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><span class="hl-8">/** 相机距离观察点距离 */</span><br/><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><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">/** 模型数据 */</span><br/><span class="hl-10">export</span><span class="hl-1"> </span><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">WorkModel</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** work */</span><br/><span class="hl-1"> </span><span class="hl-6">work</span><span class="hl-1">: </span><span class="hl-7">Work</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 模型文件地址 at3d / domez */</span><br/><span class="hl-1"> </span><span class="hl-6">file</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">textures</span><span class="hl-1">?: </span><span class="hl-3">readonly</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">textureBase</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">/** 指定上方向,对于 obj, ply 等定义不明确的需要指定上方向 */</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">/** 3d tile */</span><br/><span class="hl-1"> </span><span class="hl-6">layers</span><span class="hl-1">: </span><span class="hl-3">readonly</span><span class="hl-1"> </span><span class="hl-7">WorkModelLayer</span><span class="hl-1">[];</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">/** 模型图层信息 */</span><br/><span class="hl-10">export</span><span class="hl-1"> </span><span class="hl-3">interface</span><span class="hl-1"> </span><span class="hl-7">WorkModelLayer</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** work */</span><br/><span class="hl-1"> </span><span class="hl-6">work</span><span class="hl-1">: </span><span class="hl-7">Work</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 模型类型 point_cloud mesh gaussian_splatting */</span><br/><span class="hl-1"> </span><span class="hl-6">type</span><span class="hl-1">: </span><span class="hl-9">&#39;point_cloud&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;mesh&#39;</span><span class="hl-1"> | </span><span class="hl-9">&#39;gaussian_splatting&#39;</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">name</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">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">/** tileset.json 地址 */</span><br/><span class="hl-1"> </span><span class="hl-6">tileset</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">/** 全景图资源信息 */</span><br/><span class="hl-10">export</span><span class="hl-1"> </span><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-6">work</span><span class="hl-1">: </span><span class="hl-7">Work</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">/** 瓦片信息 */</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">/** 缩略图/预览图等 */</span><br/><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-7">any</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
13
+ <pre><code class="ts"><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">&quot;three&quot;</span><span class="hl-1">;</span><br/><span class="hl-11">import</span><span class="hl-1"> </span><span class="hl-11">type</span><span class="hl-1"> { </span><span class="hl-5">Mode</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">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><br/><br/><span class="hl-7">/** Work 实体:VR 项目的根对象 */</span><br/><span class="hl-11">export</span><span class="hl-1"> </span><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">Work</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/** 唯一标识 (Work ID) */</span><br/><span class="hl-1"> </span><span class="hl-5">workCode</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">name</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">/** 资源加载的基础路径 (Base URL) */</span><br/><span class="hl-1"> </span><span class="hl-5">baseURL</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">issuer</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">expire</span><span class="hl-1">: </span><span class="hl-9">Date</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">allowHosts</span><span class="hl-1">: </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-9">string</span><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-5">initial</span><span class="hl-1">: </span><span class="hl-9">WorkInitial</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 相对位姿 (用于多 Work 拼接时的坐标变换) */</span><br/><span class="hl-1"> </span><span class="hl-5">transform</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">/** 模型参数 (3D 模型资源信息) */</span><br/><span class="hl-1"> </span><span class="hl-5">model</span><span class="hl-1">?: </span><span class="hl-9">WorkModel</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">observers</span><span class="hl-1">: </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-9">WorkObserver</span><span class="hl-1">[];</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-7">/** 观察点:空间中可驻足观看的点位 */</span><br/><span class="hl-11">export</span><span class="hl-1"> </span><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">/** 所属 Work 引用 */</span><br/><span class="hl-1"> </span><span class="hl-5">work</span><span class="hl-1">: </span><span class="hl-9">Work</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 在 observers 数组中的索引 */</span><br/><span class="hl-1"> </span><span class="hl-5">index</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">/** 点位序号 (通常与 index 相同) */</span><br/><span class="hl-1"> </span><span class="hl-5">panoIndex</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">/** 点位唯一 ID (通常格式为 `${workCode}[${panoIndex}]`) */</span><br/><span class="hl-1"> </span><span class="hl-5">panoId</span><span class="hl-1">: </span><span class="hl-9">string</span><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-5">active</span><span class="hl-1">: </span><span class="hl-9">boolean</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">loadable</span><span class="hl-1">: </span><span class="hl-9">boolean</span><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-5">floorIndex</span><span class="hl-1">: </span><span class="hl-9">number</span><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-5">position</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><span class="hl-7">/** 点位在模型坐标系下的地面位置 (用于导航和 UI 定位) */</span><br/><span class="hl-1"> </span><span class="hl-5">standingPosition</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><span class="hl-7">/** 点位和模型的旋转对齐四元数 */</span><br/><span class="hl-1"> </span><span class="hl-5">quaternion</span><span class="hl-1">: </span><span class="hl-9">THREE</span><span class="hl-1">.</span><span class="hl-9">Quaternion</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">matrix</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-1"> </span><span class="hl-5">accessibleNodes</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/><br/><span class="hl-1"> </span><span class="hl-7">/** 点位全景图资源信息 */</span><br/><span class="hl-1"> </span><span class="hl-5">images</span><span class="hl-1">: </span><span class="hl-9">WorkImage</span><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-4">getWorldPosition</span><span class="hl-1">(</span><span class="hl-8">this</span><span class="hl-1">: </span><span class="hl-9">WorkObserver</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-1"> </span><span class="hl-4">getWorldStandingPosition</span><span class="hl-1">(</span><span class="hl-8">this</span><span class="hl-1">: </span><span class="hl-9">WorkObserver</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">/** 将方向向量转化为全景图 uv */</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/><span class="hl-1"> </span><span class="hl-7">/** 将全景图 uv 转化为方向向量 */</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/><span class="hl-1"> </span><span class="hl-7">/** 将方向向量转化为获六视图 uv */</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/><span class="hl-1"> </span><span class="hl-7">/** 将六视图 uv 转化为方向向量 */</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-7">/** 初始化位姿参数 */</span><br/><span class="hl-11">export</span><span class="hl-1"> </span><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">WorkInitial</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">work</span><span class="hl-1">: </span><span class="hl-9">Work</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">mode</span><span class="hl-1">?: </span><span class="hl-9">Mode</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">panoIndex</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">longitude</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">latitude</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">fov</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">/** 相机观察点位置 [x, y, z] */</span><br/><span class="hl-1"> </span><span class="hl-5">offset</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><span class="hl-7">/** 相机距离观察点距离 */</span><br/><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><br/><span class="hl-1">}</span><br/><br/><span class="hl-7">/** 模型数据 */</span><br/><span class="hl-11">export</span><span class="hl-1"> </span><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">WorkModel</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/** work */</span><br/><span class="hl-1"> </span><span class="hl-5">work</span><span class="hl-1">: </span><span class="hl-9">Work</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 模型文件地址 at3d / domez */</span><br/><span class="hl-1"> </span><span class="hl-5">file</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">textures</span><span class="hl-1">?: </span><span class="hl-8">readonly</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">textureBase</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">/** 指定上方向,对于 obj, ply 等定义不明确的需要指定上方向 */</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">/** 3d tile */</span><br/><span class="hl-1"> </span><span class="hl-5">layers</span><span class="hl-1">: </span><span class="hl-8">readonly</span><span class="hl-1"> </span><span class="hl-9">WorkModelLayer</span><span class="hl-1">[];</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-7">/** 模型图层信息 */</span><br/><span class="hl-11">export</span><span class="hl-1"> </span><span class="hl-8">interface</span><span class="hl-1"> </span><span class="hl-9">WorkModelLayer</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-7">/** work */</span><br/><span class="hl-1"> </span><span class="hl-5">work</span><span class="hl-1">: </span><span class="hl-9">Work</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-7">/** 模型类型 point_cloud mesh gaussian_splatting */</span><br/><span class="hl-1"> </span><span class="hl-5">type</span><span class="hl-1">: </span><span class="hl-10">&#39;point_cloud&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;mesh&#39;</span><span class="hl-1"> | </span><span class="hl-10">&#39;gaussian_splatting&#39;</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">name</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">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">/** tileset.json 地址 */</span><br/><span class="hl-1"> </span><span class="hl-5">tileset</span><span class="hl-1">: </span><span class="hl-9">string</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-7">/** 全景图资源信息 */</span><br/><span class="hl-11">export</span><span class="hl-1"> </span><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-5">work</span><span class="hl-1">: </span><span class="hl-9">Work</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">/** 瓦片信息 */</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">/** 缩略图/预览图等 */</span><br/><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-9">any</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>
@@ -92,22 +92,22 @@ Five 会遍历 <code>work.model.layers</code> 并加载其中定义的所有图
92
92
  <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>
93
93
  <h3 id="1-解析与加载-work" class="tsd-anchor-link">1. 解析与加载 Work<a href="#1-解析与加载-work" 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>
94
94
  <p>最基础的用法是从 API 获取数据并加载。</p>
95
- <pre><code class="ts"><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">parseWork</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-6">five</span><span class="hl-1">.</span><span class="hl-5">appendTo</span><span class="hl-1">(</span><span class="hl-6">document</span><span class="hl-1">.</span><span class="hl-5">getElementById</span><span class="hl-1">(</span><span class="hl-9">&quot;app&quot;</span><span class="hl-1">));</span><br/><br/><span class="hl-8">// 1. 获取数据</span><br/><span class="hl-5">fetch</span><span class="hl-1">(</span><span class="hl-9">&quot;https://vrlab-public.ljcdn.com/release/web/work.json&quot;</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-5">then</span><span class="hl-1">(</span><span class="hl-6">res</span><span class="hl-1"> </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">res</span><span class="hl-1">.</span><span class="hl-5">json</span><span class="hl-1">())</span><br/><span class="hl-1"> .</span><span class="hl-5">then</span><span class="hl-1">(</span><span class="hl-6">json</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">// 2. 解析数据</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">work</span><span class="hl-1"> = </span><span class="hl-5">parseWork</span><span class="hl-1">(</span><span class="hl-6">json</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-8">// 3. 加载到 Five</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">load</span><span class="hl-1">(</span><span class="hl-6">work</span><span class="hl-1">);</span><br/><span class="hl-1"> });</span>
95
+ <pre><code class="ts"><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">parseWork</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-5">five</span><span class="hl-1">.</span><span class="hl-4">appendTo</span><span class="hl-1">(</span><span class="hl-5">document</span><span class="hl-1">.</span><span class="hl-4">getElementById</span><span class="hl-1">(</span><span class="hl-10">&quot;app&quot;</span><span class="hl-1">));</span><br/><br/><span class="hl-7">// 1. 获取数据</span><br/><span class="hl-4">fetch</span><span class="hl-1">(</span><span class="hl-10">&quot;https://vrlab-public.ljcdn.com/release/web/work.json&quot;</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-4">then</span><span class="hl-1">(</span><span class="hl-5">res</span><span class="hl-1"> </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">.</span><span class="hl-4">json</span><span class="hl-1">())</span><br/><span class="hl-1"> .</span><span class="hl-4">then</span><span class="hl-1">(</span><span class="hl-5">json</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">// 2. 解析数据</span><br/><span class="hl-1"> </span><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">work</span><span class="hl-1"> = </span><span class="hl-4">parseWork</span><span class="hl-1">(</span><span class="hl-5">json</span><span class="hl-1">);</span><br/><span class="hl-1"> </span><span class="hl-7">// 3. 加载到 Five</span><br/><span class="hl-1"> </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">load</span><span class="hl-1">(</span><span class="hl-5">work</span><span class="hl-1">);</span><br/><span class="hl-1"> });</span>
96
96
  </code><button type="button">Copy</button></pre>
97
97
 
98
98
  <h3 id="2-访问-work-数据" class="tsd-anchor-link">2. 访问 Work 数据<a href="#2-访问-work-数据" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
99
99
  <p>加载完成后,可以通过 <code>five.work</code> 访问当前数据。</p>
100
- <pre><code class="ts"><span class="hl-8">// 获取所有观察点</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">observers</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><br/><br/><span class="hl-8">// 获取当前所在的观察点</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">currentPanoIndex</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">state</span><span class="hl-1">.</span><span class="hl-6">panoIndex</span><span class="hl-1">;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">currentObserver</span><span class="hl-1"> = </span><span class="hl-6">observers</span><span class="hl-1">[</span><span class="hl-6">currentPanoIndex</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">&quot;当前点位坐标:&quot;</span><span class="hl-1">, </span><span class="hl-6">currentObserver</span><span class="hl-1">.</span><span class="hl-6">position</span><span class="hl-1">);</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">&quot;可通往的点位:&quot;</span><span class="hl-1">, </span><span class="hl-6">currentObserver</span><span class="hl-1">.</span><span class="hl-6">accessibleNodes</span><span class="hl-1">);</span>
100
+ <pre><code class="ts"><span class="hl-7">// 获取所有观察点</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">observers</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><br/><br/><span class="hl-7">// 获取当前所在的观察点</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">currentPanoIndex</span><span class="hl-1"> = </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-5">state</span><span class="hl-1">.</span><span class="hl-5">panoIndex</span><span class="hl-1">;</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">currentObserver</span><span class="hl-1"> = </span><span class="hl-5">observers</span><span class="hl-1">[</span><span class="hl-5">currentPanoIndex</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">&quot;当前点位坐标:&quot;</span><span class="hl-1">, </span><span class="hl-5">currentObserver</span><span class="hl-1">.</span><span class="hl-5">position</span><span class="hl-1">);</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">&quot;可通往的点位:&quot;</span><span class="hl-1">, </span><span class="hl-5">currentObserver</span><span class="hl-1">.</span><span class="hl-5">accessibleNodes</span><span class="hl-1">);</span>
101
101
  </code><button type="button">Copy</button></pre>
102
102
 
103
103
  <h3 id="3-多-work-加载与管理" class="tsd-anchor-link">3. 多 Work 加载与管理<a href="#3-多-work-加载与管理" 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>
104
104
  <p>Five 支持同时加载多个 Work,常用于楼盘小区的多个样板间拼接,或大型商业空间的区域拼接。</p>
105
- <pre><code class="ts"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">work1</span><span class="hl-1"> = </span><span class="hl-5">parseWork</span><span class="hl-1">(</span><span class="hl-6">json1</span><span class="hl-1">);</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">work2</span><span class="hl-1"> = </span><span class="hl-5">parseWork</span><span class="hl-1">(</span><span class="hl-6">json2</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 同时加载两个 Work</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">load</span><span class="hl-1">([</span><span class="hl-6">work1</span><span class="hl-1">, </span><span class="hl-6">work2</span><span class="hl-1">]);</span><br/><br/><span class="hl-8">// 切换到指定 Work 的指定点位</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">&quot;Panorama&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">workCode:</span><span class="hl-1"> </span><span class="hl-6">work2</span><span class="hl-1">.</span><span class="hl-6">workCode</span><span class="hl-1">, </span><span class="hl-8">// 必须指定 workCode</span><br/><span class="hl-1"> </span><span class="hl-6">panoIndex:</span><span class="hl-1"> </span><span class="hl-11">0</span><br/><span class="hl-1">});</span>
105
+ <pre><code class="ts"><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">work1</span><span class="hl-1"> = </span><span class="hl-4">parseWork</span><span class="hl-1">(</span><span class="hl-5">json1</span><span class="hl-1">);</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">work2</span><span class="hl-1"> = </span><span class="hl-4">parseWork</span><span class="hl-1">(</span><span class="hl-5">json2</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 同时加载两个 Work</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">load</span><span class="hl-1">([</span><span class="hl-5">work1</span><span class="hl-1">, </span><span class="hl-5">work2</span><span class="hl-1">]);</span><br/><br/><span class="hl-7">// 切换到指定 Work 的指定点位</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">&quot;Panorama&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-5">workCode:</span><span class="hl-1"> </span><span class="hl-5">work2</span><span class="hl-1">.</span><span class="hl-5">workCode</span><span class="hl-1">, </span><span class="hl-7">// 必须指定 workCode</span><br/><span class="hl-1"> </span><span class="hl-5">panoIndex:</span><span class="hl-1"> </span><span class="hl-3">0</span><br/><span class="hl-1">});</span>
106
106
  </code><button type="button">Copy</button></pre>
107
107
 
108
108
  <h3 id="4-追加与替换-work" class="tsd-anchor-link">4. 追加与替换 Work<a href="#4-追加与替换-work" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
109
109
  <p>可以使用 <code>load</code> 方法的参数来控制是替换当前场景还是追加到当前场景。</p>
110
- <pre><code class="ts"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">work3</span><span class="hl-1"> = </span><span class="hl-5">parseWork</span><span class="hl-1">(</span><span class="hl-6">json3</span><span class="hl-1">);</span><br/><br/><span class="hl-8">// 追加 Work (保留原有场景)</span><br/><span class="hl-8">// 第二个参数 &quot;inherit&quot; 表示保持当前相机视角和模态不变,不重置为新 Work 的初始视角</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">load</span><span class="hl-1">(</span><span class="hl-6">work3</span><span class="hl-1">, </span><span class="hl-9">&quot;inherit&quot;</span><span class="hl-1">, { </span><span class="hl-6">mode:</span><span class="hl-1"> </span><span class="hl-9">&quot;add&quot;</span><span class="hl-1"> });</span><br/><br/><span class="hl-8">// 替换 Work (清空原有场景) - 默认行为</span><br/><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">load</span><span class="hl-1">(</span><span class="hl-6">work3</span><span class="hl-1">, </span><span class="hl-9">&quot;inherit&quot;</span><span class="hl-1">, { </span><span class="hl-6">mode:</span><span class="hl-1"> </span><span class="hl-9">&quot;replace&quot;</span><span class="hl-1"> });</span>
110
+ <pre><code class="ts"><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">work3</span><span class="hl-1"> = </span><span class="hl-4">parseWork</span><span class="hl-1">(</span><span class="hl-5">json3</span><span class="hl-1">);</span><br/><br/><span class="hl-7">// 追加 Work (保留原有场景)</span><br/><span class="hl-7">// 第二个参数 &quot;inherit&quot; 表示保持当前相机视角和模态不变,不重置为新 Work 的初始视角</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">load</span><span class="hl-1">(</span><span class="hl-5">work3</span><span class="hl-1">, </span><span class="hl-10">&quot;inherit&quot;</span><span class="hl-1">, { </span><span class="hl-5">mode:</span><span class="hl-1"> </span><span class="hl-10">&quot;add&quot;</span><span class="hl-1"> });</span><br/><br/><span class="hl-7">// 替换 Work (清空原有场景) - 默认行为</span><br/><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">load</span><span class="hl-1">(</span><span class="hl-5">work3</span><span class="hl-1">, </span><span class="hl-10">&quot;inherit&quot;</span><span class="hl-1">, { </span><span class="hl-5">mode:</span><span class="hl-1"> </span><span class="hl-10">&quot;replace&quot;</span><span class="hl-1"> });</span>
111
111
  </code><button type="button">Copy</button></pre>
112
112
 
113
113
  <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>
@@ -4,7 +4,7 @@
4
4
  </ul>
5
5
  <h2 id="installation" class="tsd-anchor-link">Installation<a href="#installation" 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>
6
6
  <p>通过 npm 或 yarn 安装:</p>
7
- <pre><code class="bash"><span class="hl-5">npm</span><span class="hl-1"> </span><span class="hl-9">install</span><span class="hl-1"> </span><span class="hl-9">three@^0.117.1</span><span class="hl-1"> </span><span class="hl-9">@realsee/five</span><br/><span class="hl-8"># or</span><br/><span class="hl-5">yarn</span><span class="hl-1"> </span><span class="hl-9">add</span><span class="hl-1"> </span><span class="hl-9">three@^0.117.1</span><span class="hl-1"> </span><span class="hl-9">@realsee/five</span>
7
+ <pre><code class="bash"><span class="hl-4">npm</span><span class="hl-1"> </span><span class="hl-10">install</span><span class="hl-1"> </span><span class="hl-10">three@^0.117.1</span><span class="hl-1"> </span><span class="hl-10">@realsee/five</span><br/><span class="hl-7"># or</span><br/><span class="hl-4">yarn</span><span class="hl-1"> </span><span class="hl-10">add</span><span class="hl-1"> </span><span class="hl-10">three@^0.117.1</span><span class="hl-1"> </span><span class="hl-10">@realsee/five</span>
8
8
  </code><button type="button">Copy</button></pre>
9
9
 
10
10
  <blockquote>
@@ -12,7 +12,7 @@
12
12
  </blockquote>
13
13
  <h2 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></h2>
14
14
  <p>初始化 Five 实例并加载 Work 数据:</p>
15
- <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">parseWork</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">// 1. 创建 Five 实例</span><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-8">// 2. 挂载到 DOM</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">app</span><span class="hl-1"> = </span><span class="hl-6">document</span><span class="hl-1">.</span><span class="hl-5">getElementById</span><span class="hl-1">(</span><span class="hl-9">&#39;app&#39;</span><span class="hl-1">);</span><br/><span class="hl-10">if</span><span class="hl-1"> (</span><span class="hl-6">app</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">app</span><span class="hl-1">.</span><span class="hl-6">style</span><span class="hl-1">.</span><span class="hl-6">width</span><span class="hl-1"> = </span><span class="hl-9">&#39;100vw&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">app</span><span class="hl-1">.</span><span class="hl-6">style</span><span class="hl-1">.</span><span class="hl-6">height</span><span class="hl-1"> = </span><span class="hl-9">&#39;100vh&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">appendTo</span><span class="hl-1">(</span><span class="hl-6">app</span><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-6">window</span><span class="hl-1">.</span><span class="hl-5">addEventListener</span><span class="hl-1">(</span><span class="hl-9">&#39;resize&#39;</span><span class="hl-1">, () </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-5">refresh</span><span class="hl-1">());</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">// 3. 加载数据 (Work)</span><br/><span class="hl-8">// 这是一个公开测试数据</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">workURL</span><span class="hl-1"> = </span><span class="hl-9">&#39;https://raw.githubusercontent.com/realsee-developer/dnalogel/main/open-works/real/80o024DE2xyva3j5BE/work.json&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-5">fetch</span><span class="hl-1">(</span><span class="hl-6">workURL</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-5">then</span><span class="hl-1">(</span><span class="hl-6">res</span><span class="hl-1"> </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">res</span><span class="hl-1">.</span><span class="hl-5">json</span><span class="hl-1">())</span><br/><span class="hl-1"> .</span><span class="hl-5">then</span><span class="hl-1">(</span><span class="hl-6">json</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">// 解析并加载</span><br/><span class="hl-1"> </span><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">work</span><span class="hl-1"> = </span><span class="hl-5">parseWork</span><span class="hl-1">(</span><span class="hl-6">json</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-6">five</span><span class="hl-1">.</span><span class="hl-5">load</span><span class="hl-1">(</span><span class="hl-6">work</span><span class="hl-1">);</span><br/><span class="hl-1"> })</span><br/><span class="hl-1"> .</span><span class="hl-5">then</span><span class="hl-1">(() </span><span class="hl-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><span class="hl-5">catch</span><span class="hl-1">(</span><span class="hl-6">err</span><span class="hl-1"> </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">console</span><span class="hl-1">.</span><span class="hl-5">error</span><span class="hl-1">(</span><span class="hl-6">err</span><span class="hl-1">));</span>
15
+ <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">parseWork</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">// 1. 创建 Five 实例</span><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-7">// 2. 挂载到 DOM</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">app</span><span class="hl-1"> = </span><span class="hl-5">document</span><span class="hl-1">.</span><span class="hl-4">getElementById</span><span class="hl-1">(</span><span class="hl-10">&#39;app&#39;</span><span class="hl-1">);</span><br/><span class="hl-11">if</span><span class="hl-1"> (</span><span class="hl-5">app</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">app</span><span class="hl-1">.</span><span class="hl-5">style</span><span class="hl-1">.</span><span class="hl-5">width</span><span class="hl-1"> = </span><span class="hl-10">&#39;100vw&#39;</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">app</span><span class="hl-1">.</span><span class="hl-5">style</span><span class="hl-1">.</span><span class="hl-5">height</span><span class="hl-1"> = </span><span class="hl-10">&#39;100vh&#39;</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-4">appendTo</span><span class="hl-1">(</span><span class="hl-5">app</span><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-5">window</span><span class="hl-1">.</span><span class="hl-4">addEventListener</span><span class="hl-1">(</span><span class="hl-10">&#39;resize&#39;</span><span class="hl-1">, () </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-5">five</span><span class="hl-1">.</span><span class="hl-4">refresh</span><span class="hl-1">());</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-7">// 3. 加载数据 (Work)</span><br/><span class="hl-7">// 这是一个公开测试数据</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">workURL</span><span class="hl-1"> = </span><span class="hl-10">&#39;https://raw.githubusercontent.com/realsee-developer/dnalogel/main/open-works/real/80o024DE2xyva3j5BE/work.json&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-4">fetch</span><span class="hl-1">(</span><span class="hl-5">workURL</span><span class="hl-1">)</span><br/><span class="hl-1"> .</span><span class="hl-4">then</span><span class="hl-1">(</span><span class="hl-5">res</span><span class="hl-1"> </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-5">res</span><span class="hl-1">.</span><span class="hl-4">json</span><span class="hl-1">())</span><br/><span class="hl-1"> .</span><span class="hl-4">then</span><span class="hl-1">(</span><span class="hl-5">json</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">// 解析并加载</span><br/><span class="hl-1"> </span><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">work</span><span class="hl-1"> = </span><span class="hl-4">parseWork</span><span class="hl-1">(</span><span class="hl-5">json</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-5">five</span><span class="hl-1">.</span><span class="hl-4">load</span><span class="hl-1">(</span><span class="hl-5">work</span><span class="hl-1">);</span><br/><span class="hl-1"> })</span><br/><span class="hl-1"> .</span><span class="hl-4">then</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><span class="hl-4">catch</span><span class="hl-1">(</span><span class="hl-5">err</span><span class="hl-1"> </span><span class="hl-8">=&gt;</span><span class="hl-1"> </span><span class="hl-5">console</span><span class="hl-1">.</span><span class="hl-4">error</span><span class="hl-1">(</span><span class="hl-5">err</span><span class="hl-1">));</span>
16
16
  </code><button type="button">Copy</button></pre>
17
17
 
18
18
  <h2 id="next-steps" class="tsd-anchor-link">Next Steps<a href="#next-steps" 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>
@@ -2,7 +2,7 @@
2
2
  <blockquote>
3
3
  <p>6.6.x 版本发布日志</p>
4
4
  </blockquote>
5
- <pre><code class="shell"><span class="hl-5">npm</span><span class="hl-1"> </span><span class="hl-9">install</span><span class="hl-1"> </span><span class="hl-9">@realsee/five@6.6</span>
5
+ <pre><code class="shell"><span class="hl-4">npm</span><span class="hl-1"> </span><span class="hl-10">install</span><span class="hl-1"> </span><span class="hl-10">@realsee/five@6.6</span>
6
6
  </code><button type="button">Copy</button></pre>
7
7
 
8
8
  <h2 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></h2>
@@ -28,7 +28,7 @@
28
28
  <ul>
29
29
  <li><strong>firstHitOnly</strong>: 在 <code>THREE.Raycaster</code> 上扩展了 <code>firstHitOnly</code> 属性。当设置为 <code>true</code> 时,BVH 遍历算法会在找到第一个满足条件的交点后,利用该交点的距离对后续搜索进行剪枝(Pruning),避免遍历所有可能的交点。这对于点击拾取(Picking)操作有极大的性能提升。</li>
30
30
  </ul>
31
- <pre><code class="typescript"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">raycaster</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">Raycaster</span><span class="hl-1">();</span><br/><span class="hl-8">// 开启首个命中优化</span><br/><span class="hl-6">raycaster</span><span class="hl-1">.</span><span class="hl-6">firstHitOnly</span><span class="hl-1"> = </span><span class="hl-3">true</span><span class="hl-1">;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">intersects</span><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-5">intersectRaycaster</span><span class="hl-1">(</span><span class="hl-6">raycaster</span><span class="hl-1">);</span>
31
+ <pre><code class="typescript"><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">raycaster</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">Raycaster</span><span class="hl-1">();</span><br/><span class="hl-7">// 开启首个命中优化</span><br/><span class="hl-5">raycaster</span><span class="hl-1">.</span><span class="hl-5">firstHitOnly</span><span class="hl-1"> = </span><span class="hl-8">true</span><span class="hl-1">;</span><br/><span class="hl-8">const</span><span class="hl-1"> </span><span class="hl-6">intersects</span><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-4">intersectRaycaster</span><span class="hl-1">(</span><span class="hl-5">raycaster</span><span class="hl-1">);</span>
32
32
  </code><button type="button">Copy</button></pre>
33
33
 
34
34
  <ul>
@@ -43,12 +43,12 @@
43
43
  <h2 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></h2>
44
44
  <h3 id="imagebitmap-支持" class="tsd-anchor-link">ImageBitmap 支持<a href="#imagebitmap-支持" 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>
45
45
  <p>支持使用浏览器原生的 <code>ImageBitmap</code> API 替代传统的 <code>HTMLImageElement</code> 进行纹理加载。<code>ImageBitmap</code> 的解码过程可以在后台线程进行,避免了解码大图时阻塞主线程导致的掉帧现象。</p>
46
- <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-8">// 开启 Native ImageBitmap 支持 (全局配置)</span><br/><span class="hl-6">Five</span><span class="hl-1">.</span><span class="hl-6">useNativeImageBitmap</span><span class="hl-1"> = </span><span class="hl-3">true</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">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>
46
+ <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-7">// 开启 Native ImageBitmap 支持 (全局配置)</span><br/><span class="hl-5">Five</span><span class="hl-1">.</span><span class="hl-5">useNativeImageBitmap</span><span class="hl-1"> = </span><span class="hl-8">true</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">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>
47
47
  </code><button type="button">Copy</button></pre>
48
48
 
49
49
  <h3 id="图片-exif-旋转支持" class="tsd-anchor-link">图片 Exif 旋转支持<a href="#图片-exif-旋转支持" 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>
50
50
  <p><code>imageOptions</code> 新增 <code>forceUseExifOrientation</code> 参数。针对部分未在服务端处理旋转的图片,该参数可强制读取并应用图片 Exif 中的 Orientation 信息,确保渲染方向正确。</p>
51
- <pre><code class="typescript"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">five</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-5">Five</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">forceUseExifOrientation:</span><span class="hl-1"> </span><span class="hl-3">true</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
51
+ <pre><code class="typescript"><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-5">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">forceUseExifOrientation:</span><span class="hl-1"> </span><span class="hl-8">true</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
52
52
  </code><button type="button">Copy</button></pre>
53
53
 
54
54
  <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>