@realsee/five 6.8.0-alpha.29 → 6.8.0-alpha.30

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 (173) hide show
  1. package/AGENTS_READ_ME.md +6 -1
  2. package/AI_CONTEXT.md +6 -1
  3. package/README.md +10 -3
  4. package/ai_guides/README.md +28 -0
  5. package/ai_guides/api.md +74 -13
  6. package/ai_guides/features/3dtile.md +1 -1
  7. package/ai_guides/features/camera-animation.md +18 -1
  8. package/ai_guides/features/clipper.md +2 -2
  9. package/ai_guides/features/coordinate-system.md +20 -2
  10. package/ai_guides/features/event.md +3 -3
  11. package/ai_guides/features/five.md +17 -17
  12. package/ai_guides/features/flowing-light-2d-pass.md +1 -1
  13. package/ai_guides/features/flowing-light-3d-pass.md +1 -1
  14. package/ai_guides/features/gaussian-blur-pass.md +1 -1
  15. package/ai_guides/features/gesture.md +1 -1
  16. package/ai_guides/features/get-screen-pixels.md +2 -2
  17. package/ai_guides/features/image-options.md +2 -2
  18. package/ai_guides/features/load-external-model.md +4 -2
  19. package/ai_guides/features/load-progress.md +1 -1
  20. package/ai_guides/features/material.md +17 -11
  21. package/ai_guides/features/mode.md +1 -1
  22. package/ai_guides/features/model.md +1 -1
  23. package/ai_guides/features/move-pano-effect.md +1 -1
  24. package/ai_guides/features/multi-work.md +1 -1
  25. package/ai_guides/features/pano-filter.md +2 -1
  26. package/ai_guides/features/pano-tile.md +1 -1
  27. package/ai_guides/features/pano-uv.md +1 -1
  28. package/ai_guides/features/parameter.md +1 -1
  29. package/ai_guides/features/plugin.md +1 -1
  30. package/ai_guides/features/postprocessing.md +1 -1
  31. package/ai_guides/features/raycast.md +5 -2
  32. package/ai_guides/features/request-proxy.md +1 -1
  33. package/ai_guides/features/screen-project.md +2 -1
  34. package/ai_guides/features/state.md +21 -1
  35. package/ai_guides/features/view-layer.md +1 -1
  36. package/ai_guides/features/work.md +1 -1
  37. package/ai_guides/glossary.md +2 -2
  38. package/ai_guides/template.md +11 -0
  39. package/docs/00_FOR_AI_AGENTS.md +3 -2
  40. package/docs/README.md +3 -2
  41. package/docs/assets/hierarchy.js +1 -1
  42. package/docs/assets/search.js +1 -1
  43. package/docs/classes/five.AdaptiveLuminancePass.html +1 -1
  44. package/docs/classes/five.EyeDomeLightingPass.html +1 -1
  45. package/docs/classes/five.FivePass.html +1 -1
  46. package/docs/classes/five.Model.html +1 -1
  47. package/docs/classes/five.ModelScene.html +1 -1
  48. package/docs/classes/five.Parameter.html +1 -1
  49. package/docs/classes/five.Tile3D.html +1 -1
  50. package/docs/classes/five.Tileset.html +3 -2
  51. package/docs/classes/five.WorkResolvedObserver.html +1 -1
  52. package/docs/classes/gltf-loader.DDSLoader.html +1 -1
  53. package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
  54. package/docs/classes/gltf-loader.GLTFObject.html +1 -1
  55. package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
  56. package/docs/classes/line.LineGeometry.html +1 -1
  57. package/docs/classes/line.LineMaterial.html +1 -1
  58. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  59. package/docs/classes/line.THREE_Line2.html +1 -1
  60. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  61. package/docs/classes/plugins.CSS3DObject.html +1 -1
  62. package/docs/classes/plugins.CSS3DSprite.html +1 -1
  63. package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
  64. package/docs/classes/vfx.Airflow.html +1 -1
  65. package/docs/classes/vfx.Flame.html +1 -1
  66. package/docs/classes/vfx.Particle.html +1 -1
  67. package/docs/classes/vfx.ParticleGPU.html +1 -1
  68. package/docs/classes/vfx.SpotLight.html +1 -1
  69. package/docs/documents/README.html +121 -1
  70. package/docs/documents/api.html +101 -23
  71. package/docs/documents/features_3dtile.html +1 -1
  72. package/docs/documents/features_camera-animation.html +18 -2
  73. package/docs/documents/features_clipper.html +2 -2
  74. package/docs/documents/features_coordinate-system.html +52 -3
  75. package/docs/documents/features_event.html +3 -3
  76. package/docs/documents/features_five.html +17 -17
  77. package/docs/documents/features_flowing-light-2d-pass.html +1 -1
  78. package/docs/documents/features_flowing-light-3d-pass.html +1 -1
  79. package/docs/documents/features_gaussian-blur-pass.html +1 -1
  80. package/docs/documents/features_gesture.html +1 -1
  81. package/docs/documents/features_get-screen-pixels.html +2 -2
  82. package/docs/documents/features_image-options.html +2 -2
  83. package/docs/documents/features_load-external-model.html +4 -2
  84. package/docs/documents/features_load-progress.html +1 -1
  85. package/docs/documents/features_material.html +3 -3
  86. package/docs/documents/features_mode.html +1 -1
  87. package/docs/documents/features_model.html +1 -1
  88. package/docs/documents/features_move-pano-effect.html +1 -1
  89. package/docs/documents/features_multi-work.html +1 -1
  90. package/docs/documents/features_pano-filter.html +2 -1
  91. package/docs/documents/features_pano-tile.html +1 -1
  92. package/docs/documents/features_pano-uv.html +1 -1
  93. package/docs/documents/features_parameter.html +1 -1
  94. package/docs/documents/features_plugin.html +1 -1
  95. package/docs/documents/features_postprocessing.html +1 -1
  96. package/docs/documents/features_raycast.html +5 -2
  97. package/docs/documents/features_request-proxy.html +1 -1
  98. package/docs/documents/features_screen-project.html +2 -1
  99. package/docs/documents/features_state.html +8 -1
  100. package/docs/documents/features_view-layer.html +1 -1
  101. package/docs/documents/features_work.html +1 -1
  102. package/docs/documents/glossary.html +3 -3
  103. package/docs/documents/template.html +9 -0
  104. package/docs/hierarchy.html +1 -1
  105. package/docs/index.html +121 -1
  106. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
  107. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  108. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  109. package/docs/interfaces/five.ParameterValue.html +1 -1
  110. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  111. package/docs/interfaces/five.ViewLayer.html +1 -1
  112. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  113. package/docs/interfaces/five.WorkImage.html +1 -1
  114. package/docs/interfaces/five.WorkObserver.html +1 -1
  115. package/docs/interfaces/five.WorkObserverProto.html +1 -1
  116. package/docs/interfaces/five.WorkTile.html +1 -1
  117. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  118. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  119. package/docs/interfaces/plugins.CSS3DPluginController.html +1 -1
  120. package/docs/interfaces/plugins.CSS3DPluginType.EventMap.html +1 -1
  121. package/docs/interfaces/plugins.CSS3DPluginType.State.html +1 -1
  122. package/docs/interfaces/plugins.DynamicPathLinePluginController.html +1 -1
  123. package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +1 -1
  124. package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +1 -1
  125. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationController.html +1 -1
  126. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.EventMap.html +1 -1
  127. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.State.html +1 -1
  128. package/docs/interfaces/plugins.ItemMaskController.html +1 -1
  129. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  130. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  131. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  132. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  133. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  134. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  135. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  136. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  137. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  138. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  139. package/docs/interfaces/plugins.TrajectoryController.html +1 -1
  140. package/docs/interfaces/react.FiveInjectionTypes.html +1 -1
  141. package/docs/types/five.ParseOptions.html +1 -1
  142. package/five/index.js +5 -5
  143. package/five/index.mjs +9 -9
  144. package/five/model/tile3d/tileset.d.ts +1 -0
  145. package/gltf-loader/index.js +3 -3
  146. package/gltf-loader/index.mjs +3 -3
  147. package/line/index.js +3 -3
  148. package/line/index.mjs +3 -3
  149. package/llms.txt +36 -1
  150. package/package.json +3 -3
  151. package/plugins/index.js +2 -2
  152. package/plugins/index.mjs +2 -2
  153. package/react/index.js +2 -2
  154. package/react/index.mjs +2 -2
  155. package/shader-lib/index.js +2 -2
  156. package/shader-lib/index.mjs +2 -2
  157. package/sticker/index.js +3 -3
  158. package/sticker/index.mjs +3 -3
  159. package/umd/five-gltf-loader.js +3 -3
  160. package/umd/five-line.js +3 -3
  161. package/umd/five-plugins.js +2 -2
  162. package/umd/five-react.js +2 -2
  163. package/umd/five-shader-lib.js +2 -2
  164. package/umd/five-sticker.js +3 -3
  165. package/umd/five-vfx.js +2 -2
  166. package/umd/five-vue.js +2 -2
  167. package/umd/five.js +5 -5
  168. package/vfx/index.js +2 -2
  169. package/vfx/index.mjs +2 -2
  170. package/vue/index.js +2 -2
  171. package/vue/index.mjs +2 -2
  172. package/work-downloader/index.js +2 -2
  173. package/work-downloader/index.mjs +2 -2
