@realsee/five 6.8.0-alpha.7 → 6.8.0-alpha.8

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 (180) hide show
  1. package/ai_guides/README.md +2 -1
  2. package/ai_guides/api.md +10 -0
  3. package/ai_guides/features/load-external-model.md +4 -1
  4. package/ai_guides/features/pano-uv.md +131 -0
  5. package/ai_guides/release_notes/6.8.md +24 -15
  6. package/docs/assets/hierarchy.js +1 -1
  7. package/docs/assets/navigation.js +1 -1
  8. package/docs/assets/search.js +1 -1
  9. package/docs/classes/five.AdaptiveLuminancePass.html +1 -1
  10. package/docs/classes/five.BoundingMesh.html +1 -1
  11. package/docs/classes/five.Camera.html +1 -1
  12. package/docs/classes/five.EyeDomeLightingPass.html +1 -1
  13. package/docs/classes/five.Five.html +1 -1
  14. package/docs/classes/five.FivePass.html +1 -1
  15. package/docs/classes/five.InternalWebGLRenderer.html +1 -1
  16. package/docs/classes/five.Model.html +1 -1
  17. package/docs/classes/five.ModelScene.html +1 -1
  18. package/docs/classes/five.NetworkSubscribe.html +1 -1
  19. package/docs/classes/five.PBMContainer.html +1 -1
  20. package/docs/classes/five.PBMGSObject.html +1 -1
  21. package/docs/classes/five.PBMGroup.html +1 -1
  22. package/docs/classes/five.PBMMesh.html +1 -1
  23. package/docs/classes/five.PBMMeshMaterial.html +15 -6
  24. package/docs/classes/five.PBMPointCloud.html +1 -1
  25. package/docs/classes/five.PBMPointCloudMaterial.html +1 -1
  26. package/docs/classes/five.PBMSkinnedMesh.html +1 -1
  27. package/docs/classes/five.PanoCircleMesh.html +1 -1
  28. package/docs/classes/five.PanoCircleMeshCustom.html +1 -1
  29. package/docs/classes/five.PanoCircleMeshSolid.html +1 -1
  30. package/docs/classes/five.Parameter.html +1 -1
  31. package/docs/classes/five.Scene.html +1 -1
  32. package/docs/classes/five.Subscribe.html +1 -1
  33. package/docs/classes/five.Tile3D.html +1 -1
  34. package/docs/classes/five.TileNode.html +1 -1
  35. package/docs/classes/five.TrajectoryNode.html +1 -1
  36. package/docs/classes/five.WorkResolvedObserver.html +1 -1
  37. package/docs/classes/gltf-loader.DDSLoader.html +1 -1
  38. package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
  39. package/docs/classes/gltf-loader.GLTFLoader.html +1 -1
  40. package/docs/classes/gltf-loader.GLTFObject.html +1 -1
  41. package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
  42. package/docs/classes/line.Line.html +1 -1
  43. package/docs/classes/line.LineGeometry.html +1 -1
  44. package/docs/classes/line.LineMaterial.html +1 -1
  45. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  46. package/docs/classes/line.THREE_Line2.html +1 -1
  47. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  48. package/docs/classes/plugins.BasePlugin.Controller.html +1 -1
  49. package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
  50. package/docs/classes/sticker.Sticker.html +1 -1
  51. package/docs/classes/vfx.Airflow.html +1 -1
  52. package/docs/classes/vfx.Flame.html +1 -1
  53. package/docs/classes/vfx.Particle.html +1 -1
  54. package/docs/classes/vfx.ParticleGPU.html +1 -1
  55. package/docs/classes/vfx.SpotLight.html +1 -1
  56. package/docs/documents/README.html +2 -1
  57. package/docs/documents/api.html +1 -1
  58. package/docs/documents/{features_coordnate-system.html → features_coordinate-system.html} +1 -1
  59. package/docs/documents/features_load-external-model.html +4 -1
  60. package/docs/documents/features_pano-uv.html +82 -0
  61. package/docs/documents/release_notes_6.8.html +29 -18
  62. package/docs/functions/five.loadGltf.html +1 -1
  63. package/docs/hierarchy.html +1 -1
  64. package/docs/index.html +2 -1
  65. package/docs/interfaces/five.AddableObject.html +1 -1
  66. package/docs/interfaces/five.AjaxOptions.html +1 -1
  67. package/docs/interfaces/five.BaseEvent.html +1 -1
  68. package/docs/interfaces/five.EventCallback.html +1 -1
  69. package/docs/interfaces/five.GestureEvent.html +1 -1
  70. package/docs/interfaces/five.ImageOptions.html +1 -1
  71. package/docs/interfaces/five.IntersectEvent.html +1 -1
  72. package/docs/interfaces/five.IntersectMesh.html +1 -1
  73. package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
  74. package/docs/interfaces/five.Intersection.html +1 -1
  75. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
  76. package/docs/interfaces/five.ModeChangeEvent.html +1 -1
  77. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  78. package/docs/interfaces/five.ModelEvent.html +1 -1
  79. package/docs/interfaces/five.ModelSceneEvent.html +1 -1
  80. package/docs/interfaces/five.ModelTileEvent.html +1 -1
  81. package/docs/interfaces/five.MovePanoOptions.html +1 -1
  82. package/docs/interfaces/five.NetworkAbortError.html +1 -1
  83. package/docs/interfaces/five.NetworkFirbiddenError.html +1 -1
  84. package/docs/interfaces/five.NetworkOptions.html +1 -1
  85. package/docs/interfaces/five.NetworkProxyError.html +1 -1
  86. package/docs/interfaces/five.NetworkResourceEvent.html +1 -1
  87. package/docs/interfaces/five.NetworkResponseError.html +1 -1
  88. package/docs/interfaces/five.NetworkTimeoutError.html +1 -1
  89. package/docs/interfaces/five.ObjectEvent.html +1 -1
  90. package/docs/interfaces/five.PBMMaterial.html +1 -1
  91. package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
  92. package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
  93. package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
  94. package/docs/interfaces/five.PanoEvent.html +1 -1
  95. package/docs/interfaces/five.PanoTextureEvent.html +1 -1
  96. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  97. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  98. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  99. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  100. package/docs/interfaces/five.ParameterValue.html +1 -1
  101. package/docs/interfaces/five.Pose.html +1 -1
  102. package/docs/interfaces/five.RenderEvent.html +1 -1
  103. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  104. package/docs/interfaces/five.State.html +1 -1
  105. package/docs/interfaces/five.StateEvent.html +1 -1
  106. package/docs/interfaces/five.TextureOptions.html +1 -1
  107. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  108. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  109. package/docs/interfaces/five.ViewLayer.html +1 -1
  110. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  111. package/docs/interfaces/five.WorkImage.html +1 -1
  112. package/docs/interfaces/five.WorkObserver.html +1 -1
  113. package/docs/interfaces/five.WorkTile.html +1 -1
  114. package/docs/interfaces/five.WorksEvent.html +1 -1
  115. package/docs/interfaces/five.XRControllerEvent.html +1 -1
  116. package/docs/interfaces/five.XRGestureEvent.html +1 -1
  117. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  118. package/docs/interfaces/five.XRSessionEvent.html +1 -1
  119. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  120. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  121. package/docs/interfaces/plugins.BasePlugin.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.ItemMaskController.html +1 -1
  126. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  127. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  128. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  129. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  130. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  131. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  132. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  133. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  134. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  135. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  136. package/docs/interfaces/plugins.TrajectoryController.html +1 -1
  137. package/docs/interfaces/react.FiveInjectionTypes.html +1 -1
  138. package/docs/modules.html +1 -1
  139. package/docs/types/five.ParseOptions.html +1 -1
  140. package/docs/types/plugins.BasePlugin.EventMap.html +1 -1
  141. package/five/index.js +44 -44
  142. package/five/index.mjs +2543 -2401
  143. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_clearcoat.d.ts +6 -0
  144. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_emissive_strength.d.ts +6 -0
  145. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_sheen.d.ts +6 -0
  146. package/five/model/loaders/glTF-helpers/extensions/KHR_materials_transmission.d.ts +6 -0
  147. package/five/model/loaders/glTF-helpers/glTF.d.ts +20 -1
  148. package/five/model/loaders/glTF-helpers/index.d.ts +8 -0
  149. package/five/model/loaders/gltf.d.ts +1 -0
  150. package/five/model/materials/pbmMeshMaterial.d.ts +9 -0
  151. package/gltf-loader/index.js +3 -3
  152. package/gltf-loader/index.mjs +3 -3
  153. package/line/index.js +3 -3
  154. package/line/index.mjs +3 -3
  155. package/llms.txt +2 -1
  156. package/package.json +1 -1
  157. package/plugins/index.js +2 -2
  158. package/plugins/index.mjs +2 -2
  159. package/react/index.js +2 -2
  160. package/react/index.mjs +2 -2
  161. package/shader-lib/index.js +2 -2
  162. package/shader-lib/index.mjs +2 -2
  163. package/sticker/index.js +3 -3
  164. package/sticker/index.mjs +3 -3
  165. package/umd/five-gltf-loader.js +3 -3
  166. package/umd/five-line.js +3 -3
  167. package/umd/five-plugins.js +2 -2
  168. package/umd/five-react.js +2 -2
  169. package/umd/five-shader-lib.js +2 -2
  170. package/umd/five-sticker.js +3 -3
  171. package/umd/five-vfx.js +2 -2
  172. package/umd/five-vue.js +2 -2
  173. package/umd/five.js +44 -44
  174. package/vfx/index.js +2 -2
  175. package/vfx/index.mjs +2 -2
  176. package/vue/index.js +2 -2
  177. package/vue/index.mjs +2 -2
  178. package/work-downloader/index.js +2 -2
  179. package/work-downloader/index.mjs +2 -2
  180. /package/ai_guides/features/{coordnate-system.md → coordinate-system.md} +0 -0
