@realsee/five-webgpu 1.0.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 (674) hide show
  1. package/AGENTS_READ_ME.md +9 -0
  2. package/AI_CONTEXT.md +9 -0
  3. package/README.md +80 -0
  4. package/TERMS.txt +54 -0
  5. package/ai_guides/README.md +118 -0
  6. package/ai_guides/ai-doc-guidelines.md +102 -0
  7. package/ai_guides/api.md +274 -0
  8. package/ai_guides/features/3dtile.md +172 -0
  9. package/ai_guides/features/camera-animation.md +205 -0
  10. package/ai_guides/features/clipper.md +135 -0
  11. package/ai_guides/features/coordinate-system.md +128 -0
  12. package/ai_guides/features/event.md +154 -0
  13. package/ai_guides/features/five.md +184 -0
  14. package/ai_guides/features/gesture.md +181 -0
  15. package/ai_guides/features/get-screen-pixels.md +182 -0
  16. package/ai_guides/features/image-options.md +164 -0
  17. package/ai_guides/features/load-external-model.md +350 -0
  18. package/ai_guides/features/load-progress.md +140 -0
  19. package/ai_guides/features/material.md +153 -0
  20. package/ai_guides/features/mode.md +269 -0
  21. package/ai_guides/features/model.md +186 -0
  22. package/ai_guides/features/move-pano-effect.md +145 -0
  23. package/ai_guides/features/multi-work.md +146 -0
  24. package/ai_guides/features/pano-filter.md +144 -0
  25. package/ai_guides/features/pano-tile.md +132 -0
  26. package/ai_guides/features/pano-uv.md +131 -0
  27. package/ai_guides/features/parameter.md +153 -0
  28. package/ai_guides/features/raycast.md +175 -0
  29. package/ai_guides/features/request-proxy.md +112 -0
  30. package/ai_guides/features/screen-project.md +165 -0
  31. package/ai_guides/features/state.md +101 -0
  32. package/ai_guides/features/ultra-hdr.md +204 -0
  33. package/ai_guides/features/view-layer.md +187 -0
  34. package/ai_guides/features/work.md +303 -0
  35. package/ai_guides/glossary.md +93 -0
  36. package/ai_guides/intro.md +23 -0
  37. package/ai_guides/quick-start.md +69 -0
  38. package/ai_guides/release_notes/6.6.md +86 -0
  39. package/ai_guides/release_notes/6.7.md +401 -0
  40. package/ai_guides/release_notes/6.8.md +208 -0
  41. package/ai_guides/support.md +23 -0
  42. package/ai_guides/template.md +70 -0
  43. package/docs/.nojekyll +1 -0
  44. package/docs/00_FOR_AI_AGENTS.md +12 -0
  45. package/docs/README.md +12 -0
  46. package/docs/assets/hierarchy.js +1 -0
  47. package/docs/assets/highlight.css +134 -0
  48. package/docs/assets/icons.js +18 -0
  49. package/docs/assets/icons.svg +1 -0
  50. package/docs/assets/main.js +60 -0
  51. package/docs/assets/navigation.js +1 -0
  52. package/docs/assets/search.js +1 -0
  53. package/docs/assets/style.css +1633 -0
  54. package/docs/classes/index.AdaptiveLuminancePass.html +23 -0
  55. package/docs/classes/index.AnimationFrameLoop.html +18 -0
  56. package/docs/classes/index.BoundingMesh.html +4 -0
  57. package/docs/classes/index.Camera.html +42 -0
  58. package/docs/classes/index.EffectComposer.html +25 -0
  59. package/docs/classes/index.EyeDomeLightingPass.html +20 -0
  60. package/docs/classes/index.Fetcher.html +5 -0
  61. package/docs/classes/index.Five.html +311 -0
  62. package/docs/classes/index.FivePass.html +17 -0
  63. package/docs/classes/index.FiveRenderer.html +8 -0
  64. package/docs/classes/index.FlowingFireworks3DPass.html +22 -0
  65. package/docs/classes/index.FlowingLight2DPass.html +21 -0
  66. package/docs/classes/index.FlowingLight3DPass.html +23 -0
  67. package/docs/classes/index.FullScreenQuad.html +7 -0
  68. package/docs/classes/index.GaussianBlurPass.html +19 -0
  69. package/docs/classes/index.Histogram.html +19 -0
  70. package/docs/classes/index.InternalWebGPURenderer.html +4 -0
  71. package/docs/classes/index.Model.html +93 -0
  72. package/docs/classes/index.ModelScene.html +40 -0
  73. package/docs/classes/index.Motion.html +17 -0
  74. package/docs/classes/index.NetworkSubscribe.html +41 -0
  75. package/docs/classes/index.PBMGaussianSplattingNodeMaterial.html +37 -0
  76. package/docs/classes/index.PBMGaussianSplattingObject.html +32 -0
  77. package/docs/classes/index.PBMGaussianSplattingRenderMesh.html +19 -0
  78. package/docs/classes/index.PBMGroup.html +5 -0
  79. package/docs/classes/index.PBMMesh.html +2 -0
  80. package/docs/classes/index.PBMMeshBasicMaterial.html +70 -0
  81. package/docs/classes/index.PBMMeshBasicNodeMaterial.html +74 -0
  82. package/docs/classes/index.PBMMeshPanoOnlyMaterial.html +70 -0
  83. package/docs/classes/index.PBMMeshPanoOnlyNodeMaterial.html +74 -0
  84. package/docs/classes/index.PBMMeshPhongMaterial.html +69 -0
  85. package/docs/classes/index.PBMMeshPhongNodeMaterial.html +73 -0
  86. package/docs/classes/index.PBMMeshPhysicalMaterial.html +69 -0
  87. package/docs/classes/index.PBMMeshPhysicalNodeMaterial.html +73 -0
  88. package/docs/classes/index.PBMPanoFilter.html +61 -0
  89. package/docs/classes/index.PBMPointCloud.html +50 -0
  90. package/docs/classes/index.PBMSkinnedMesh.html +8 -0
  91. package/docs/classes/index.PBMUpdateable.html +41 -0
  92. package/docs/classes/index.PanoCircleMesh.html +30 -0
  93. package/docs/classes/index.PanoCircleMeshCustom.html +30 -0
  94. package/docs/classes/index.PanoCircleMeshSolid.html +30 -0
  95. package/docs/classes/index.Parameter.html +114 -0
  96. package/docs/classes/index.Scene.html +18 -0
  97. package/docs/classes/index.Subscribe.html +43 -0
  98. package/docs/classes/index.TextureLoader.html +4 -0
  99. package/docs/classes/index.Tile.html +34 -0
  100. package/docs/classes/index.Tile3D.html +98 -0
  101. package/docs/classes/index.TileCache.html +8 -0
  102. package/docs/classes/index.TileNode.html +14 -0
  103. package/docs/classes/index.TileRequestScheduler.html +4 -0
  104. package/docs/classes/index.Tileset.html +38 -0
  105. package/docs/classes/index.Trajectory.html +8 -0
  106. package/docs/classes/index.TrajectoryNode.html +8 -0
  107. package/docs/classes/index.Work.html +52 -0
  108. package/docs/classes/index.WorkResolvedObserver.html +68 -0
  109. package/docs/documents/README.html +134 -0
  110. package/docs/documents/ai-doc-guidelines.html +117 -0
  111. package/docs/documents/api.html +337 -0
  112. package/docs/documents/features_3dtile.html +216 -0
  113. package/docs/documents/features_camera-animation.html +157 -0
  114. package/docs/documents/features_clipper.html +80 -0
  115. package/docs/documents/features_coordinate-system.html +127 -0
  116. package/docs/documents/features_event.html +104 -0
  117. package/docs/documents/features_five.html +147 -0
  118. package/docs/documents/features_gesture.html +121 -0
  119. package/docs/documents/features_get-screen-pixels.html +88 -0
  120. package/docs/documents/features_image-options.html +108 -0
  121. package/docs/documents/features_load-external-model.html +600 -0
  122. package/docs/documents/features_load-progress.html +110 -0
  123. package/docs/documents/features_material.html +341 -0
  124. package/docs/documents/features_mode.html +114 -0
  125. package/docs/documents/features_model.html +141 -0
  126. package/docs/documents/features_move-pano-effect.html +110 -0
  127. package/docs/documents/features_multi-work.html +97 -0
  128. package/docs/documents/features_pano-filter.html +119 -0
  129. package/docs/documents/features_pano-tile.html +100 -0
  130. package/docs/documents/features_pano-uv.html +82 -0
  131. package/docs/documents/features_parameter.html +101 -0
  132. package/docs/documents/features_raycast.html +98 -0
  133. package/docs/documents/features_request-proxy.html +78 -0
  134. package/docs/documents/features_screen-project.html +112 -0
  135. package/docs/documents/features_state.html +71 -0
  136. package/docs/documents/features_ultra-hdr.html +188 -0
  137. package/docs/documents/features_view-layer.html +158 -0
  138. package/docs/documents/features_work.html +129 -0
  139. package/docs/documents/glossary.html +94 -0
  140. package/docs/documents/intro.html +24 -0
  141. package/docs/documents/quick-start.html +32 -0
  142. package/docs/documents/release_notes_6.6.html +79 -0
  143. package/docs/documents/release_notes_6.7.html +209 -0
  144. package/docs/documents/release_notes_6.8.html +189 -0
  145. package/docs/documents/support.html +49 -0
  146. package/docs/documents/template.html +80 -0
  147. package/docs/enums/index.VolumePlaneIntersect.html +4 -0
  148. package/docs/functions/index.coordinatesToVector.html +2 -0
  149. package/docs/functions/index.createDebugBoundingMesh.html +1 -0
  150. package/docs/functions/index.createWorks.html +1 -0
  151. package/docs/functions/index.defaultImageURLTransform.html +5 -0
  152. package/docs/functions/index.getViewportScale.html +1 -0
  153. package/docs/functions/index.headingToLongitude.html +4 -0
  154. package/docs/functions/index.imageSupport.html +1 -0
  155. package/docs/functions/index.isBoundingVolume.html +1 -0
  156. package/docs/functions/index.isPanoId.html +1 -0
  157. package/docs/functions/index.loadAt3d.html +1 -0
  158. package/docs/functions/index.loadDome.html +1 -0
  159. package/docs/functions/index.loadDomez.html +1 -0
  160. package/docs/functions/index.loadGltf.html +1 -0
  161. package/docs/functions/index.loadPbm.html +1 -0
  162. package/docs/functions/index.loadPly.html +1 -0
  163. package/docs/functions/index.longitudeToHeading.html +4 -0
  164. package/docs/functions/index.makeBoundingVolume.html +1 -0
  165. package/docs/functions/index.panoEqual.html +1 -0
  166. package/docs/functions/index.panoParse.html +1 -0
  167. package/docs/functions/index.panoStringify.html +1 -0
  168. package/docs/functions/index.parseWork.html +7 -0
  169. package/docs/functions/index.registerPBMMaterials.html +3 -0
  170. package/docs/functions/index.vectorToCoordinates.html +2 -0
  171. package/docs/functions/index.workToJson.html +1 -0
  172. package/docs/hierarchy.html +1 -0
  173. package/docs/index.html +134 -0
  174. package/docs/interfaces/index.AddableObject.html +9 -0
  175. package/docs/interfaces/index.AjaxOptions.html +9 -0
  176. package/docs/interfaces/index.AnimationFrame.html +6 -0
  177. package/docs/interfaces/index.AnimationFrameContext.html +3 -0
  178. package/docs/interfaces/index.BaseEvent.html +5 -0
  179. package/docs/interfaces/index.BoundingVolume.html +15 -0
  180. package/docs/interfaces/index.BoxBoundingVolume.html +18 -0
  181. package/docs/interfaces/index.CameraPose.html +6 -0
  182. package/docs/interfaces/index.CullingVolume.html +9 -0
  183. package/docs/interfaces/index.Draco.html +12 -0
  184. package/docs/interfaces/index.EventCallback.html +394 -0
  185. package/docs/interfaces/index.FiveInitArgs.html +104 -0
  186. package/docs/interfaces/index.FiveLoadOptions.html +12 -0
  187. package/docs/interfaces/index.FloorplanControllerCustomInitArgs.html +17 -0
  188. package/docs/interfaces/index.GestureEvent.html +19 -0
  189. package/docs/interfaces/index.IPBMMaterial.html +64 -0
  190. package/docs/interfaces/index.ImageOptions.html +21 -0
  191. package/docs/interfaces/index.ImageURLMappings.html +1 -0
  192. package/docs/interfaces/index.ImageURLOptions.html +17 -0
  193. package/docs/interfaces/index.IntersectEvent.html +8 -0
  194. package/docs/interfaces/index.IntersectMesh.html +2 -0
  195. package/docs/interfaces/index.IntersectMeshInterface.html +3 -0
  196. package/docs/interfaces/index.Intersection.html +9 -0
  197. package/docs/interfaces/index.LoosePanoWork.html +10 -0
  198. package/docs/interfaces/index.LooseWork.html +15 -0
  199. package/docs/interfaces/index.LooseWorkInitial.html +11 -0
  200. package/docs/interfaces/index.LooseWorkModel.html +8 -0
  201. package/docs/interfaces/index.LooseWorkObserver.html +17 -0
  202. package/docs/interfaces/index.LooseWorkPanorama.html +22 -0
  203. package/docs/interfaces/index.LooseWorkVideo.html +4 -0
  204. package/docs/interfaces/index.LooseWorkWithExtrinsics.html +15 -0
  205. package/docs/interfaces/index.MapviewControllerCustomInitArgs.html +20 -0
  206. package/docs/interfaces/index.ModeChangeEvent.html +9 -0
  207. package/docs/interfaces/index.ModelControllerCustomInitArgs.html +20 -0
  208. package/docs/interfaces/index.ModelEvent.html +8 -0
  209. package/docs/interfaces/index.ModelOptions.html +11 -0
  210. package/docs/interfaces/index.ModelSceneEvent.html +6 -0
  211. package/docs/interfaces/index.ModelTileEvent.html +8 -0
  212. package/docs/interfaces/index.MotionKeyframe.html +4 -0
  213. package/docs/interfaces/index.MovePanoOptions.html +35 -0
  214. package/docs/interfaces/index.NetworkAbortError.html +1 -0
  215. package/docs/interfaces/index.NetworkFirbiddenError.html +1 -0
  216. package/docs/interfaces/index.NetworkOptions.html +7 -0
  217. package/docs/interfaces/index.NetworkProxyError.html +1 -0
  218. package/docs/interfaces/index.NetworkResourceEvent.html +9 -0
  219. package/docs/interfaces/index.NetworkResponseError.html +2 -0
  220. package/docs/interfaces/index.NetworkTimeoutError.html +1 -0
  221. package/docs/interfaces/index.ObjectEvent.html +6 -0
  222. package/docs/interfaces/index.PBMClipperParameter.html +3 -0
  223. package/docs/interfaces/index.PBMHDRConfig.html +12 -0
  224. package/docs/interfaces/index.PBMPanoDepth.html +9 -0
  225. package/docs/interfaces/index.PBMPanoFilterValue.html +6 -0
  226. package/docs/interfaces/index.PBMPanoPicture.html +14 -0
  227. package/docs/interfaces/index.PBMRefinedScreen.html +6 -0
  228. package/docs/interfaces/index.PanoCircleMeshCustomOptions.html +9 -0
  229. package/docs/interfaces/index.PanoCircleMeshInterface.html +30 -0
  230. package/docs/interfaces/index.PanoCircleMeshOptions.html +3 -0
  231. package/docs/interfaces/index.PanoCircleMeshSolidOptions.html +3 -0
  232. package/docs/interfaces/index.PanoEvent.html +11 -0
  233. package/docs/interfaces/index.PanoTextureEvent.html +9 -0
  234. package/docs/interfaces/index.PanoramaControllerCustomInitArgs.html +41 -0
  235. package/docs/interfaces/index.PanoramaLikeControllerCustomInitArgs.html +20 -0
  236. package/docs/interfaces/index.ParameterMaterialValue.html +74 -0
  237. package/docs/interfaces/index.ParameterTilesetValue.html +30 -0
  238. package/docs/interfaces/index.ParameterValue.html +103 -0
  239. package/docs/interfaces/index.Pass.html +9 -0
  240. package/docs/interfaces/index.PointCloudData.html +6 -0
  241. package/docs/interfaces/index.Pose.html +12 -0
  242. package/docs/interfaces/index.RegionBoundingVolume.html +21 -0
  243. package/docs/interfaces/index.RenderEvent.html +6 -0
  244. package/docs/interfaces/index.ResolvedParameterValue.html +104 -0
  245. package/docs/interfaces/index.RgbaData.html +7 -0
  246. package/docs/interfaces/index.SphereBoundingVolume.html +17 -0
  247. package/docs/interfaces/index.SplatData.html +10 -0
  248. package/docs/interfaces/index.State.html +23 -0
  249. package/docs/interfaces/index.StateEvent.html +7 -0
  250. package/docs/interfaces/index.TextureOptions.html +23 -0
  251. package/docs/interfaces/index.Tile3DOptions.html +11 -0
  252. package/docs/interfaces/index.TileCoordinateSystem.html +3 -0
  253. package/docs/interfaces/index.TileHeader.html +9 -0
  254. package/docs/interfaces/index.TilesetHeader.html +20 -0
  255. package/docs/interfaces/index.TilesetOptions.html +7 -0
  256. package/docs/interfaces/index.TopviewControllerCustomInitArgs.html +13 -0
  257. package/docs/interfaces/index.TrajectoryHeader.html +5 -0
  258. package/docs/interfaces/index.ViewLayer.html +97 -0
  259. package/docs/interfaces/index.Viewport.html +13 -0
  260. package/docs/interfaces/index.WebXRAxesParams.html +4 -0
  261. package/docs/interfaces/index.WebXRControllerParams.html +2 -0
  262. package/docs/interfaces/index.WorkCubeImage.html +15 -0
  263. package/docs/interfaces/index.WorkImage.html +22 -0
  264. package/docs/interfaces/index.WorkInitial.html +17 -0
  265. package/docs/interfaces/index.WorkInitialJson.html +8 -0
  266. package/docs/interfaces/index.WorkJson.html +11 -0
  267. package/docs/interfaces/index.WorkModel.html +16 -0
  268. package/docs/interfaces/index.WorkModelJson.html +6 -0
  269. package/docs/interfaces/index.WorkModelLayer.html +11 -0
  270. package/docs/interfaces/index.WorkModelLayerJson.html +5 -0
  271. package/docs/interfaces/index.WorkObserver.html +63 -0
  272. package/docs/interfaces/index.WorkObserverJson.html +10 -0
  273. package/docs/interfaces/index.WorkPanoramaJson.html +14 -0
  274. package/docs/interfaces/index.WorkPanoramasJson.html +3 -0
  275. package/docs/interfaces/index.WorkTile.html +21 -0
  276. package/docs/interfaces/index.WorkVideo.html +9 -0
  277. package/docs/interfaces/index.WorksEvent.html +8 -0
  278. package/docs/interfaces/index.XRControllerEvent.html +8 -0
  279. package/docs/interfaces/index.XRGestureEvent.html +11 -0
  280. package/docs/interfaces/index.XRSessionEvent.html +7 -0
  281. package/docs/modules/index.html +1 -0
  282. package/docs/modules.html +1 -0
  283. package/docs/types/index.AjaxResponseType.html +1 -0
  284. package/docs/types/index.AjaxResponseTypeMapping.html +1 -0
  285. package/docs/types/index.AnimationFrameLoopType.html +1 -0
  286. package/docs/types/index.BoundingVolumeJson.html +1 -0
  287. package/docs/types/index.BoxBoundingVolumeJson.html +2 -0
  288. package/docs/types/index.ControllerCustomInitTypes.html +6 -0
  289. package/docs/types/index.ControllerEventTypes.html +68 -0
  290. package/docs/types/index.CubeFace.html +1 -0
  291. package/docs/types/index.EasingFunction.html +1 -0
  292. package/docs/types/index.EventTypes.html +28 -0
  293. package/docs/types/index.FivePlugin.html +4 -0
  294. package/docs/types/index.FivePluginInit.html +3 -0
  295. package/docs/types/index.FivePluginInstance.html +3 -0
  296. package/docs/types/index.FlowingFireworks3DPassLine.html +16 -0
  297. package/docs/types/index.FlowingLight2DPassLine.html +10 -0
  298. package/docs/types/index.FlowingLight3DPassLine.html +10 -0
  299. package/docs/types/index.GestureTypes.html +1 -0
  300. package/docs/types/index.LegacyEventType.html +282 -0
  301. package/docs/types/index.LoadResultType.html +12 -0
  302. package/docs/types/index.Mode.html +15 -0
  303. package/docs/types/index.Models.html +11 -0
  304. package/docs/types/index.MotionCircle.html +2 -0
  305. package/docs/types/index.MotionConfig.html +1 -0
  306. package/docs/types/index.MotionInitalValue.html +1 -0
  307. package/docs/types/index.MotionValue.html +1 -0
  308. package/docs/types/index.MovePanoEffect.html +12 -0
  309. package/docs/types/index.NetWorkMeta.html +8 -0
  310. package/docs/types/index.NetworkError.html +1 -0
  311. package/docs/types/index.NetworkErrorCallback.html +1 -0
  312. package/docs/types/index.NetworkProgressCallback.html +1 -0
  313. package/docs/types/index.NetworkResponse.html +3 -0
  314. package/docs/types/index.NetworkState.html +1 -0
  315. package/docs/types/index.NetworkSuccessCallback.html +1 -0
  316. package/docs/types/index.NetworkType.html +1 -0
  317. package/docs/types/index.OutputTextureDataType.html +1 -0
  318. package/docs/types/index.PBMAlphaMode.html +1 -0
  319. package/docs/types/index.PBMColorStyle.html +1 -0
  320. package/docs/types/index.PBMFloorStyle.html +1 -0
  321. package/docs/types/index.PBMMeshMaterial.html +1 -0
  322. package/docs/types/index.PBMPointBack.html +1 -0
  323. package/docs/types/index.PBMPointCloudShaderType.html +1 -0
  324. package/docs/types/index.PBMPointShape.html +1 -0
  325. package/docs/types/index.PBMPointSize.html +1 -0
  326. package/docs/types/index.PBMTransition.html +1 -0
  327. package/docs/types/index.Pano.html +3 -0
  328. package/docs/types/index.PanoId.html +1 -0
  329. package/docs/types/index.ParseOptions.html +13 -0
  330. package/docs/types/index.PostProcessingType.html +1 -0
  331. package/docs/types/index.RegionBoundingVolumeJson.html +2 -0
  332. package/docs/types/index.RequestAnimationFrameArgs.html +1 -0
  333. package/docs/types/index.Scissor.html +2 -0
  334. package/docs/types/index.SphereBoundingVolumeJson.html +2 -0
  335. package/docs/types/index.SubscribeEventMap.html +1 -0
  336. package/docs/types/index.TileCacheOptions.html +3 -0
  337. package/docs/types/index.TileContentData.html +6 -0
  338. package/docs/types/index.TileRequestOrder.html +1 -0
  339. package/docs/types/index.TileRequestSchedulerOptions.html +4 -0
  340. package/docs/types/index.TilesetFrameState.html +21 -0
  341. package/docs/types/index.TrajectoryContentData.html +7 -0
  342. package/docs/types/index.WebXRControllerKey.html +1 -0
  343. package/docs/types/index.WebXRControllerType.html +1 -0
  344. package/docs/types/index.Works.html +1 -0
  345. package/docs/variables/index.PROXY_CONTROLLER_EVENT_NAMES.html +1 -0
  346. package/docs/variables/index.controllersDefaultInitArgs.html +1 -0
  347. package/docs/variables/index.draco.html +1 -0
  348. package/five/application/analysis.d.ts +40 -0
  349. package/five/application/controllers.d.ts +33 -0
  350. package/five/application/events-legacy.d.ts +454 -0
  351. package/five/application/events.d.ts +69 -0
  352. package/five/application/five.d.ts +498 -0
  353. package/five/application/fiveInitArgs.d.ts +173 -0
  354. package/five/application/fiveLoadOptions.d.ts +21 -0
  355. package/five/application/generateDefaultVideoElement.d.ts +2 -0
  356. package/five/application/getViewportScale.d.ts +2 -0
  357. package/five/application/initLights.d.ts +3 -0
  358. package/five/application/mode.d.ts +24 -0
  359. package/five/application/renderPoweredByRealsee.d.ts +3 -0
  360. package/five/assets/cardboard-png-data-url.d.ts +2 -0
  361. package/five/assets/gradient-png-data-url.d.ts +2 -0
  362. package/five/assets/loading-png-data-url.d.ts +2 -0
  363. package/five/assets/phone-png-data-url.d.ts +2 -0
  364. package/five/assets/realsee-pmg-data-url.d.ts +2 -0
  365. package/five/bvh/bvhMath.d.ts +33 -0
  366. package/five/bvh/bvhMesh.d.ts +7 -0
  367. package/five/bvh/bvhNode.d.ts +29 -0
  368. package/five/bvh/bvhObject.d.ts +19 -0
  369. package/five/bvh/bvhPoints.d.ts +6 -0
  370. package/five/bvh/index.d.ts +14 -0
  371. package/five/bvh/type.d.ts +1 -0
  372. package/five/bvh/worker.d.ts +36 -0
  373. package/five/certificates/hardware.d.ts +1 -0
  374. package/five/controllers/base.d.ts +166 -0
  375. package/five/controllers/events.d.ts +71 -0
  376. package/five/controllers/floorplan.d.ts +119 -0
  377. package/five/controllers/mapview.d.ts +138 -0
  378. package/five/controllers/model.d.ts +57 -0
  379. package/five/controllers/panorama.d.ts +143 -0
  380. package/five/controllers/panoramaLike.d.ts +87 -0
  381. package/five/controllers/topview.d.ts +42 -0
  382. package/five/core/camera.d.ts +65 -0
  383. package/five/core/internalWebGPURenderer.d.ts +13 -0
  384. package/five/core/panoVideo.d.ts +18 -0
  385. package/five/core/scene.d.ts +10 -0
  386. package/five/core/tiling.d.ts +56 -0
  387. package/five/declare.d.ts +35 -0
  388. package/five/gaussian-splatting/util/renderData.d.ts +66 -0
  389. package/five/gaussian-splatting/wasm/data.d.ts +20 -0
  390. package/five/gaussian-splatting/wasm/sort.d.ts +18 -0
  391. package/five/gaussian-splatting/worker/dataWorker.d.ts +1 -0
  392. package/five/gaussian-splatting/worker/sortWorker.d.ts +1 -0
  393. package/five/index.d.ts +58 -0
  394. package/five/index.js +1179 -0
  395. package/five/index.mjs +25111 -0
  396. package/five/meshes/boundingMesh.d.ts +12 -0
  397. package/five/meshes/intersectMesh.d.ts +8 -0
  398. package/five/meshes/panoCircleMesh.d.ts +36 -0
  399. package/five/meshes/panoCircleMeshCustom.d.ts +40 -0
  400. package/five/meshes/panoCircleMeshSolid.d.ts +35 -0
  401. package/five/meshes/panoSphereMesh.d.ts +29 -0
  402. package/five/model/helpers/coordinate-transform.d.ts +3 -0
  403. package/five/model/helpers/ellipsoid-coordinates.d.ts +14 -0
  404. package/five/model/helpers/get-edges-by-sphere.d.ts +8 -0
  405. package/five/model/helpers/get-recommend-tile3d-parameters.d.ts +8 -0
  406. package/five/model/index.d.ts +55 -0
  407. package/five/model/intersection.d.ts +18 -0
  408. package/five/model/loaders/at3d.d.ts +12 -0
  409. package/five/model/loaders/b3dm.d.ts +10 -0
  410. package/five/model/loaders/dome.d.ts +22 -0
  411. package/five/model/loaders/domez.d.ts +11 -0
  412. package/five/model/loaders/fbx.d.ts +8 -0
  413. package/five/model/loaders/glTF-helpers/extensions/CESIUM_RTC.d.ts +9 -0
  414. package/five/model/loaders/glTF-helpers/extensions/EXT_meshopt_compression.d.ts +8 -0
  415. package/five/model/loaders/glTF-helpers/extensions/EXT_texture_webp.d.ts +11 -0
  416. package/five/model/loaders/glTF-helpers/extensions/KHR_animation_pointer.d.ts +6 -0
  417. package/five/model/loaders/glTF-helpers/extensions/KHR_binary_glTF.d.ts +25 -0
  418. package/five/model/loaders/glTF-helpers/extensions/KHR_draco_mesh_compression.d.ts +11 -0
  419. package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting.d.ts +26 -0
  420. package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting_compression_spz.d.ts +11 -0
  421. package/five/model/loaders/glTF-helpers/extensions/KHR_gaussian_splatting_compression_spz_2.d.ts +13 -0
  422. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_clearcoat.d.ts +10 -0
  423. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_emissive_strength.d.ts +10 -0
  424. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_sheen.d.ts +10 -0
  425. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_transmission.d.ts +10 -0
  426. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_unlit.d.ts +12 -0
  427. package/five/model/loaders/glTF-helpers/extensions/KHR_mesh_quantization.d.ts +6 -0
  428. package/five/model/loaders/glTF-helpers/extensions/KHR_node_visibility.d.ts +10 -0
  429. package/five/model/loaders/glTF-helpers/extensions/KHR_texture_basisu.d.ts +9 -0
  430. package/five/model/loaders/glTF-helpers/extensions/KHR_texture_transform.d.ts +10 -0
  431. package/five/model/loaders/glTF-helpers/extensions/REALSEE_materials_lightmap.d.ts +7 -0
  432. package/five/model/loaders/glTF-helpers/extensions/base.d.ts +25 -0
  433. package/five/model/loaders/glTF-helpers/glTF.d.ts +713 -0
  434. package/five/model/loaders/glTF-helpers/index.d.ts +51 -0
  435. package/five/model/loaders/glTF-helpers/parser.d.ts +115 -0
  436. package/five/model/loaders/glTF-helpers/type.d.ts +14 -0
  437. package/five/model/loaders/gltf.d.ts +10 -0
  438. package/five/model/loaders/obj.d.ts +9 -0
  439. package/five/model/loaders/pbm.d.ts +26 -0
  440. package/five/model/loaders/ply.d.ts +24 -0
  441. package/five/model/loaders/pnts.d.ts +8 -0
  442. package/five/model/loaders/protobuf/dome.d.ts +540 -0
  443. package/five/model/loaders/protobuf/pbm.d.ts +203 -0
  444. package/five/model/loaders/shared.d.ts +16 -0
  445. package/five/model/loaders/splat.d.ts +8 -0
  446. package/five/model/loaders/spz.d.ts +14 -0
  447. package/five/model/loaders/tile3d-helpers/feature-table.d.ts +15 -0
  448. package/five/model/loaders/tile3d-helpers/gl-type.d.ts +20 -0
  449. package/five/model/loaders/tile3d-helpers/parse-gltf-array-buffer.d.ts +2 -0
  450. package/five/model/loaders/tile3d-helpers/parse-header.d.ts +2 -0
  451. package/five/model/loaders/tile3d-helpers/parse-point-cloud-attributes.d.ts +2 -0
  452. package/five/model/loaders/tile3d-helpers/parse-point-cloud-attributes.worker.d.ts +6 -0
  453. package/five/model/loaders/tile3d-helpers/parse-table.d.ts +3 -0
  454. package/five/model/loaders/tile3d-helpers/tile3d-type.d.ts +36 -0
  455. package/five/model/loaders/x3p.d.ts +22 -0
  456. package/five/model/materials/nodes/pbmMeshBasicNodeMaterial.d.ts +14 -0
  457. package/five/model/materials/nodes/pbmMeshPanoOnlyNodeMaterial.d.ts +14 -0
  458. package/five/model/materials/nodes/pbmMeshPhongNodeMaterial.d.ts +14 -0
  459. package/five/model/materials/nodes/pbmMeshPhysicalNodeMaterial.d.ts +14 -0
  460. package/five/model/materials/nodes/pbmPointCloudNodeMaterial.d.ts +22 -0
  461. package/five/model/materials/pbmGaussianSplattingNodeMaterial.d.ts +78 -0
  462. package/five/model/materials/pbmMaterial.d.ts +171 -0
  463. package/five/model/materials/pbmMaterialRegister.d.ts +6 -0
  464. package/five/model/materials/pbmMeshMaterial.d.ts +57 -0
  465. package/five/model/materials/pbmPointCloudMaterial.d.ts +20 -0
  466. package/five/model/materials/pbmPointCloudNodeMaterial.d.ts +46 -0
  467. package/five/model/materials/tsl/colorFilter.d.ts +9 -0
  468. package/five/model/materials/tsl/defines.d.ts +68 -0
  469. package/five/model/materials/tsl/nodeTypes.d.ts +12 -0
  470. package/five/model/materials/tsl/outputBuilder.d.ts +26 -0
  471. package/five/model/materials/tsl/panoColor.d.ts +17 -0
  472. package/five/model/materials/tsl/panoTransition.d.ts +8 -0
  473. package/five/model/materials/tsl/utils.d.ts +11 -0
  474. package/five/model/model-scene.d.ts +172 -0
  475. package/five/model/model.d.ts +203 -0
  476. package/five/model/objects/pbmGaussianSplattingObject.d.ts +47 -0
  477. package/five/model/objects/pbmGaussianSplattingRenderMesh.d.ts +73 -0
  478. package/five/model/objects/pbmGroup.d.ts +8 -0
  479. package/five/model/objects/pbmMesh.d.ts +10 -0
  480. package/five/model/objects/pbmPointCloud.d.ts +89 -0
  481. package/five/model/objects/pbmPointCloudObject.d.ts +81 -0
  482. package/five/model/parameter.d.ts +138 -0
  483. package/five/model/tile3d/header.d.ts +88 -0
  484. package/five/model/tile3d/index.d.ts +213 -0
  485. package/five/model/tile3d/tile-cache.d.ts +18 -0
  486. package/five/model/tile3d/tile-content.d.ts +10 -0
  487. package/five/model/tile3d/tile-node.d.ts +26 -0
  488. package/five/model/tile3d/tile-request-scheduler.d.ts +17 -0
  489. package/five/model/tile3d/tile.d.ts +79 -0
  490. package/five/model/tile3d/tileset-base-traverser.d.ts +59 -0
  491. package/five/model/tile3d/tileset-most-detail-traverser.d.ts +14 -0
  492. package/five/model/tile3d/tileset-normal-traverser.d.ts +15 -0
  493. package/five/model/tile3d/tileset-skip-traverser.d.ts +60 -0
  494. package/five/model/tile3d/tileset.d.ts +65 -0
  495. package/five/model/tile3d/trajectory-content.d.ts +0 -0
  496. package/five/model/tile3d/trajectory-node.d.ts +15 -0
  497. package/five/model/tile3d/trajectory.d.ts +30 -0
  498. package/five/model/tile3d/types.d.ts +33 -0
  499. package/five/model/view-layer.d.ts +20 -0
  500. package/five/renderer/compute-renderers/pointcloud-compute-renderer.d.ts +154 -0
  501. package/five/renderer/compute-renderers/rgb565.d.ts +45 -0
  502. package/five/renderer/compute-renderers/shaders/clear.d.ts +2 -0
  503. package/five/renderer/compute-renderers/shaders/fullscreenQuad.d.ts +2 -0
  504. package/five/renderer/compute-renderers/shaders/rasterize.d.ts +2 -0
  505. package/five/renderer/five-renderer.d.ts +33 -0
  506. package/five/renderer/index.d.ts +3 -0
  507. package/five/renderer/postprocessing/composer.d.ts +45 -0
  508. package/five/renderer/postprocessing/index.d.ts +8 -0
  509. package/five/renderer/postprocessing/passes/adaptive-luminance-pass.d.ts +27 -0
  510. package/five/renderer/postprocessing/passes/eye-dome-lighting-pass.d.ts +31 -0
  511. package/five/renderer/postprocessing/passes/flowing-fireworks-3d-pass.d.ts +71 -0
  512. package/five/renderer/postprocessing/passes/flowing-light-2d-pass.d.ts +26 -0
  513. package/five/renderer/postprocessing/passes/flowing-light-3d-pass.d.ts +75 -0
  514. package/five/renderer/postprocessing/passes/gaussian-blur-pass.d.ts +22 -0
  515. package/five/renderer/postprocessing/passes/pass.d.ts +38 -0
  516. package/five/renderer/scene-renderers/scene-renderer.d.ts +9 -0
  517. package/five/renderer/tools/full-screen-quad.d.ts +17 -0
  518. package/five/renderer/tools/postprocess-uv.d.ts +11 -0
  519. package/five/renderer/tools/render-cube-to-equirectangular.d.ts +7 -0
  520. package/five/renderer/tools/render-full-screen-depth.d.ts +2 -0
  521. package/five/renderer/tools/render-full-screen.d.ts +2 -0
  522. package/five/texture/histogram.d.ts +54 -0
  523. package/five/texture/imageBitmap.d.ts +13 -0
  524. package/five/texture/initTexture.d.ts +3 -0
  525. package/five/texture/loader.d.ts +39 -0
  526. package/five/texture/textureData.d.ts +11 -0
  527. package/five/thirdparty/fflate.d.ts +1407 -0
  528. package/five/thirdparty/hammer.d.ts +375 -0
  529. package/five/thirdparty/jsrsasign.d.ts +753 -0
  530. package/five/thirdparty/meshopt_decoder.d.ts +15 -0
  531. package/five/three-version-check.d.ts +1 -0
  532. package/five/types/addableObject.d.ts +12 -0
  533. package/five/types/cube.d.ts +2 -0
  534. package/five/types/gestureInput.d.ts +24 -0
  535. package/five/types/imageOptions.d.ts +20 -0
  536. package/five/types/intersectMeshInterface.d.ts +8 -0
  537. package/five/types/movePanoEffect.d.ts +13 -0
  538. package/five/types/movePanoOptions.d.ts +36 -0
  539. package/five/types/panoCircleMeshInterface.d.ts +34 -0
  540. package/five/types/plugin.d.ts +25 -0
  541. package/five/types/pose.d.ts +17 -0
  542. package/five/types/state.d.ts +20 -0
  543. package/five/types/viewport.d.ts +22 -0
  544. package/five/utils/ajax.d.ts +66 -0
  545. package/five/utils/animationFrameLoop.d.ts +45 -0
  546. package/five/utils/array.d.ts +31 -0
  547. package/five/utils/asyncTaskQueue.d.ts +8 -0
  548. package/five/utils/bufferGeometry.d.ts +33 -0
  549. package/five/utils/calculateProgress.d.ts +39 -0
  550. package/five/utils/calculateThreeMouse.d.ts +13 -0
  551. package/five/utils/canplayVideo.d.ts +2 -0
  552. package/five/utils/clamp.d.ts +2 -0
  553. package/five/utils/clock.d.ts +30 -0
  554. package/five/utils/createSymbol.d.ts +5 -0
  555. package/five/utils/decodeText.d.ts +2 -0
  556. package/five/utils/deepEqual.d.ts +2 -0
  557. package/five/utils/deepFreeze.d.ts +2 -0
  558. package/five/utils/defineProperty.d.ts +9 -0
  559. package/five/utils/detector.d.ts +14 -0
  560. package/five/utils/distance.d.ts +10 -0
  561. package/five/utils/draco.d.ts +26 -0
  562. package/five/utils/easing.d.ts +63 -0
  563. package/five/utils/event.d.ts +159 -0
  564. package/five/utils/face3.d.ts +12 -0
  565. package/five/utils/formatRad.d.ts +7 -0
  566. package/five/utils/hdr-data.d.ts +13 -0
  567. package/five/utils/imageSupport.d.ts +6 -0
  568. package/five/utils/imageURL.d.ts +42 -0
  569. package/five/utils/isEmptyObject.d.ts +2 -0
  570. package/five/utils/isNil.d.ts +6 -0
  571. package/five/utils/isNumber.d.ts +2 -0
  572. package/five/utils/isPowerOfTwo.d.ts +2 -0
  573. package/five/utils/isPromise.d.ts +2 -0
  574. package/five/utils/isSimilar.d.ts +6 -0
  575. package/five/utils/json.d.ts +7 -0
  576. package/five/utils/ktx2.d.ts +30 -0
  577. package/five/utils/lzma/index.d.ts +2 -0
  578. package/five/utils/lzma/lzma.d.ts +3 -0
  579. package/five/utils/lzma/lzmaWASM.d.ts +2 -0
  580. package/five/utils/lzma/lzmaWorker.d.ts +14 -0
  581. package/five/utils/memoryUsage.d.ts +37 -0
  582. package/five/utils/motion.d.ts +38 -0
  583. package/five/utils/noop.d.ts +6 -0
  584. package/five/utils/now.d.ts +7 -0
  585. package/five/utils/pano.d.ts +9 -0
  586. package/five/utils/pick.d.ts +3 -0
  587. package/five/utils/poseUtils.d.ts +5 -0
  588. package/five/utils/renderCubeTextureToCubeRenderTarget.d.ts +3 -0
  589. package/five/utils/renderDepth.d.ts +2 -0
  590. package/five/utils/renderTexturesToCubeRenderTarget.d.ts +10 -0
  591. package/five/utils/requestPermission.d.ts +3 -0
  592. package/five/utils/shaderContentFix.d.ts +7 -0
  593. package/five/utils/shaderMaterial.d.ts +20 -0
  594. package/five/utils/stateUtils.d.ts +5 -0
  595. package/five/utils/string-pattern.d.ts +8 -0
  596. package/five/utils/subscribe.d.ts +67 -0
  597. package/five/utils/tileCube.d.ts +19 -0
  598. package/five/utils/toFastProperties.d.ts +1 -0
  599. package/five/utils/typedCache.d.ts +10 -0
  600. package/five/utils/uniform.d.ts +15 -0
  601. package/five/utils/url.d.ts +35 -0
  602. package/five/utils/uuid.d.ts +5 -0
  603. package/five/utils/values.d.ts +2 -0
  604. package/five/utils/vectorCoordinates.d.ts +29 -0
  605. package/five/utils/volume.d.ts +111 -0
  606. package/five/utils/worker.d.ts +26 -0
  607. package/five/work/_ALLOW_HOST.d.ts +2 -0
  608. package/five/work/index.d.ts +6 -0
  609. package/five/work/keychain.d.ts +5 -0
  610. package/five/work/looseWorkType.d.ts +128 -0
  611. package/five/work/verify.d.ts +7 -0
  612. package/five/work/work.d.ts +246 -0
  613. package/five/work/workFetcher.d.ts +4 -0
  614. package/five/work/workJson.d.ts +3 -0
  615. package/five/work/workJsonType.d.ts +73 -0
  616. package/five/work/workObserverUtils.d.ts +36 -0
  617. package/five/work/workParser.d.ts +6 -0
  618. package/five/work/workResolvedObserver.d.ts +12 -0
  619. package/five/work/workVerify.d.ts +2 -0
  620. package/five/work/works.d.ts +10 -0
  621. package/llms.txt +66 -0
  622. package/package.json +56 -0
  623. package/plugins/BasePlugin/index.d.ts +96 -0
  624. package/plugins/GaussianSplattingEntranceAnimationPlugin/Controller.d.ts +66 -0
  625. package/plugins/GaussianSplattingEntranceAnimationPlugin/index.d.ts +5 -0
  626. package/plugins/GaussianSplattingEntranceAnimationPlugin/typing.d.ts +32 -0
  627. package/plugins/index.d.ts +2 -0
  628. package/plugins/index.js +255 -0
  629. package/plugins/index.mjs +539 -0
  630. package/plugins/utils/absoluteUrl.d.ts +5 -0
  631. package/react/autoCanvas.d.ts +9 -0
  632. package/react/canvas.d.ts +19 -0
  633. package/react/context.d.ts +12 -0
  634. package/react/createProvider.d.ts +98 -0
  635. package/react/createStore.d.ts +144 -0
  636. package/react/fiveApp.d.ts +22 -0
  637. package/react/hooks/unsafe__useFiveInstance.d.ts +9 -0
  638. package/react/hooks/useFiveAction.d.ts +147 -0
  639. package/react/hooks/useFiveCameraDirection.d.ts +7 -0
  640. package/react/hooks/useFiveCameraRaycaster.d.ts +7 -0
  641. package/react/hooks/useFiveCurrentObserver.d.ts +11 -0
  642. package/react/hooks/useFiveCurrentState.d.ts +15 -0
  643. package/react/hooks/useFiveEventCallback.d.ts +12 -0
  644. package/react/hooks/useFiveFloor.d.ts +15 -0
  645. package/react/hooks/useFiveHelper.d.ts +14 -0
  646. package/react/hooks/useFiveModelBounding.d.ts +5 -0
  647. package/react/hooks/useFiveModelEffect.d.ts +14 -0
  648. package/react/hooks/useFiveModelIntersectRaycaster.d.ts +22 -0
  649. package/react/hooks/useFiveModelReadyState.d.ts +8 -0
  650. package/react/hooks/useFivePlugin.d.ts +22 -0
  651. package/react/hooks/useFiveProject2d.d.ts +21 -0
  652. package/react/hooks/useFiveSceneEffect.d.ts +21 -0
  653. package/react/hooks/useFiveState.d.ts +6 -0
  654. package/react/hooks/useFiveWork.d.ts +29 -0
  655. package/react/index.d.ts +28 -0
  656. package/react/index.js +255 -0
  657. package/react/index.mjs +896 -0
  658. package/react/withFive.d.ts +213 -0
  659. package/resource/basis/1.16/basis_transcoder.js +22 -0
  660. package/resource/basis/1.16/basis_transcoder.wasm +0 -0
  661. package/resource/basis/README.md +5 -0
  662. package/resource/draco/1.5.6/draco_decoder.js +34 -0
  663. package/resource/draco/1.5.6/draco_decoder.wasm +0 -0
  664. package/resource/draco/1.5.6/draco_decoder_gltf.js +33 -0
  665. package/resource/draco/1.5.6/draco_decoder_gltf.wasm +0 -0
  666. package/resource/draco/1.5.6/draco_encoder.js +35 -0
  667. package/resource/draco/1.5.6/draco_encoder.wasm +0 -0
  668. package/resource/draco/1.5.6/draco_encoder_wrapper.js +97 -0
  669. package/resource/draco/1.5.6/draco_wasm_wrapper.js +117 -0
  670. package/resource/draco/1.5.6/draco_wasm_wrapper_gltf.js +116 -0
  671. package/resource/draco/README.md +5 -0
  672. package/umd/five-plugins.js +255 -0
  673. package/umd/five-react.js +255 -0
  674. package/umd/five.js +1579 -0