@@ -128,5 +128,5 @@ const five = new Five({
128
128
  ---
129
129
 
130
130
  ```yaml
131
- tags: [pano-tile, observer]
131
+ tags: [全景瓦片, 高清全景, 分片加载, 瓦片, 全景图, 分辨率, 按需加载, pano-tile, observer, LOD, tile]
132
132
  ```
@@ -127,5 +127,5 @@ console.log(`正前方对应 Cubemap 的 ${face} 面,UV 为`, uv);
127
127
  ---
128
128
 
129
129
  ```yaml
130
- tags: [work, observer, uv, projection, math]
130
+ tags: [全景UV, 方向转换, 全景坐标, 像素映射, 全景标注, work, observer, uv, projection, math, equirectangular, cubemap]
131
131
  ```
@@ -173,5 +173,5 @@ const finalOpacity = five.modelScene.parameter.resolveValue().opacity;
173
173
  ---
174
174
 
175
175
  ```yaml
176
- tags: [parameter, config, hierarchy, api]
176
+ tags: [配置, 参数, 继承, 覆盖, 全局配置, 局部配置, parameter, config, hierarchy, api, set, reset, modelScene]
177
177
  ```
@@ -206,5 +206,5 @@ export type { MyPluginType, Controller as MyPluginController }
206
206
  ---
207
207
 
208
208
  ```yaml
209
- tags: [plugin, baseplugin, development, guide]
209
+ tags: [插件, 插件开发, 扩展, 自定义功能, 状态管理, plugin, baseplugin, development, guide, extension, lifecycle]
210
210
  ```
@@ -255,5 +255,5 @@ class FogPass extends FivePass {
255
255
  ---
256
256
 
257
257
  ```yaml
258
- tags: [postprocessing, shader, effect, adaptive-luminance, edl]
258
+ tags: [后处理, 特效, 自定义shader, 滤镜, 描边, 景深, 色彩校正, 渲染管线, postprocessing, shader, effect, adaptive-luminance, edl, effect-composer, addPass]
259
259
  ```
@@ -166,10 +166,13 @@ const intersects = five.model.intersectRaycaster(raycaster);
166
166
 
167
167
  ## Related
168
168
 
169
- * [parameter.md](./parameter.md): 了解模型参数配置。
169
+ * [Parameter](./parameter.md): 了解模型参数配置。
170
+ * [Screen Project](./screen-project.md): 屏幕坐标与空间坐标转换(标签、拾取的前置步骤)。
171
+ * [Event](./event.md): 手势事件系统,获取点击坐标的来源。
172
+ * [Coordinate System](./coordinate-system.md): 坐标系定义,理解 NDC 与世界坐标。
170
173
 
171
174
  ---
172
175
 
173
176
  ```yaml
174
- tags: [raycast, bvh, interaction, performance]
177
+ tags: [点击, 拾取, 碰撞检测, 物体选择, raycast, bvh, interaction, performance, picking, hit-test, click, floor-detection]
175
178
  ```
@@ -108,5 +108,5 @@ const five = new Five({
108
108
  ---
109
109
 
110
110
  ```yaml
111
- tags: [configuration, network, proxy, authentication]
111
+ tags: [请求代理, 鉴权, 域名替换, 私有化, 请求拦截, configuration, network, proxy, authentication, CDN, token, url-rewrite, cors]
112
112
  ```
@@ -157,9 +157,10 @@ container.addEventListener("click", (event) => {
157
157
  * [Raycast](./raycast.md): 详细的射线检测文档。
158
158
  * [Five](./five.md): Five 核心类说明。
159
159
  * [State](./state.md): 了解相机位姿 (Pose)。
160
+ * [Coordinate System](./coordinate-system.md): 坐标系定义,理解世界坐标与屏幕坐标的关系。
160
161
 
161
162
  ---
162
163
 
163
164
  ```yaml
164
- tags: [coordinate, screen, project, label, ui]
165
+ tags: [标签, 坐标转换, 信息面板, coordinate, screen, project, label, ui, tag, HUD, 3D转2D, overlay, tooltip]
165
166
  ```
@@ -89,13 +89,33 @@ five.setState({
89
89
  1. **单位混淆**: `longitude` 和 `latitude` 使用**弧度**,而 `fov` 使用**角度**(度)。
90
90
  2. **Offset 类型**: `offset` 必须是 `THREE.Vector3` 实例。如果在 React 等框架中使用纯对象(Plain Object),Five 内部会自动转换,但在 TypeScript 中需注意类型匹配。
91
91
  3. **异步更新**: `setState` 触发的相机运动是异步动画过程。如果需要立即无动画跳转,可传递第二个参数 `immediately: true`。
92
+ 4. **JSON 序列化**: `State` 中的 `offset` 是 `THREE.Vector3` 实例,不能直接 `JSON.stringify`。保存时需手动提取 `{ x, y, z }`,恢复时需重新构造 `new THREE.Vector3(x, y, z)`。
93
+
94
+ ```typescript
95
+ // 保存
96
+ const snapshot = {
97
+ ...five.state,
98
+ offset: { x: five.state.offset.x, y: five.state.offset.y, z: five.state.offset.z }
99
+ };
100
+ localStorage.setItem('fiveState', JSON.stringify(snapshot));
101
+
102
+ // 恢复
103
+ const saved = JSON.parse(localStorage.getItem('fiveState')!);
104
+ five.setState({
105
+ ...saved,
106
+ offset: new THREE.Vector3(saved.offset.x, saved.offset.y, saved.offset.z)
107
+ }, true);
108
+ ```
92
109
 
93
110
  ## Related
94
111
 
95
112
  * [Mode - 模式](./mode.md): 详细了解各种 Mode 的区别。
113
+ * [Camera Animation](./camera-animation.md): 基于 State 的相机动画控制。
114
+ * [Five](./five.md): Five 核心类,`setState` / `getCurrentState` 的宿主。
115
+ * [Coordinate System](./coordinate-system.md): 坐标系定义。
96
116
 
97
117
  ---
98
118
 
99
119
  ```yaml
100
- tags: [camera, state, pose, interaction]
120
+ tags: [状态保存, 状态恢复, 场景还原, 快照, camera, state, pose, interaction, save, restore, snapshot]
101
121
  ```
@@ -183,5 +183,5 @@ if (pointCloudLayer) {
183
183
  ---
184
184
 
185
185
  ```yaml
186
- tags: [viewlayer, model, 3dtile, parameter, layer]
186
+ tags: [图层, 视图层, 可见性, 显隐控制, 图层切换, 分层渲染, viewlayer, model, 3dtile, parameter, layer, mesh, point-cloud, gaussian-splatting]
187
187
  ```
@@ -299,5 +299,5 @@ five.load(work3, "inherit", { mode: "replace" });
299
299
  ---
300
300
 
301
301
  ```yaml
302
- tags: [work, core, entity, observer]
302
+ tags: [VR数据, 数据加载, 点位, 全景点, 数据结构, 多work, work, core, entity, observer, parseWork, workCode, JSON, load]
303
303
  ```
@@ -52,7 +52,7 @@ Five 定义的五种浏览状态:
52
52
  ### Pano Tile (全景瓦片)
53
53
  为了在移动端快速加载高分辨率全景图(如 8K/16K),将全景图切分为多个小块(瓦片)。Five 会根据当前视角按需加载可见区域的瓦片。
54
54
 
55
- ### Quasi / Mesh
55
+ ### Mesh (三维网格)
56
56
  **三维模型**。通过激光扫描或视觉算法重建的空间几何结构。在 Five 中,全景图贴在几何模型上,从而实现“从全景中看出立体感”的效果。
57
57
 
58
58
  ### G-Buffer / Geometry Buffer
@@ -89,5 +89,5 @@ Five 封装的手势事件:
89
89
 
90
90
  ---
91
91
  ```yaml
92
- tags: [glossary, terminology, definitions]
92
+ tags: [术语, 概念, glossary, terminology, definitions, observer, pose, mode, work, panoindex, fov, viewlayer, gaussian-splatting, 3dtile]
93
93
  ```
@@ -8,6 +8,12 @@
8
8
 
9
9
  ## Schema
10
10
 
11
+ <!--
12
+ ⚠️ AI 注意:以下 Definition 链接使用了反引号包裹(代码块格式),这是模板的占位符写法,
13
+ 目的是避免构建时因路径不存在而报错。
14
+ 在编写正式文档时,必须将其还原为标准 Markdown 链接(去掉反引号),并确保路径指向真实存在的 .ts 文件。
15
+ -->
16
+
11
17
  > **Definition**: `[InterfaceName](../../five/path/to/source.d.ts)` 或多个 `[Main](../../lib/...)`, `[Options](../../lib/...)`
12
18
 
13
19
  (这里放置 Interface 定义、TS 类型或参数表。务必包含 Definition 源码链接。)
@@ -61,6 +67,11 @@
61
67
 
62
68
  ## Related
63
69
 
70
+ <!--
71
+ ⚠️ AI 注意:以下链接同样使用了反引号包裹(占位符写法)。
72
+ 在编写正式文档时,必须还原为可点击的标准 Markdown 链接,并确保路径指向真实存在的文件。
73
+ -->
74
+
64
75
  * `[RelatedConcept](./related-concept.md)`: 简述关联关系。
65
76
 
66
77
  ---
@@ -7,5 +7,6 @@
7
7
  >
8
8
  > Instead, refer to the **ai_guides** directory in the package root. It contains high-quality, structured Markdown documentation specifically optimized for comprehension and retrieval.
9
9
  >
10
- > * **Go to Guides**: [../ai_guides/README.md](../ai_guides/README.md)
11
- > * **Go to API Index**: [../ai_guides/api.md](../ai_guides/api.md)
10
+ > * **Go to llms.txt**: [llms.txt](../llms.txt)
11
+ > * **Go to Guides**: [ai_guides/README.md](../ai_guides/README.md)
12
+ > * **Go to API Index**: [ai_guides/api.md](../ai_guides/api.md)
package/docs/README.md CHANGED
@@ -7,5 +7,6 @@
7
7
  >
8
8
  > Instead, refer to the **ai_guides** directory in the package root. It contains high-quality, structured Markdown documentation specifically optimized for comprehension and retrieval.
9
9
  >
10
- > * **Go to Guides**: [../ai_guides/README.md](../ai_guides/README.md)
11
- > * **Go to API Index**: [../ai_guides/api.md](../ai_guides/api.md)
10
+ > * **Go to llms.txt**: [llms.txt](../llms.txt)
11
+ > * **Go to Guides**: [ai_guides/README.md](../ai_guides/README.md)
12
+ > * **Go to API Index**: [ai_guides/api.md](../ai_guides/api.md)
@@ -1 +1 @@
1
- window.hierarchyData = "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"
1
+ window.hierarchyData = "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"