@@ -54,9 +54,10 @@
54
54
 
55
55
  * [Five](./features/five.md): 核心类 `Five`,管理渲染循环与全局状态。
56
56
  * [Work](./features/work.md): 数据载体,描述三维空间的数据结构 (VR 看房数据)。
57
+ * [Panorama UV](./features/pano-uv.md): 全景图 UV 与空间方向转换工具。
57
58
  * [Mode](./features/mode.md): 五种核心浏览模式 (Panorama, Floorplan, Topview, Model, Map)。
58
59
  * [State](./features/state.md): 状态管理 (Pose, Mode, PanoIndex),用于复原场景。
59
- * [Coordinate System](./features/coordnate-system.md): 坐标系定义 (右手坐标系, Y轴向上)。
60
+ * [Coordinate System](./features/coordinate-system.md): 坐标系定义 (右手坐标系, Y轴向上)。
60
61
 
61
62
  ### 3. Data & Resource (数据与资源)
62
63
  数据加载与资源管理配置。
package/ai_guides/api.md CHANGED
@@ -197,6 +197,16 @@ interface WorkObserver {
197
197
  accessibleNodes: number[]; // Indices of reachable points
198
198
  images: WorkImage; // Panorama image URLs
199
199
  active: boolean; // Whether the point is enabled
200
+
201
+ // Coordinate Methods
202
+ getWorldPosition(): THREE.Vector3;
203
+ getWorldStandingPosition(): THREE.Vector3;
204
+
205
+ // UV Conversion Methods
206
+ vectorToEquirectangularUv(vector: THREE.Vector3, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector2;
207
+ equirectangularUvToVector(uv: THREE.Vector2, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector3;
208
+ vectorToCubemapUv(vector: THREE.Vector3, uvOrigin?: 'top-left' | 'bottom-left'): [CubeFace, THREE.Vector2];
209
+ cubemapUvToVector(cubeFace: CubeFace, uv: THREE.Vector2, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector3;
200
210
  }
201
211
  ```
202
212
 
@@ -71,10 +71,13 @@ Five 使用 **Z-up** (Z 轴向上) 的右手坐标系。
71
71
  * `KHR_node_visibility`
72
72
  * `KHR_animation_pointer`
73
73
  * `EXT_meshopt_compression`
74
+ * `KHR_materials_clearcoat`
75
+ * `KHR_materials_sheen`
76
+ * `KHR_materials_transmission`
77
+ * `KHR_materials_emissive_strength`
74
78
  * `EXT_texture_webp`
75
79
  * `CESIUM_RTC`
76
80
  * `REALSEE_materials_lightmap`
77
- * `PBM_mesh`
78
81
  * `KHR_gaussian_splatting_compression_spz`
79
82
 
80
83
  | 参数 | 类型 | 默认值 | 说明 |
@@ -0,0 +1,131 @@
1
+ # 全景图 UV 与方向转换 (Panorama UV Conversion)
2
+
3
+ - **Summary**: 提供了一组工具方法,用于在**全景图 UV 坐标** (Equirectangular UV / Cubemap UV) 与**三维空间方向向量** (Vector3) 之间进行转换。
4
+ - **Schema**: 依赖 `WorkObserver` 实例,提供四个核心转换方法。
5
+ - **Concepts**: Equirectangular Projection, Cubemap Projection, UV Origin, Coordinate Systems.
6
+ - **Configuration**: `uvOrigin` (UV 原点设置).
7
+ - **Examples**: 向量转全景 UV、UV 转向量、Cubemap 转换。
8
+
9
+ ## Schema
10
+
11
+ > **Definition**: [WorkObserver](../../five/work/work.d.ts)
12
+
13
+ 这些方法挂载在 `WorkObserver` 实例上,依赖当前观察点 (Observer) 的位姿信息 (Position & Quaternion) 以及 `work.transform` 进行计算。
14
+
15
+ ```typescript
16
+ interface WorkObserver {
17
+ /**
18
+ * 将方向向量转化为全景图 uv
19
+ * @param vector - 全局方向向量 (World Space)
20
+ * @param uvOrigin - UV 原点位置,默认为 'top-left'
21
+ */
22
+ vectorToEquirectangularUv(vector: THREE.Vector3, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector2;
23
+
24
+ /**
25
+ * 将全景图 uv 转化为方向向量
26
+ * @param uv - 全景图 UV 坐标 [0, 1]
27
+ * @param uvOrigin - UV 原点位置,默认为 'top-left'
28
+ */
29
+ equirectangularUvToVector(uv: THREE.Vector2, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector3;
30
+
31
+ /**
32
+ * 将方向向量转化为六视图 uv
33
+ * @param vector - 全局方向向量 (World Space)
34
+ * @param uvOrigin - UV 原点位置,默认为 'top-left'
35
+ */
36
+ vectorToCubemapUv(vector: THREE.Vector3, uvOrigin?: 'top-left' | 'bottom-left'): [cubeFace: CubeFace, cubemapUv: THREE.Vector2];
37
+
38
+ /**
39
+ * 将六视图 uv 转化为方向向量
40
+ * @param cubeFace - 立方体面 ('up' | 'down' | 'left' | 'right' | 'front' | 'back')
41
+ * @param uv - 该面上的 UV 坐标 [0, 1]
42
+ * @param uvOrigin - UV 原点位置,默认为 'top-left'
43
+ */
44
+ cubemapUvToVector(cubeFace: CubeFace, uv: THREE.Vector2, uvOrigin?: 'top-left' | 'bottom-left'): THREE.Vector3;
45
+ }
46
+
47
+ type CubeFace = 'up' | 'down' | 'left' | 'right' | 'front' | 'back';
48
+ ```
49
+
50
+ ## Concepts
51
+
52
+ ### 1. 坐标系转换 (Coordinate Transformation)
53
+ 转换过程会自动处理以下坐标空间的变换:
54
+ 1. **World Space (世界坐标系)**: `vector` 参数所处的坐标系。
55
+ 2. **Work Space (Work 坐标系)**: 考虑 `work.transform` 带来的整体旋转。
56
+ 3. **Observer Space (观察者坐标系)**: 考虑 `observer.quaternion` 带来的观察点旋转。
57
+ 4. **Panorama Space (全景图空间)**: 最终映射到 2D 图片上的 UV 坐标。
58
+
59
+ ### 2. 投影方式 (Projection Types)
60
+ * **Equirectangular (等距柱状投影)**: 将球体展开为 2:1 的矩形图片。常用于全景图预览。
61
+ * **Cubemap (立方体贴图)**: 将球体投影到立方体的六个面上。常用于高清全景浏览。
62
+
63
+ ### 3. UV 原点 (UV Origin)
64
+ * **top-left (默认)**: 原点 `(0, 0)` 在图片**左上角**。U 轴向右,V 轴向下。符合大多数 Web 图片处理习惯 (Canvas, DOM)。
65
+ * **bottom-left**: 原点 `(0, 0)` 在图片**左下角**。U 轴向右,V 轴向上。符合 WebGL / OpenGL 纹理坐标习惯。
66
+
67
+ ## Configuration
68
+
69
+ 所有方法均包含可选参数 `uvOrigin`。
70
+
71
+ ### Common Configuration
72
+
73
+ | Parameter | Type | Default | Description |
74
+ | :--- | :--- | :--- | :--- |
75
+ | `uvOrigin` | `'top-left' \| 'bottom-left'` | `'top-left'` | 指定 UV 坐标系的原点位置。 |
76
+
77
+ ## Examples
78
+
79
+ ### 1. 点击全景图获取空间方向 (Click to Vector)
80
+ 假设你有一个全景图的点击事件,获取到了点击位置的 UV:
81
+
82
+ ```typescript
83
+ const observer = five.work.observers[0];
84
+ // 假设这是用户点击全景图后归一化得到的 UV (0~1)
85
+ const clickUv = new THREE.Vector2(0.5, 0.5);
86
+
87
+ // 转换为世界空间的方向向量
88
+ const direction = observer.equirectangularUvToVector(clickUv);
89
+
90
+ console.log('点击方向:', direction);
91
+ ```
92
+
93
+ ### 2. 将空间点映射到全景图上 (World Point to UV)
94
+ 假设场景中有一个 3D 物体,你想知道它在当前全景图上的位置(例如打标签):
95
+
96
+ ```typescript
97
+ const observer = five.work.observers[0];
98
+ const objectPosition = new THREE.Vector3(10, 2, 5);
99
+
100
+ // 计算物体相对于观察点的方向向量
101
+ const direction = objectPosition.clone().sub(observer.position).normalize();
102
+
103
+ // 获取全景图 UV
104
+ const uv = observer.vectorToEquirectangularUv(direction);
105
+
106
+ console.log(`物体在全景图上的位置: u=${uv.x}, v=${uv.y}`);
107
+ ```
108
+
109
+ ### 3. 处理 Cubemap 坐标 (Cubemap Conversion)
110
+ 如果你使用的是六面体全景图资源:
111
+
112
+ ```typescript
113
+ const observer = five.work.observers[0];
114
+ const direction = new THREE.Vector3(0, 0, -1); // 正前方
115
+
116
+ // 获取对应的面和 UV
117
+ const [face, uv] = observer.vectorToCubemapUv(direction);
118
+
119
+ console.log(`正前方对应 Cubemap 的 ${face} 面,UV 为`, uv);
120
+ ```
121
+
122
+ ## Related
123
+
124
+ * [Work](./work.md): 了解 WorkObserver 的数据结构。
125
+ * [Coordinate System](./coordinate-system.md): 了解 Five 的坐标系定义。
126
+
127
+ ---
128
+
129
+ ```yaml
130
+ tags: [work, observer, uv, projection, math]
131
+ ```
@@ -52,12 +52,24 @@ const five = new Five({
52
52
  * `Intersection` 对象新增了 `tile`, `model`, `viewLayer` 字段,便于在射线检测时获取更详细的上下文信息。
53
53
  * `raycaster.hitFilter` 回调函数的参数类型定义已更新,包含 `model`, `viewLayer`, `tile` 等上下文信息。
54
54
 
55
- ## AI 友好文档 (AI Guides)
56
- > 全面重构了文档结构,使其更适合 AI 辅助编程工具 (如 Cursor, Copilot) 阅读和索引。
55
+ ## glTF 模型支持增强
56
+ > 新增了对更多 glTF 扩展的支持,提升了模型的表现力和动画能力。
57
57
 
58
- * 文档目录迁移至 `ai_guides/`,并在 `package.json` 中新增 `ai` 字段指向该目录。
59
- * 文档内容包含源码链接 (`source` 字段),直接指向对应的 `.ts` 定义文件。
60
- * 提供了更清晰的 API 定义和概念说明,例如新增了 [ViewLayer](../features/view-layer.md) 的详细文档。
58
+ ### 新增扩展支持
59
+ * **KHR_animation_pointer**: 允许动画通道指向 glTF 资产中任何对象的任何属性,而不仅仅是节点的平移、旋转和缩放。
60
+ * **KHR_node_visibility**: 允许设置节点的可见性属性。
61
+ * **KHR_materials_clearcoat** 用于在材质上添加一层透明涂层,模拟车漆、碳纤维、清漆木材等真实世界中的表面效果。
62
+ * **KHR_materials_sheen** 绒面 / 绒毛类表面效果。
63
+ * **KHR_materials_transmission** 物理透光材质扩展,用于实现光线真正穿过物体的透明 / 半透明效果。
64
+
65
+ ## Work 核心能力增强
66
+ > 为 WorkObserver 提供了更多实用的工具函数,便于进行坐标和 UV 转换。
67
+
68
+ ### UV 转换工具函数
69
+ * `vectorToEquirectangularUv`: 将方向向量转化为全景图 uv。
70
+ * `equirectangularUvToVector`: 将全景图 uv 转化为方向向量。
71
+ * `vectorToCubemapUv`: 将方向向量转化为立方体贴图 uv。
72
+ * `cubemapUvToVector`: 将立方体贴图 uv 转化为方向向量。
61
73
 
62
74
  ## 新增后处理效果 (Post-Processing Passes)
63
75
  > 新增了三个可选的内置后处理 Pass,用于增强视觉效果。
@@ -66,16 +78,13 @@ const five = new Five({
66
78
  * **[FlowingLight3DPass](../features/flowing-light-3d-pass.md)**: 3D 流光效果,基于深度缓冲区在三维模型表面绘制流光。
67
79
  * **[GaussianBlurPass](../features/gaussian-blur-pass.md)**: 高斯模糊效果,可用于实现毛玻璃等视觉特效。
68
80
 
81
+ ## AI 友好文档 (AI Guides)
82
+ > 全面重构了文档结构,使其更适合 AI 辅助编程工具 (如 Cursor, Copilot) 阅读和索引。
83
+
84
+ * 文档目录迁移至 `ai_guides/`,并在 `package.json` 中新增 `ai` 字段指向该目录。
85
+ * 文档内容包含源码链接 (`source` 字段),直接指向对应的 `.ts` 定义文件。
86
+ * 提供了更清晰的 API 定义和概念说明,例如新增了 [ViewLayer](../features/view-layer.md) 的详细文档。
87
+
69
88
  ## 其他优化
70
89
  * **点云渲染**: 计算点位透明度时,现在会排除不活跃的点,提升渲染正确性。
71
90
  * **TypeScript 支持**: 优化了 `.d.ts` 打包方式,声明文件现在与源码文件一一对应,提升了 IDE 的跳转体验。
72
-
73
- ## glTF 支持**: 新增 `KHR_animation_pointer` 和 `KHR_node_visibility` 扩展支持
74
- * `KHR_animation_pointer` 扩展 允许动画通道指向 glTF 资产中任何对象的任何属性,而不仅仅是节点的平移、旋转和缩放。
75
- * `KHR_node_visibility` 扩展 允许设置节点的可见性属性。
76
-
77
- ## work 提供 uv 转化函数。
78
- * `vectorToEquirectangularUv` 方法将方向向量转化为全景图 uv。
79
- * `equirectangularUvToVector` 方法将全景图 uv 转化为方向向量。
80
- * `vectorToCubemapUv` 方法将方向向量转化为立方体贴图 uv。
81
- * `cubemapUvToVector` 方法将立方体贴图 uv 转化为方向向量。
@@ -1 +1 @@
1
- window.hierarchyData = "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"
1
+ window.hierarchyData = "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"
@@ -1 +1 @@
1
- window.navigationData = "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"
1
+ window.navigationData = "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"