@@ -0,0 +1,71 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>features/state | 如视 Five SDK</title><meta name="description" content="Documentation for 如视 Five SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">如视 Five SDK</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">features/state</a></li></ul></div><div class="tsd-panel tsd-typography"><h1 id="state-状态" class="tsd-anchor-link">State (状态)<a href="#state-状态" 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></h1>
2
+ <ul>
3
+ <li><strong>Summary</strong>: State 是 Five 的核心状态对象,描述了当前的显示模式、观察点位以及相机的空间姿态。</li>
4
+ <li><strong>Schema</strong>: 包含 Pose (相机姿态) 和 Mode (模式) 等属性的接口。</li>
5
+ <li><strong>Concepts</strong>: Camera Pose, Coordinate System, Mode Specifics。</li>
6
+ <li><strong>Examples</strong>: 状态获取与更新。</li>
7
+ </ul>
8
+ <h2 id="schema" class="tsd-anchor-link">Schema<a href="#schema" 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>
9
+ <blockquote>
10
+ <p><strong>Definition</strong>: <a href="../../five/types/state.d.ts">State</a></p>
11
+ </blockquote>
12
+ <p><strong>State</strong> 类型定义如下(继承自 <code>Pose</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/webgpu&quot;</span><span class="hl-1">;</span><br/><span class="hl-10">import</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">interface</span><span class="hl-1"> </span><span class="hl-7">Pose</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">/** 相机看向的目标中心点坐标 */</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-3">interface</span><span class="hl-1"> </span><span class="hl-7">State</span><span class="hl-1"> </span><span class="hl-3">extends</span><span class="hl-1"> </span><span class="hl-7">Pose</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">/** 当前点位的唯一标识 (workCode) */</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">panoIndex</span><span class="hl-1">: </span><span class="hl-7">number</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
14
+ </code><button type="button">Copy</button></pre>
15
+
16
+ <h2 id="concepts" class="tsd-anchor-link">Concepts<a href="#concepts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
17
+ <ul>
18
+ <li><strong>Camera Pose (相机姿态)</strong>: Five 使用球坐标系 (Spherical) + 笛卡尔偏移 (Cartesian Offset) 来描述相机位置。
19
+ <ul>
20
+ <li>相机始终位于以 <code>offset</code> 为中心、<code>distance</code> 为半径的球面上。</li>
21
+ <li><strong>longitude</strong>: 球面上的经度(水平旋转)。</li>
22
+ <li><strong>latitude</strong>: 球面上的纬度(垂直旋转)。</li>
23
+ <li><strong>offset</strong>: 相机“看向”的点,也是球心。</li>
24
+ <li><strong>distance</strong>: 相机到 <code>offset</code> 的距离。</li>
25
+ </ul>
26
+ </li>
27
+ <li><strong>Coordinate System (坐标系)</strong>:
28
+ <ul>
29
+ <li>采用 Y-Up 右手坐标系(与 Three.js 默认一致)。</li>
30
+ <li>单位长度为米。</li>
31
+ </ul>
32
+ </li>
33
+ <li><strong>Mode Specifics (模式特性)</strong>:
34
+ <ul>
35
+ <li><strong>Panorama</strong>: <code>distance</code> 通常为 0,即相机位置与 <code>offset</code> 重合(第一人称视角)。</li>
36
+ <li><strong>Floorplan/Mapview</strong>: <code>offset</code> 通常位于模型中心,<code>distance</code> 大于模型包围盒半径(第三人称上帝视角)。</li>
37
+ </ul>
38
+ </li>
39
+ <li><strong>State vs CurrentState</strong>:
40
+ <ul>
41
+ <li><strong>five.state</strong>: <strong>目标状态</strong>。表示相机最终应该到达的状态。当调用 <code>setState</code> 或用户交互结束时,此值即为最终结果。通常用于 UI 同步(如高亮当前模式按钮)。</li>
42
+ <li><strong>five.getCurrentState()</strong>: <strong>瞬时状态</strong>。表示当前渲染帧相机的实际状态。在动画过渡过程中,<code>currentState</code> 会不断变化直至追赶上 <code>state</code>。通常用于需要实时反馈的场景(如罗盘旋转)。</li>
43
+ </ul>
44
+ </li>
45
+ </ul>
46
+ <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>
47
+ <h3 id="快速上手-quick-example" class="tsd-anchor-link">快速上手 (Quick Example)<a href="#快速上手-quick-example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
48
+ <p>使用 <code>setState</code> 更新状态:</p>
49
+ <pre><code class="ts"><span class="hl-8">// 切换到户型图模式,并旋转相机到 45 度</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;Floorplan&#39;</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">4</span><br/><span class="hl-1">});</span>
50
+ </code><button type="button">Copy</button></pre>
51
+
52
+ <h3 id="详细示例-detailed-example" class="tsd-anchor-link">详细示例 (Detailed Example)<a href="#详细示例-detailed-example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
53
+ <p>获取当前状态并基于此修改:</p>
54
+ <pre><code class="ts"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">state</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><br/><br/><span class="hl-8">// 在当前状态基础上,向右旋转 90 度,并略微拉远距离</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-6">tate</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-11">2</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">distance:</span><span class="hl-1"> </span><span class="hl-6">tate</span><span class="hl-1">.</span><span class="hl-6">distance</span><span class="hl-1"> + </span><span class="hl-11">2.0</span><br/><span class="hl-1">});</span>
55
+ </code><button type="button">Copy</button></pre>
56
+
57
+ <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>
58
+ <ol>
59
+ <li><strong>单位混淆</strong>: <code>longitude</code> 和 <code>latitude</code> 使用<strong>弧度</strong>,而 <code>fov</code> 使用<strong>角度</strong>(度)。</li>
60
+ <li><strong>Offset 类型</strong>: <code>offset</code> 必须是 <code>THREE.Vector3</code> 实例。如果在 React 等框架中使用纯对象(Plain Object),Five 内部会自动转换,但在 TypeScript 中需注意类型匹配。</li>
61
+ <li><strong>异步更新</strong>: <code>setState</code> 触发的相机运动是异步动画过程。如果需要立即无动画跳转,可传递第二个参数 <code>immediately: true</code>。</li>
62
+ </ol>
63
+ <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>
64
+ <ul>
65
+ <li><a href="features_mode.html">Mode - 模式</a>: 详细了解各种 Mode 的区别。</li>
66
+ </ul>
67
+ <hr>
68
+ <pre><code class="yaml"><span class="hl-0">tags</span><span class="hl-1">: [</span><span class="hl-2">camera</span><span class="hl-1">, </span><span class="hl-2">state</span><span class="hl-1">, </span><span class="hl-2">pose</span><span class="hl-1">, </span><span class="hl-2">interaction</span><span class="hl-1">]</span>
69
+ </code><button type="button">Copy</button></pre>
70
+
71
+ </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#state-状态"><span>State (状态)</span></a><ul><li><a href="#schema"><span>Schema</span></a></li><li><a href="#concepts"><span>Concepts</span></a></li><li><a href="#examples"><span>Examples</span></a></li><li><ul><li><a href="#快速上手-quick-example"><span>快速上手 (<wbr/>Quick <wbr/>Example)</span></a></li><li><a href="#详细示例-detailed-example"><span>详细示例 (<wbr/>Detailed <wbr/>Example)</span></a></li></ul></li><li><a href="#common-pitfalls"><span>Common <wbr/>Pitfalls</span></a></li><li><a href="#related"><span>Related</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">如视 Five SDK</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,188 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>features/ultra-hdr | 如视 Five SDK</title><meta name="description" content="Documentation for 如视 Five SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">如视 Five SDK</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">features/ultra-hdr</a></li></ul></div><div class="tsd-panel tsd-typography"><h1 id="ultrahdr-gainmap-渲染" class="tsd-anchor-link">UltraHDR / GainMap 渲染<a href="#ultrahdr-gainmap-渲染" 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></h1>
2
+ <p>本篇说明 five-webgpu 如何用 UltraHDR(GainMap)方案还原全景图的高动态范围,重点是<strong>最终 RGB 是如何算出来的</strong>。</p>
3
+ <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>
4
+ <p>UltraHDR 不直接存 HDR 像素,而是拆成两部分:</p>
5
+ <ul>
6
+ <li><strong>SDR 底图(base / color)</strong>:普通的 8bit 全景图,直接可显示。</li>
7
+ <li><strong>GainMap(增益图)</strong>:每个像素存一个 <code>[0,1]</code> 的增益值,表示该像素相对 SDR 需要放大多少亮度。</li>
8
+ </ul>
9
+ <p>渲染时的公式是:</p>
10
+ <pre><code><span class="hl-6">finalRGB</span><span class="hl-1"> = </span><span class="hl-6">sdrRGB</span><span class="hl-1"> * </span><span class="hl-5">boost</span><span class="hl-1">(</span><span class="hl-6">gain</span><span class="hl-1">)</span>
11
+ </code><button>Copy</button></pre>
12
+
13
+ <p><code>boost</code> 是由 GainMap 值加上一组元数据(HDR config)算出的每通道增益系数。当没有 HDR(增益全为 1 / 未启用)时 <code>boost = 1</code>,退化为普通 SDR。</p>
14
+ <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>
15
+ <p>GainMap 元数据来自每个点位的 <code>hdrConfig</code>(<code>HDRCfgData</code>):</p>
16
+ <table>
17
+ <thead>
18
+ <tr>
19
+ <th>字段</th>
20
+ <th>含义</th>
21
+ </tr>
22
+ </thead>
23
+ <tbody>
24
+ <tr>
25
+ <td><code>maxContentBoost</code></td>
26
+ <td>内容侧最大亮度增益(gain=1 时对应的放大倍数)</td>
27
+ </tr>
28
+ <tr>
29
+ <td><code>minContentBoost</code></td>
30
+ <td>内容侧最小亮度增益(gain=0 时对应,通常为 1)</td>
31
+ </tr>
32
+ <tr>
33
+ <td><code>hdrCapacityMin</code></td>
34
+ <td>显示器 HDR 容量下限(通常为 1)</td>
35
+ </tr>
36
+ <tr>
37
+ <td><code>hdrCapacityMax</code></td>
38
+ <td>显示器 HDR 容量上限</td>
39
+ </tr>
40
+ <tr>
41
+ <td><code>gamma</code></td>
42
+ <td>GainMap 的编码 gamma(解码用 <code>1/gamma</code>)</td>
43
+ </tr>
44
+ <tr>
45
+ <td><code>offsetSdr</code></td>
46
+ <td>SDR 偏移,默认 0(Adobe 规范默认 <code>1/64</code>)</td>
47
+ </tr>
48
+ <tr>
49
+ <td><code>offsetHdr</code></td>
50
+ <td>HDR 偏移,默认 0(Adobe 规范默认 <code>1/64</code>)</td>
51
+ </tr>
52
+ </tbody>
53
+ </table>
54
+ <p>另外还有一个运行时可调参数:</p>
55
+ <ul>
56
+ <li><code>maxDisplayBoost</code>:当前显示器 / 场景允许的最大显示增益,决定实际能还原多少 HDR。可通过 <code>five.modelScene.parameter.set('maxDisplayBoost', value)</code> 实时调整。</li>
57
+ </ul>
58
+ <h2 id="最终-rgb-的计算步骤" class="tsd-anchor-link">最终 RGB 的计算步骤<a href="#最终-rgb-的计算步骤" 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>
59
+ <p>对应实现见 <code>PanoSourceNode.computeHDRBoost</code>(以及瓦片路径下等价的 <code>tiling.ts#computeHDRBoostNode</code>)。</p>
60
+ <h3 id="1-计算显示权重-weight" class="tsd-anchor-link">1. 计算显示权重 weight<a href="#1-计算显示权重-weight" 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>
61
+ <p>根据显示器容量把 <code>maxDisplayBoost</code> 归一化到 <code>[0,1]</code>:</p>
62
+ <pre><code><span class="hl-6">weight</span><span class="hl-1"> = </span><span class="hl-5">clamp</span><span class="hl-1">(</span><br/><span class="hl-1"> (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">maxDisplayBoost</span><span class="hl-1">) - </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMin</span><span class="hl-1">)) /</span><br/><span class="hl-1"> (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMax</span><span class="hl-1">) - </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMin</span><span class="hl-1">)),</span><br/><span class="hl-1"> </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">1</span><br/><span class="hl-1">)</span>
63
+ </code><button>Copy</button></pre>
64
+
65
+ <ul>
66
+ <li><code>weight = 0</code>:显示器不支持超出 SDR 的亮度 → 完全不增益。</li>
67
+ <li><code>weight = 1</code>:显示器能力达到内容上限 → 全量增益。</li>
68
+ <li>中间值:按比例插值。</li>
69
+ </ul>
70
+ <blockquote>
71
+ <p>瓦片路径(<code>computeHDRBoostNode</code>)对分母做了保护:<code>max(denom, 1e-6)</code> 并乘以 <code>step(1e-6, denom)</code>,避免非 HDR(capacity 全为 1)时除零产生 NaN。</p>
72
+ </blockquote>
73
+ <h3 id="2-gainmap-解码(gamma)" class="tsd-anchor-link">2. GainMap 解码(gamma)<a href="#2-gainmap-解码(gamma)" 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>
74
+ <p>GainMap 采样值经 gamma 还原为线性增益量(每通道独立),解码使用 gamma 的倒数:</p>
75
+ <pre><code><span class="hl-6">gainLinear</span><span class="hl-1"> = </span><span class="hl-5">pow</span><span class="hl-1">(</span><span class="hl-6">gainRGB</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1">/</span><span class="hl-6">gamma</span><span class="hl-1">) </span><span class="hl-8">// 对 r/g/b 分别做 pow,与 Adobe 规范一致</span>
76
+ </code><button>Copy</button></pre>
77
+
78
+ <h3 id="3-在-log-域插值出增益" class="tsd-anchor-link">3. 在 log 域插值出增益<a href="#3-在-log-域插值出增益" 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>
79
+ <p>用 <code>min/maxContentBoost</code> 在 log2 空间对 <code>gainLinear</code> 做线性插值,得到该像素的对数增益:</p>
80
+ <pre><code><span class="hl-6">logGain</span><span class="hl-1"> = </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">minContentBoost</span><span class="hl-1">)</span><br/><span class="hl-1"> + </span><span class="hl-6">gainLinear</span><span class="hl-1"> * (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">maxContentBoost</span><span class="hl-1">) - </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">minContentBoost</span><span class="hl-1">))</span>
81
+ </code><button>Copy</button></pre>
82
+
83
+ <h3 id="4-应用显示权重并还原到线性倍数" class="tsd-anchor-link">4. 应用显示权重并还原到线性倍数<a href="#4-应用显示权重并还原到线性倍数" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
84
+ <p>用第 1 步的 <code>weight</code> 缩放对数增益,再指数还原为倍数:</p>
85
+ <pre><code><span class="hl-6">boost</span><span class="hl-1"> = </span><span class="hl-5">exp2</span><span class="hl-1">(</span><span class="hl-6">logGain</span><span class="hl-1"> * </span><span class="hl-6">weight</span><span class="hl-1">) </span><span class="hl-8">// 每通道</span>
86
+ </code><button>Copy</button></pre>
87
+
88
+ <h3 id="5-得到最终颜色" class="tsd-anchor-link">5. 得到最终颜色<a href="#5-得到最终颜色" 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>
89
+ <p>应用 GainMap 偏移得到最终 HDR 颜色(<code>offset</code> 为 0 时退化为 <code>sdr * boost</code>):</p>
90
+ <pre><code><span class="hl-6">finalRGB</span><span class="hl-1"> = (</span><span class="hl-6">sdrRGB</span><span class="hl-1"> + </span><span class="hl-6">offsetSdr</span><span class="hl-1">) * </span><span class="hl-6">boost</span><span class="hl-1"> - </span><span class="hl-6">offsetHdr</span><br/><span class="hl-6">finalA</span><span class="hl-1"> = </span><span class="hl-6">sdrA</span>
91
+ </code><button>Copy</button></pre>
92
+
93
+ <p>在瓦片材质(<code>TileMaterial</code>)里,还用 <code>enabled</code> 开关做了混合,未启用时退化为 SDR:</p>
94
+ <pre><code><span class="hl-6">hdrRgb</span><span class="hl-1"> = </span><span class="hl-5">mix</span><span class="hl-1">(</span><span class="hl-6">texColor</span><span class="hl-1">.</span><span class="hl-6">rgb</span><span class="hl-1">, </span><span class="hl-6">texColor</span><span class="hl-1">.</span><span class="hl-6">rgb</span><span class="hl-1"> * </span><span class="hl-6">boost</span><span class="hl-1">, </span><span class="hl-6">enabled</span><span class="hl-1">)</span>
95
+ </code><button>Copy</button></pre>
96
+
97
+ <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>
98
+ <pre><code><span class="hl-6">weight</span><span class="hl-1"> = </span><span class="hl-5">clamp</span><span class="hl-1">( (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">maxDisplayBoost</span><span class="hl-1">) - </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMin</span><span class="hl-1">))</span><br/><span class="hl-1"> / (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMax</span><span class="hl-1">) - </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMin</span><span class="hl-1">)), </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1"> )</span><br/><br/><span class="hl-6">gainLin</span><span class="hl-1"> = </span><span class="hl-5">pow</span><span class="hl-1">(</span><span class="hl-6">gainRGB</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1">/</span><span class="hl-6">gamma</span><span class="hl-1">)</span><br/><br/><span class="hl-6">logGain</span><span class="hl-1"> = </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">minContentBoost</span><span class="hl-1">)</span><br/><span class="hl-1"> + </span><span class="hl-6">gainLin</span><span class="hl-1"> * (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">maxContentBoost</span><span class="hl-1">) - </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">minContentBoost</span><span class="hl-1">))</span><br/><br/><span class="hl-6">boost</span><span class="hl-1"> = </span><span class="hl-5">exp2</span><span class="hl-1">(</span><span class="hl-6">logGain</span><span class="hl-1"> * </span><span class="hl-6">weight</span><span class="hl-1">)</span><br/><br/><span class="hl-6">finalRGB</span><span class="hl-1"> = (</span><span class="hl-6">sdrRGB</span><span class="hl-1"> + </span><span class="hl-6">offsetSdr</span><span class="hl-1">) * </span><span class="hl-6">boost</span><span class="hl-1"> - </span><span class="hl-6">offsetHdr</span>
99
+ </code><button>Copy</button></pre>
100
+
101
+ <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>
102
+ <p>以下公式来自两个权威开源实现,可作为校验基准。内容已改写以符合许可要求。</p>
103
+ <h3 id="1-google-(c,)" class="tsd-anchor-link">1) Google <code>libultrahdr</code>(C++,<code>gainmapmath.cpp</code>)<a href="#1-google-(c,)" 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
+ <p>解码端 <code>applyGain</code>(带 displayBoost 的重载)核心逻辑:</p>
105
+ <pre><code class="cpp">logBoost = log2(minContentBoost) * (1 - gain) + log2(maxContentBoost) * gain;
106
+ gainFactor = exp2(logBoost * displayBoost / maxContentBoost);
107
+ finalRGB = sdr * gainFactor;
108
+ </code><button type="button">Copy</button></pre>
109
+
110
+ <p>说明:</p>
111
+ <ul>
112
+ <li><code>gain</code> 是 GainMap 采样值(<code>[0,1]</code>)。该库固定 <code>gamma = 1.0</code>、<code>offsetSdr = offsetHdr = 0</code>、<code>hdrCapacityMin = 1</code>、<code>hdrCapacityMax = maxContentBoost</code>,所以权重简化成 <code>displayBoost / maxContentBoost</code>。</li>
113
+ <li>元数据里的 <code>minContentBoost</code> / <code>maxContentBoost</code> 是<strong>线性倍数</strong>(非 log),在着色器里才取 <code>log2</code>。</li>
114
+ <li>来源:<a href="https://github.com/ittiam-systems/libultrahdr">ittiam-systems/libultrahdr</a> / <a href="https://android.googlesource.com/platform/external/libultrahdr">AOSP libultrahdr</a>。内容为改写。</li>
115
+ </ul>
116
+ <h3 id="2-monogrid-v340(adobe-gainmap-规范的-threejs-移植)" class="tsd-anchor-link">2) MONOGRID <code>gainmap-js</code> v3.4.0(Adobe GainMap 规范的 three.js 移植)<a href="#2-monogrid-v340(adobe-gainmap-规范的-threejs-移植)" 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>
117
+ <p>解码 fragment shader 原式(等价重排):</p>
118
+ <pre><code class="glsl">logRecovery = pow(recovery, gamma); // gamma uniform = 1.0 / metadataGamma
119
+ logBoost = gainMapMin * (1 - logRecovery) + gainMapMax * logRecovery;
120
+ hdrColor = (sdr + offsetSdr) * exp2(logBoost * weightFactor) - offsetHdr;
121
+
122
+ weightFactor = clamp(
123
+ (log2(maxDisplayBoost) - hdrCapacityMin) / (hdrCapacityMax - hdrCapacityMin),
124
+ 0, 1
125
+ );
126
+ </code><button type="button">Copy</button></pre>
127
+
128
+ <p>说明(这是最贴近 Adobe 官方规范的实现):</p>
129
+ <ul>
130
+ <li><code>gainMapMin</code> / <code>gainMapMax</code> 就是 <code>log2(minContentBoost)</code> / <code>log2(maxContentBoost)</code>,<strong>元数据里已经是 log2 空间</strong>,所以 shader 里不再取 log。</li>
131
+ <li>同理 <code>hdrCapacityMin</code> / <code>hdrCapacityMax</code> <strong>也是 log2 空间</strong>的值,所以 <code>weightFactor</code> 里直接用、不再套 <code>log2</code>。</li>
132
+ <li><code>gamma</code> uniform 传入的是 <code>1/metadataGamma</code>(解码用倒数)。</li>
133
+ <li>带 <code>offsetSdr</code> / <code>offsetHdr</code> 偏移(Adobe 默认 <code>1/64</code>)。</li>
134
+ <li>来源:<a href="https://github.com/MONOGRID/gainmap-js">MONOGRID/gainmap-js</a>。内容为改写。</li>
135
+ </ul>
136
+ <h2 id="本项目公式-vs-官方公式(差异核对)" class="tsd-anchor-link">本项目公式 vs 官方公式(差异核对)<a href="#本项目公式-vs-官方公式(差异核对)" 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>
137
+ <p>结论:本项目 <code>computeHDRBoost</code> 的<strong>结构是正确的</strong>——它等价于 libultrahdr 的 log 域插值,加上 Adobe 规范的通用 <code>weight</code> 公式。以下三处约定/取舍需要留意:</p>
138
+ <ol>
139
+ <li>
140
+ <p><strong>元数据空间约定(最关键,仍需确认)</strong></p>
141
+ <ul>
142
+ <li>本项目对 <code>minContentBoost / maxContentBoost / hdrCapacityMin / hdrCapacityMax</code> 在 shader 内部统一取 <code>log2</code>,说明这些字段在数据里是<strong>线性倍数</strong>(如 <code>maxContentBoost = 100</code>、<code>hdrCapacityMax = 1000</code>)。这与 <strong>libultrahdr 约定一致</strong>。</li>
143
+ <li>但 <strong>Adobe / gainmap-js 约定相反</strong>:这些字段在元数据里就已经是 <strong>log2 空间</strong>。</li>
144
+ <li>风险:如果 GainMap 资源是按 Adobe/UltraHDR 标准(XMP <code>hdrgm</code>)导出的,那里的 <code>HDRCapacityMin/Max</code>、<code>GainMapMin/Max</code> 已经是 log2 值,本项目再套一次 <code>log2</code> 就会<strong>二次取对数</strong>导致结果错误。务必确认打包侧写入的到底是线性倍数还是 log2 值。</li>
145
+ </ul>
146
+ </li>
147
+ <li>
148
+ <p><strong>gamma 方向(✅ 已修复)</strong></p>
149
+ <ul>
150
+ <li>现在解码使用 <code>pow(gainRGB, 1/gamma)</code>,与 Adobe / gainmap-js 规范一致。</li>
151
+ <li><code>gamma = 1</code>(当前默认)时与旧行为相同,无回归;<code>gamma ≠ 1</code> 时结果才会正确。</li>
152
+ <li>同时修正了 <code>PanoSourceNode.update</code> 里 <code>gamma ?? 1000</code> 的可疑默认值为 <code>?? 1</code>。</li>
153
+ </ul>
154
+ </li>
155
+ <li>
156
+ <p><strong>offset 偏移(✅ 已支持)</strong></p>
157
+ <ul>
158
+ <li>完整式:<code>hdr = (sdr + offsetSdr) * boost - offsetHdr</code>,由 <code>applyHDROffset</code> / <code>applyHDROffsetNode</code> 统一应用。</li>
159
+ <li><code>offsetSdr</code> / <code>offsetHdr</code> 已加入 <code>HDRCfgData</code> 与瓦片 uniform,可从 <code>hdrConfig</code> 读取。</li>
160
+ <li><strong>默认值为 0</strong>(等价于 <code>sdr * boost</code>,与历史行为一致)。注意 Adobe 规范默认是 <code>1/64</code>;若资源按非零 offset 编码,需在配置里显式提供对应值,暗部才能严格还原。</li>
161
+ </ul>
162
+ </li>
163
+ </ol>
164
+ <h3 id="weight-公式对比" class="tsd-anchor-link">weight 公式对比<a href="#weight-公式对比" 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>
165
+ <p>本项目的 weight 与 gainmap-js 完全一致(只是 gainmap-js 的 capacity 已在 log2 空间,省掉了外层 <code>log2</code>):</p>
166
+ <pre><code><span class="hl-1"># </span><span class="hl-6">本项目</span><span class="hl-1">(</span><span class="hl-6">capacity</span><span class="hl-1"> </span><span class="hl-6">为线性倍数</span><span class="hl-1">)</span><br/><span class="hl-6">weight</span><span class="hl-1"> = </span><span class="hl-5">clamp</span><span class="hl-1">( (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">maxDisplayBoost</span><span class="hl-1">) - </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMin</span><span class="hl-1">))</span><br/><span class="hl-1"> / (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMax</span><span class="hl-1">) - </span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">hdrCapacityMin</span><span class="hl-1">)), </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1"> )</span><br/><br/><span class="hl-1"># </span><span class="hl-6">gainmap</span><span class="hl-1">-</span><span class="hl-6">js</span><span class="hl-1">(</span><span class="hl-6">capacity</span><span class="hl-1"> </span><span class="hl-6">已是</span><span class="hl-1"> </span><span class="hl-6">log2</span><span class="hl-1"> </span><span class="hl-6">值</span><span class="hl-1">)</span><br/><span class="hl-6">weight</span><span class="hl-1"> = </span><span class="hl-5">clamp</span><span class="hl-1">( (</span><span class="hl-5">log2</span><span class="hl-1">(</span><span class="hl-6">maxDisplayBoost</span><span class="hl-1">) - </span><span class="hl-6">hdrCapacityMin</span><span class="hl-1">)</span><br/><span class="hl-1"> / (</span><span class="hl-6">hdrCapacityMax</span><span class="hl-1"> - </span><span class="hl-6">hdrCapacityMin</span><span class="hl-1">), </span><span class="hl-11">0</span><span class="hl-1">, </span><span class="hl-11">1</span><span class="hl-1"> )</span>
167
+ </code><button>Copy</button></pre>
168
+
169
+ <p>两式在“capacity 线性 vs log2”约定统一后是同一个公式。</p>
170
+ <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>
171
+ <ul>
172
+ <li><code>lib/five/model/materials/nodes/PanoSourceNode.ts</code>
173
+ <ul>
174
+ <li><code>computeHDRBoost(gainRGB, maxDisplayBoost)</code>:增益系数计算(TSL 节点)。</li>
175
+ <li><code>sampleHDR(cameraDirection, maxDisplayBoost, rgba?)</code>:采样 SDR 底图与 GainMap 并输出 <code>sdrColor.rgb * boost</code>。</li>
176
+ </ul>
177
+ </li>
178
+ <li><code>lib/five/core/tiling.ts</code>
179
+ <ul>
180
+ <li><code>computeHDRBoostNode(gainRGB, uniforms)</code>:瓦片细化路径下的等价实现(带除零保护)。</li>
181
+ <li><code>TileMaterial.setupNode()</code>:<code>mix(sdr, sdr*boost, enabled)</code> 的烘焙逻辑。</li>
182
+ </ul>
183
+ </li>
184
+ <li><code>lib/five/utils/hdr-data.ts</code>:<code>HDRCfgData</code> 定义与 <code>parseHDRCfgData</code> 解析。</li>
185
+ </ul>
186
+ <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>
187
+ <p>参见 <code>examples/hdr/index.ts</code> 与 <code>examples/_tools/hdr-viewer/panes/hdr.ts</code>:到达点位后从 <code>observer.images.hdrConfig</code> 拉取元数据,<code>maxDisplayBoost</code> 可实时调节以观察增益变化。</p>
188
+ </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#ultrahdr-gainmap-渲染"><span>Ultra<wbr/>HDR / <wbr/>Gain<wbr/>Map 渲染</span></a><ul><li><a href="#基本原理"><span>基本原理</span></a></li><li><a href="#相关数据结构"><span>相关数据结构</span></a></li><li><a href="#最终-rgb-的计算步骤"><span>最终 <wbr/>RGB 的计算步骤</span></a></li><li><ul><li><a href="#1-计算显示权重-weight"><span>1. 计算显示权重 weight</span></a></li><li><a href="#2-gainmap-解码(gamma)"><span>2. <wbr/>Gain<wbr/>Map 解码(gamma)</span></a></li><li><a href="#3-在-log-域插值出增益"><span>3. 在 log 域插值出增益</span></a></li><li><a href="#4-应用显示权重并还原到线性倍数"><span>4. 应用显示权重并还原到线性倍数</span></a></li><li><a href="#5-得到最终颜色"><span>5. 得到最终颜色</span></a></li></ul></li><li><a href="#完整公式汇总"><span>完整公式汇总</span></a></li><li><a href="#官方参考公式"><span>官方参考公式</span></a></li><li><ul><li><a href="#1-google-(c,)"><span>1) <wbr/>Google (<wbr/>C++,)</span></a></li><li><a href="#2-monogrid-v340(adobe-gainmap-规范的-threejs-移植)"><span>2) <wbr/>MONOGRID v3.4.0(<wbr/>Adobe <wbr/>Gain<wbr/>Map 规范的 three.js 移植)</span></a></li></ul></li><li><a href="#本项目公式-vs-官方公式(差异核对)"><span>本项目公式 vs 官方公式(差异核对)</span></a></li><li><ul><li><a href="#weight-公式对比"><span>weight 公式对比</span></a></li></ul></li><li><a href="#关键代码位置"><span>关键代码位置</span></a></li><li><a href="#使用示例"><span>使用示例</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">如视 Five SDK</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,158 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>features/view-layer | 如视 Five SDK</title><meta name="description" content="Documentation for 如视 Five SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">如视 Five SDK</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">features/view-layer</a></li></ul></div><div class="tsd-panel tsd-typography"><h1 id="viewlayer-视图层" class="tsd-anchor-link">ViewLayer (视图层)<a href="#viewlayer-视图层" 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></h1>
2
+ <ul>
3
+ <li><strong>Summary</strong>: ViewLayer 是 Model 的组成部分,负责管理具体的 3D 资源(如 Mesh 或 PointCloud),支持独立的渲染配置和可见性控制。</li>
4
+ <li><strong>Schema</strong>: 继承自 <code>Tile3D</code>,由 <code>Model</code> 统一管理。</li>
5
+ <li><strong>Concepts</strong>: Layer Fallback, 3DTile Integration, Parameter Inheritance.</li>
6
+ <li><strong>Examples</strong>: 可见性控制、参数配置、事件监听。</li>
7
+ </ul>
8
+ <h2 id="schema" class="tsd-anchor-link">Schema<a href="#schema" 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>
9
+ <blockquote>
10
+ <p><strong>Definition</strong>: <a href="../../five/model/view-layer.d.ts">ViewLayer</a>, <a href="../../five/model/view-layer.d.ts">ViewLayerInit</a></p>
11
+ </blockquote>
12
+ <p>ViewLayer 是一个具体的渲染图层,它对应一个具体的 3D 数据源(通常是一个 <code>.gltf</code> / <code>.b3dm</code> / <code>.pnts</code> 等 Tileset 入口)。</p>
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">ViewLayer</span><span class="hl-1"> </span><span class="hl-3">extends</span><span class="hl-1"> </span><span class="hl-7">Tile3D</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-8">/** 图层名称 (如 &#39;mesh&#39;, &#39;point_cloud&#39;) */</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">type</span><span class="hl-1">: </span><span class="hl-9">&quot;point_cloud&quot;</span><span class="hl-1"> | </span><span class="hl-9">&quot;mesh&quot;</span><span class="hl-1"> | </span><span class="hl-9">&quot;gaussian_splatting&quot;</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">parameter</span><span class="hl-1">: </span><span class="hl-7">Parameter</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">/** 是否可见 */</span><br/><span class="hl-1"> </span><span class="hl-6">visible</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">/** 对应的 Tileset URL */</span><br/><span class="hl-1"> </span><span class="hl-6">tilesetUrl</span><span class="hl-1">: </span><span class="hl-7">string</span><span class="hl-1">;</span><br/><span class="hl-1">}</span>
14
+ </code><button type="button">Copy</button></pre>
15
+
16
+ <h2 id="concepts" class="tsd-anchor-link">Concepts<a href="#concepts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
17
+ <h3 id="1-viewlayer-vs-workmodel" class="tsd-anchor-link">1. ViewLayer vs Work.Model<a href="#1-viewlayer-vs-workmodel" 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
+ <p><code>ViewLayer</code> 的生成逻辑严格依赖于 <code>Work</code> 数据中的定义,但也包含了向后兼容的 Fallback 机制。</p>
19
+ <h4 id="数据来源-data-source" class="tsd-anchor-link">数据来源 (Data Source)<a href="#数据来源-data-source" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4>
20
+ <ol>
21
+ <li>
22
+ <p><strong>优先使用 <code>work.model.layers</code></strong>:
23
+ 这是标准的定义方式。<code>work.model.layers</code> 是一个数组,每个元素显式定义了一个 Layer 的 <code>name</code>, <code>type</code>, <code>tileset</code> (URL) 等信息。
24
+ Five 会遍历这个数组,为每一项创建一个 <code>ViewLayer</code> 实例。</p>
25
+ </li>
26
+ <li>
27
+ <p><strong>Fallback to <code>work.model.file</code></strong>:
28
+ 如果 <code>work.model.layers</code> 中没有定义 <code>mesh</code> 类型的层,且 <code>work.model.file</code> 存在(旧版数据字段),Five 会自动创建一个 <strong>虚拟的 Mesh Layer</strong>。</p>
29
+ <ul>
30
+ <li><strong>Name</strong>: 默认为 <code>model</code> (或其他内部标识)。</li>
31
+ <li><strong>Type</strong>: <code>mesh</code>。</li>
32
+ <li><strong>URL</strong>: 指向 <code>work.model.file</code>。</li>
33
+ <li><strong>UpAxis</strong>: 根据文件后缀自动推断 (如 <code>.obj</code> 可能需要特殊处理)。</li>
34
+ </ul>
35
+ </li>
36
+ </ol>
37
+ <blockquote>
38
+ <p><strong>总结</strong>: <code>ViewLayer</code> 是 <code>work.model</code> 数据的运行时表现。<code>layers</code> 字段提供了精细的控制,而 <code>file</code> 字段提供了旧数据的兼容支持。</p>
39
+ </blockquote>
40
+ <h3 id="2-viewlayer-vs-3dtile" class="tsd-anchor-link">2. ViewLayer vs 3DTile<a href="#2-viewlayer-vs-3dtile" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
41
+ <p><code>ViewLayer</code> 本质上是一个 <strong>3DTile</strong> 加载器实例(继承自 <code>Tile3D</code>)。</p>
42
+ <ul>
43
+ <li><strong>加载机制</strong>: 每个 ViewLayer 独立维护一个 3DTiles 的遍历器 (Traverser) 和调度器 (Scheduler)。这意味着 Mesh 层、PointCloud 层和 GaussianSplatting 层是独立加载、独立计算 LOD (Level of Detail) 的。</li>
44
+ <li><strong>空间变换</strong>: ViewLayer 负责处理数据的坐标系转换 (如 ECEF 转 ENU,Y-Up 转 Z-Up),确保不同格式的数据在 Five 场景中正确对齐。</li>
45
+ </ul>
46
+ <h3 id="3-viewlayer-model-modelscene-parameter" class="tsd-anchor-link">3. ViewLayer, Model, ModelScene &amp; Parameter<a href="#3-viewlayer-model-modelscene-parameter" 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>
47
+ <p>这是 Five 渲染架构的核心层级关系,<code>Parameter</code> 在其中起到了“胶水”的作用。</p>
48
+ <h4 id="层级关系-hierarchy" class="tsd-anchor-link">层级关系 (Hierarchy)<a href="#层级关系-hierarchy" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4>
49
+ <pre><code class="mermaid"><span class="hl-1">graph TD</span><br/><span class="hl-1"> Scene[ModelScene] --&gt;|包含| Model[Model]</span><br/><span class="hl-1"> Model --&gt;|包含| LayerA[ViewLayer (Mesh)]</span><br/><span class="hl-1"> Model --&gt;|包含| LayerB[ViewLayer (PointCloud)]</span>
50
+ </code><button type="button">Copy</button></pre>
51
+
52
+ <h4 id="parameter-的作用-inheritance" class="tsd-anchor-link">Parameter 的作用 (Inheritance)<a href="#parameter-的作用-inheritance" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4>
53
+ <p><code>Parameter</code> 系统贯穿了上述三层,实现了**“配置继承与覆盖”**。</p>
54
+ <ol>
55
+ <li><strong>ModelScene (全局配置)</strong>:
56
+ <ul>
57
+ <li>持有 <code>five.modelScene.parameter</code>。</li>
58
+ <li>定义了场景级的默认值(如:默认显存上限 <code>512MB</code>)。</li>
59
+ </ul>
60
+ </li>
61
+ <li><strong>Model (模型级配置)</strong>:
62
+ <ul>
63
+ <li>持有 <code>model.parameter</code>。</li>
64
+ <li>可以覆盖全局配置(如:特定模型需要 <code>1024MB</code> 显存)。</li>
65
+ </ul>
66
+ </li>
67
+ <li><strong>ViewLayer (图层级配置)</strong>:
68
+ <ul>
69
+ <li>持有 <code>viewLayer.parameter</code>。</li>
70
+ <li><strong>最具体的控制点</strong>。它在计算最终值时,会依次继承 <code>Model</code> 和 <code>ModelScene</code> 的配置。</li>
71
+ </ul>
72
+ </li>
73
+ </ol>
74
+ <p><strong>示例场景</strong>:</p>
75
+ <ul>
76
+ <li>如果你想让<strong>整个场景</strong>变暗,设置 <code>modelScene.parameter.set('opacity', 0.5)</code>。</li>
77
+ <li>如果你只想让<strong>点云层</strong>变暗,保留模型层亮度,设置 <code>pointCloudLayer.parameter.set('opacity', 0.5)</code>。</li>
78
+ </ul>
79
+ <h3 id="4-visibility-control-可见性控制" class="tsd-anchor-link">4. Visibility Control (可见性控制)<a href="#4-visibility-control-可见性控制" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
80
+ <p>默认情况下,Five <strong>不会</strong>加载所有图层,而是根据优先级<strong>仅加载一个</strong>图层,以节省资源。
81
+ 优先级顺序:<code>mesh</code> &gt; <code>point_cloud</code> &gt; 其他类型。</p>
82
+ <p><strong>可见性与内存管理 (Visibility &amp; Memory)</strong>:</p>
83
+ <ul>
84
+ <li><strong>显示 (Show)</strong>: 当图层设置为可见 (<code>visible = true</code>) 时,Five 会开始加载该图层的资源。</li>
85
+ <li><strong>隐藏 (Hide)</strong>: 当图层设置为隐藏 (<code>visible = false</code>) 时,Five 会<strong>释放该图层占用的所有内存资源</strong> (Geometry, Texture 等)。这意味着“隐藏”等同于“卸载”。</li>
86
+ </ul>
87
+ <p>Five 提供了两种层级的可见性控制方式:</p>
88
+ <ol>
89
+ <li>
90
+ <p><strong>初始化配置 (Load Options)</strong>:
91
+ 在 <code>five.load</code> 时,通过 <code>model[&quot;3d-tiles&quot;].showLayers</code> 参数指定初始显示的图层。</p>
92
+ <ul>
93
+ <li><code>true</code> (默认): 使用上述的默认优先级策略(仅加载一个最佳图层)。</li>
94
+ <li><code>string[]</code>: 仅显示名称在数组中的图层(例如 <code>['mesh', 'point_cloud']</code> 可以强制同时显示模型和点云)。</li>
95
+ </ul>
96
+ </li>
97
+ <li>
98
+ <p><strong>运行时控制 (Runtime Control)</strong>:
99
+ 加载完成后,可以直接修改 <code>viewLayer.visible</code> 属性来切换可见性。</p>
100
+ </li>
101
+ </ol>
102
+ <h2 id="configuration" class="tsd-anchor-link">Configuration<a href="#configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2>
103
+ <p>ViewLayer 的配置主要通过其 <code>parameter</code> 属性进行。</p>
104
+ <h3 id="common-configuration" class="tsd-anchor-link">Common Configuration<a href="#common-configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
105
+ <table>
106
+ <thead>
107
+ <tr>
108
+ <th style="text-align:left">Parameter</th>
109
+ <th style="text-align:left">Type</th>
110
+ <th style="text-align:left">Description</th>
111
+ </tr>
112
+ </thead>
113
+ <tbody>
114
+ <tr>
115
+ <td style="text-align:left"><code>visible</code></td>
116
+ <td style="text-align:left"><code>boolean</code></td>
117
+ <td style="text-align:left">控制图层的可见性 (也可直接修改 <code>viewLayer.visible</code>)。</td>
118
+ </tr>
119
+ <tr>
120
+ <td style="text-align:left"><code>opacity</code></td>
121
+ <td style="text-align:left"><code>number</code></td>
122
+ <td style="text-align:left">图层透明度 (0.0 - 1.0)。</td>
123
+ </tr>
124
+ <tr>
125
+ <td style="text-align:left"><code>pointSize</code></td>
126
+ <td style="text-align:left"><code>number</code></td>
127
+ <td style="text-align:left">(仅点云) 点的大小。</td>
128
+ </tr>
129
+ </tbody>
130
+ </table>
131
+ <blockquote>
132
+ <p>更多配置项请参考 <a href="features_parameter.html">Parameter</a> 和 <a href="features_3dtile.html">3DTile Params</a>。</p>
133
+ </blockquote>
134
+ <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>
135
+ <h3 id="1-访问-viewlayer" class="tsd-anchor-link">1. 访问 ViewLayer<a href="#1-访问-viewlayer" 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>
136
+ <pre><code class="typescript"><span class="hl-8">// 获取当前模型</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">model</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">model</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 遍历所有图层</span><br/><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-6">viewLayers</span><span class="hl-1">.</span><span class="hl-5">forEach</span><span class="hl-1">(</span><span class="hl-6">layer</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">`Layer Name: </span><span class="hl-3">${</span><span class="hl-6">layer</span><span class="hl-12">.</span><span class="hl-6">name</span><span class="hl-3">}</span><span class="hl-9">, Type: </span><span class="hl-3">${</span><span class="hl-6">layer</span><span class="hl-12">.</span><span class="hl-6">type</span><span class="hl-3">}</span><span class="hl-9">`</span><span class="hl-1">);</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-8">// 查找特定的图层 (例如点云层)</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">pointCloudLayer</span><span class="hl-1"> = </span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-6">viewLayers</span><span class="hl-1">.</span><span class="hl-5">find</span><span class="hl-1">(</span><span class="hl-6">layer</span><span class="hl-1"> </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">layer</span><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>
137
+ </code><button type="button">Copy</button></pre>
138
+
139
+ <h3 id="2-独立控制图层可见性" class="tsd-anchor-link">2. 独立控制图层可见性<a href="#2-独立控制图层可见性" 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>
140
+ <pre><code class="typescript"><span class="hl-8">// 方式 A: 运行时控制</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">meshLayer</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-6">viewLayers</span><span class="hl-1">.</span><span class="hl-5">find</span><span class="hl-1">(</span><span class="hl-6">layer</span><span class="hl-1"> </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">layer</span><span class="hl-1">.</span><span class="hl-6">type</span><span class="hl-1"> === </span><span class="hl-9">&#39;mesh&#39;</span><span class="hl-1">);</span><br/><br/><span class="hl-10">if</span><span class="hl-1"> (</span><span class="hl-6">meshLayer</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">meshLayer</span><span class="hl-1">.</span><span class="hl-6">visible</span><span class="hl-1"> = </span><span class="hl-3">false</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-8">// 或者通过 parameter 设置</span><br/><span class="hl-1"> </span><span class="hl-8">// meshLayer.parameter.set(&#39;visible&#39;, false);</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-8">// 方式 B: 加载时控制 (初始化时仅显示 mesh)</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">work</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-6">model:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-9">&quot;3d-tiles&quot;</span><span class="hl-6">:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">showLayers:</span><span class="hl-1"> [</span><span class="hl-9">&#39;mesh&#39;</span><span class="hl-1">] </span><span class="hl-8">// 仅显示 mesh 层,隐藏 point_cloud 等其他层</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span>
141
+ </code><button type="button">Copy</button></pre>
142
+
143
+ <h3 id="3-修改特定图层的渲染参数" class="tsd-anchor-link">3. 修改特定图层的渲染参数<a href="#3-修改特定图层的渲染参数" 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>
144
+ <pre><code class="typescript"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">pointCloudLayer</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-6">viewLayers</span><span class="hl-1">.</span><span class="hl-5">find</span><span class="hl-1">(</span><span class="hl-6">layer</span><span class="hl-1"> </span><span class="hl-3">=&gt;</span><span class="hl-1"> </span><span class="hl-6">layer</span><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><br/><br/><span class="hl-10">if</span><span class="hl-1"> (</span><span class="hl-6">pointCloudLayer</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">pointCloudLayer</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;pointSize&#39;</span><span class="hl-1">, </span><span class="hl-11">2.0</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">pointCloudLayer</span><span class="hl-1">.</span><span class="hl-6">parameter</span><span class="hl-1">.</span><span class="hl-5">set</span><span class="hl-1">(</span><span class="hl-9">&#39;maxMemoryUsage&#39;</span><span class="hl-1">, </span><span class="hl-11">128</span><span class="hl-1">);</span><br/><span class="hl-1">}</span>
145
+ </code><button type="button">Copy</button></pre>
146
+
147
+ <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>
148
+ <ul>
149
+ <li><a href="features_model.html">Model</a>: ViewLayer 的父级容器。</li>
150
+ <li><a href="features_work.html">Work</a>: 定义 ViewLayer 数据结构的数据源。</li>
151
+ <li><a href="features_parameter.html">Parameter</a>: 控制 ViewLayer 渲染表现的配置系统。</li>
152
+ <li><a href="features_3dtile.html">3DTile</a>: ViewLayer 的底层技术实现。</li>
153
+ </ul>
154
+ <hr>
155
+ <pre><code class="yaml"><span class="hl-0">tags</span><span class="hl-1">: [</span><span class="hl-2">viewlayer</span><span class="hl-1">, </span><span class="hl-2">model</span><span class="hl-1">, </span><span class="hl-2">3dtile</span><span class="hl-1">, </span><span class="hl-2">parameter</span><span class="hl-1">, </span><span class="hl-2">layer</span><span class="hl-1">]</span>
156
+ </code><button type="button">Copy</button></pre>
157
+
158
+ </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#viewlayer-视图层"><span>View<wbr/>Layer (视图层)</span></a><ul><li><a href="#schema"><span>Schema</span></a></li><li><a href="#concepts"><span>Concepts</span></a></li><li><ul><li><a href="#1-viewlayer-vs-workmodel"><span>1. <wbr/>View<wbr/>Layer vs <wbr/>Work.<wbr/>Model</span></a></li><li><ul><li><a href="#数据来源-data-source"><span>数据来源 (<wbr/>Data <wbr/>Source)</span></a></li></ul></li><li><a href="#2-viewlayer-vs-3dtile"><span>2. <wbr/>View<wbr/>Layer vs 3<wbr/>D<wbr/>Tile</span></a></li><li><a href="#3-viewlayer-model-modelscene-parameter"><span>3. <wbr/>View<wbr/>Layer, <wbr/>Model, <wbr/>Model<wbr/>Scene &amp; <wbr/>Parameter</span></a></li><li><ul><li><a href="#层级关系-hierarchy"><span>层级关系 (<wbr/>Hierarchy)</span></a></li><li><a href="#parameter-的作用-inheritance"><span>Parameter 的作用 (<wbr/>Inheritance)</span></a></li></ul></li><li><a href="#4-visibility-control-可见性控制"><span>4. <wbr/>Visibility <wbr/>Control (可见性控制)</span></a></li></ul></li><li><a href="#configuration"><span>Configuration</span></a></li><li><ul><li><a href="#common-configuration"><span>Common <wbr/>Configuration</span></a></li></ul></li><li><a href="#examples"><span>Examples</span></a></li><li><ul><li><a href="#1-访问-viewlayer"><span>1. 访问 <wbr/>View<wbr/>Layer</span></a></li><li><a href="#2-独立控制图层可见性"><span>2. 独立控制图层可见性</span></a></li><li><a href="#3-修改特定图层的渲染参数"><span>3. 修改特定图层的渲染参数</span></a></li></ul></li><li><a href="#related"><span>Related</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">如视 Five SDK</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>