@chocozhang/three-model-render 1.0.2 → 1.0.4

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 (42) hide show
  1. package/README.md +149 -530
  2. package/dist/camera/index.d.ts +59 -36
  3. package/dist/camera/index.js +77 -57
  4. package/dist/camera/index.js.map +1 -1
  5. package/dist/camera/index.mjs +77 -57
  6. package/dist/camera/index.mjs.map +1 -1
  7. package/dist/core/index.d.ts +60 -27
  8. package/dist/core/index.js +124 -95
  9. package/dist/core/index.js.map +1 -1
  10. package/dist/core/index.mjs +124 -95
  11. package/dist/core/index.mjs.map +1 -1
  12. package/dist/effect/index.d.ts +47 -134
  13. package/dist/effect/index.js +109 -65
  14. package/dist/effect/index.js.map +1 -1
  15. package/dist/effect/index.mjs +109 -65
  16. package/dist/effect/index.mjs.map +1 -1
  17. package/dist/index.d.ts +397 -341
  18. package/dist/index.js +651 -472
  19. package/dist/index.js.map +1 -1
  20. package/dist/index.mjs +651 -472
  21. package/dist/index.mjs.map +1 -1
  22. package/dist/interaction/index.d.ts +85 -52
  23. package/dist/interaction/index.js +161 -133
  24. package/dist/interaction/index.js.map +1 -1
  25. package/dist/interaction/index.mjs +161 -133
  26. package/dist/interaction/index.mjs.map +1 -1
  27. package/dist/loader/index.d.ts +89 -56
  28. package/dist/loader/index.js +115 -76
  29. package/dist/loader/index.js.map +1 -1
  30. package/dist/loader/index.mjs +115 -76
  31. package/dist/loader/index.mjs.map +1 -1
  32. package/dist/setup/index.d.ts +28 -18
  33. package/dist/setup/index.js +33 -24
  34. package/dist/setup/index.js.map +1 -1
  35. package/dist/setup/index.mjs +33 -24
  36. package/dist/setup/index.mjs.map +1 -1
  37. package/dist/ui/index.d.ts +18 -7
  38. package/dist/ui/index.js +32 -22
  39. package/dist/ui/index.js.map +1 -1
  40. package/dist/ui/index.mjs +32 -22
  41. package/dist/ui/index.mjs.map +1 -1
  42. package/package.json +1 -1
@@ -1,31 +1,41 @@
1
1
  import * as THREE from 'three';
2
2
 
3
- // src/utils/followModels.ts - 优化版
4
- // 使用 WeakMap 跟踪动画,支持取消
3
+ /**
4
+ * @file followModels.ts
5
+ * @description
6
+ * Camera utility to automatically follow and focus on 3D models.
7
+ * It smoothly moves the camera to an optimal viewing position relative to the target object(s).
8
+ *
9
+ * @best-practice
10
+ * - Use `followModels` to focus on a newly selected object.
11
+ * - Call `cancelFollow` before starting a new manual camera interaction if needed.
12
+ * - Adjust `padding` to control how tight the camera framing is.
13
+ */
14
+ // Use WeakMap to track animations, allowing for cancellation
5
15
  const _animationMap = new WeakMap();
6
16
  /**
7
- * 推荐角度枚举,便于快速选取常见视角
17
+ * Recommended camera angles for quick selection of common views
8
18
  */
9
19
  const FOLLOW_ANGLES = {
10
- /** 等距斜视(默认视角)- 适合建筑、机械设备展示 */
20
+ /** Isometric view (default) - suitable for architecture, mechanical equipment */
11
21
  ISOMETRIC: { azimuth: Math.PI / 4, elevation: Math.PI / 4 },
12
- /** 正前视角 - 适合正面展示、UI 对齐 */
22
+ /** Front view - suitable for frontal display, UI alignment */
13
23
  FRONT: { azimuth: 0, elevation: 0 },
14
- /** 右侧视角 - 适合机械剖面、侧视检查 */
24
+ /** Right view - suitable for mechanical sections, side inspection */
15
25
  RIGHT: { azimuth: Math.PI / 2, elevation: 0 },
16
- /** 左侧视角 */
26
+ /** Left view */
17
27
  LEFT: { azimuth: -Math.PI / 2, elevation: 0 },
18
- /** 后视角 */
28
+ /** Back view */
19
29
  BACK: { azimuth: Math.PI, elevation: 0 },
20
- /** 顶视图 - 适合地图、平面布局展示 */
30
+ /** Top view - suitable for maps, layout display */
21
31
  TOP: { azimuth: 0, elevation: Math.PI / 2 },
22
- /** 低角度俯视 - 适合车辆、人物等近地物体 */
32
+ /** Low angle view - suitable for vehicles, characters near the ground */
23
33
  LOW_ANGLE: { azimuth: Math.PI / 4, elevation: Math.PI / 6 },
24
- /** 高角度俯视 - 适合鸟瞰、全景浏览 */
34
+ /** High angle view - suitable for bird's eye view, panoramic browsing */
25
35
  HIGH_ANGLE: { azimuth: Math.PI / 4, elevation: Math.PI / 3 }
26
36
  };
27
37
  /**
28
- * 缓动函数集合
38
+ * Collection of easing functions
29
39
  */
30
40
  const EASING_FUNCTIONS = {
31
41
  linear: (t) => t,
@@ -34,20 +44,21 @@ const EASING_FUNCTIONS = {
34
44
  easeIn: (t) => t * t * t
35
45
  };
36
46
  /**
37
- * 自动将相机移到目标的斜上角位置,并保证目标在可视范围内(平滑过渡)- 优化版
47
+ * Automatically moves the camera to a diagonal position relative to the target,
48
+ * ensuring the target is within the field of view (smooth transition).
38
49
  *
39
- * ✨ 优化内容:
40
- * - 支持多种缓动函数
41
- * - 添加进度回调
42
- * - 支持取消动画
43
- * - WeakMap 跟踪防止泄漏
44
- * - 完善错误处理
50
+ * Features:
51
+ * - Supports multiple easing functions
52
+ * - Adds progress callback
53
+ * - Supports animation cancellation
54
+ * - Uses WeakMap to track and prevent memory leaks
55
+ * - Robust error handling
45
56
  */
46
57
  function followModels(camera, targets, options = {}) {
47
58
  var _a, _b, _c, _d, _e, _f;
48
- // 取消之前的动画
59
+ // Cancel previous animation
49
60
  cancelFollow(camera);
50
- // 边界检查
61
+ // Boundary check
51
62
  const arr = [];
52
63
  if (!targets)
53
64
  return Promise.resolve();
@@ -56,15 +67,15 @@ function followModels(camera, targets, options = {}) {
56
67
  else
57
68
  arr.push(targets);
58
69
  if (arr.length === 0) {
59
- console.warn('followModels: 目标对象为空');
70
+ console.warn('followModels: Target object is empty');
60
71
  return Promise.resolve();
61
72
  }
62
73
  try {
63
74
  const box = new THREE.Box3();
64
75
  arr.forEach((o) => box.expandByObject(o));
65
- // 检查包围盒有效性
76
+ // Check bounding box validity
66
77
  if (!isFinite(box.min.x) || !isFinite(box.max.x)) {
67
- console.warn('followModels: 包围盒计算失败');
78
+ console.warn('followModels: Failed to calculate bounding box');
68
79
  return Promise.resolve();
69
80
  }
70
81
  const sphere = new THREE.Sphere();
@@ -80,7 +91,7 @@ function followModels(camera, targets, options = {}) {
80
91
  const elevation = (_e = options.elevation) !== null && _e !== void 0 ? _e : Math.PI / 4;
81
92
  const easing = (_f = options.easing) !== null && _f !== void 0 ? _f : 'easeOut';
82
93
  const onProgress = options.onProgress;
83
- // 获取缓动函数
94
+ // Get easing function
84
95
  const easingFn = EASING_FUNCTIONS[easing] || EASING_FUNCTIONS.easeOut;
85
96
  let distance = 10;
86
97
  if (camera.isPerspectiveCamera) {
@@ -100,7 +111,7 @@ function followModels(camera, targets, options = {}) {
100
111
  else {
101
112
  distance = camera.position.distanceTo(center);
102
113
  }
103
- // 根据 azimuth / elevation 计算方向
114
+ // Calculate direction based on azimuth / elevation
104
115
  const hx = Math.sin(azimuth);
105
116
  const hz = Math.cos(azimuth);
106
117
  const dir = new THREE.Vector3(hx * Math.cos(elevation), Math.sin(elevation), hz * Math.cos(elevation)).normalize();
@@ -113,7 +124,6 @@ function followModels(camera, targets, options = {}) {
113
124
  const startTime = performance.now();
114
125
  return new Promise((resolve) => {
115
126
  const step = (now) => {
116
- var _a;
117
127
  const elapsed = now - startTime;
118
128
  const t = Math.min(1, duration > 0 ? elapsed / duration : 1);
119
129
  const k = easingFn(t);
@@ -127,14 +137,16 @@ function followModels(camera, targets, options = {}) {
127
137
  else {
128
138
  camera.lookAt(endTarget);
129
139
  }
130
- (_a = camera.updateProjectionMatrix) === null || _a === void 0 ? void 0 : _a.call(camera);
131
- // ✨ 调用进度回调
140
+ if (camera.updateProjectionMatrix) {
141
+ camera.updateProjectionMatrix();
142
+ }
143
+ // Call progress callback
132
144
  if (onProgress) {
133
145
  try {
134
146
  onProgress(t);
135
147
  }
136
148
  catch (error) {
137
- console.error('followModels: 进度回调错误', error);
149
+ console.error('followModels: Progress callback error', error);
138
150
  }
139
151
  }
140
152
  if (t < 1) {
@@ -160,12 +172,12 @@ function followModels(camera, targets, options = {}) {
160
172
  });
161
173
  }
162
174
  catch (error) {
163
- console.error('followModels: 执行失败', error);
175
+ console.error('followModels: Execution failed', error);
164
176
  return Promise.reject(error);
165
177
  }
166
178
  }
167
179
  /**
168
- * 取消相机的跟随动画
180
+ * Cancel the camera follow animation
169
181
  */
170
182
  function cancelFollow(camera) {
171
183
  const rafId = _animationMap.get(camera);
@@ -175,42 +187,50 @@ function cancelFollow(camera) {
175
187
  }
176
188
  }
177
189
 
178
- // src/utils/setView.ts - 优化版
179
190
  /**
180
- * 平滑切换相机到模型的最佳视角 - 优化版
191
+ * @file setView.ts
192
+ * @description
193
+ * Utility to smoothly transition the camera to preset views (Front, Back, Top, Isometric, etc.).
194
+ *
195
+ * @best-practice
196
+ * - Use `setView` for UI buttons that switch camera angles.
197
+ * - Leverage `ViewPresets` for readable code when using standard views.
198
+ */
199
+ /**
200
+ * Smoothly switches the camera to the optimal angle for the model.
181
201
  *
182
- * ✨ 优化内容:
183
- * - 复用 followModels 逻辑,避免代码重复
184
- * - 支持更多视角
185
- * - 配置选项增强
186
- * - 返回 Promise 支持链式调用
187
- * - 支持取消动画
202
+ * Features:
203
+ * - Reuses followModels logic to avoid code duplication
204
+ * - Supports more angles
205
+ * - Enhanced configuration options
206
+ * - Returns Promise to support chaining
207
+ * - Supports animation cancellation
188
208
  *
189
- * @param camera THREE.PerspectiveCamera 相机实例
190
- * @param controls OrbitControls 控制器实例
191
- * @param targetObj THREE.Object3D 模型对象
192
- * @param position 视角位置
193
- * @param options 配置选项
209
+ * @param camera THREE.PerspectiveCamera instance
210
+ * @param controls OrbitControls instance
211
+ * @param targetObj THREE.Object3D model object
212
+ * @param position View position
213
+ * @param options Configuration options
194
214
  * @returns Promise<void>
195
215
  */
196
216
  function setView(camera, controls, targetObj, position = 'front', options = {}) {
197
217
  const { distanceFactor = 0.8, duration = 1000, easing = 'easeInOut', onProgress } = options;
198
- // 边界检查
218
+ // Boundary check
199
219
  if (!targetObj) {
200
- console.warn('setView: 目标对象为空');
220
+ console.warn('setView: Target object is empty');
201
221
  return Promise.reject(new Error('Target object is required'));
202
222
  }
203
223
  try {
204
- // 计算包围盒
224
+ // Calculate bounding box
205
225
  const box = new THREE.Box3().setFromObject(targetObj);
206
226
  if (!isFinite(box.min.x)) {
207
- console.warn('setView: 包围盒计算失败');
227
+ console.warn('setView: Failed to calculate bounding box');
208
228
  return Promise.reject(new Error('Invalid bounding box'));
209
229
  }
210
230
  const center = box.getCenter(new THREE.Vector3());
211
231
  const size = box.getSize(new THREE.Vector3());
212
232
  const maxSize = Math.max(size.x, size.y, size.z);
213
- // 使用映射表简化视角计算
233
+ // Use mapping table for creating view angles
214
234
  const viewAngles = {
215
235
  'front': { azimuth: 0, elevation: 0 },
216
236
  'back': { azimuth: Math.PI, elevation: 0 },
@@ -221,7 +241,7 @@ function setView(camera, controls, targetObj, position = 'front', options = {})
221
241
  'iso': { azimuth: Math.PI / 4, elevation: Math.PI / 4 }
222
242
  };
223
243
  const angle = viewAngles[position] || viewAngles.front;
224
- // 复用 followModels,避免代码重复
244
+ // Reuse followModels to avoid code duplication
225
245
  return followModels(camera, targetObj, {
226
246
  duration,
227
247
  padding: distanceFactor,
@@ -233,30 +253,30 @@ function setView(camera, controls, targetObj, position = 'front', options = {})
233
253
  });
234
254
  }
235
255
  catch (error) {
236
- console.error('setView: 执行失败', error);
256
+ console.error('setView: Execution failed', error);
237
257
  return Promise.reject(error);
238
258
  }
239
259
  }
240
260
  /**
241
- * 取消视角切换动画
261
+ * Cancel view switch animation
242
262
  */
243
263
  function cancelSetView(camera) {
244
264
  cancelFollow(camera);
245
265
  }
246
266
  /**
247
- * 预设视角快捷方法
267
+ * Preset view shortcut methods
248
268
  */
249
269
  const ViewPresets = {
250
270
  /**
251
- * 前视图
271
+ * Front View
252
272
  */
253
273
  front: (camera, controls, target, options) => setView(camera, controls, target, 'front', options),
254
274
  /**
255
- * 等距视图
275
+ * Isometric View
256
276
  */
257
277
  isometric: (camera, controls, target, options) => setView(camera, controls, target, 'iso', options),
258
278
  /**
259
- * 顶视图
279
+ * Top View
260
280
  */
261
281
  top: (camera, controls, target, options) => setView(camera, controls, target, 'top', options)
262
282
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/camera/followModels.ts","../../src/camera/setView.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../src/camera/followModels.ts","../../src/camera/setView.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
@@ -2,6 +2,17 @@ import * as THREE from 'three';
2
2
  import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass';
3
3
  import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
4
4
 
5
+ /**
6
+ * @file labelManager.ts
7
+ * @description
8
+ * Manages HTML labels attached to 3D objects. Efficiently updates label positions based on camera movement.
9
+ *
10
+ * @best-practice
11
+ * - Use `addChildModelLabels` to label parts of a loaded model.
12
+ * - Labels are HTML elements overlaid on the canvas.
13
+ * - Supports performance optimization via caching and visibility culling.
14
+ */
15
+
5
16
  interface LabelOptions {
6
17
  fontSize?: string;
7
18
  color?: string;
@@ -18,23 +29,34 @@ interface LabelManager {
18
29
  isRunning: () => boolean;
19
30
  }
20
31
  /**
21
- * FBX 子模型添加头顶标签(支持 Mesh Group)- 优化版
32
+ * Add overhead labels to child models (supports Mesh and Group)
22
33
  *
23
- * ✨ 性能优化:
24
- * - 缓存包围盒,避免每帧重复计算
25
- * - 支持暂停/恢复更新
26
- * - 可配置更新间隔,降低 CPU 占用
27
- * - 只在可见时更新,隐藏时自动暂停
34
+ * Features:
35
+ * - Caches bounding boxes to avoid repetitive calculation every frame
36
+ * - Supports pause/resume
37
+ * - Configurable update interval to reduce CPU usage
38
+ * - Automatically pauses when hidden
28
39
  *
29
- * @param camera THREE.Camera - 场景摄像机
30
- * @param renderer THREE.WebGLRenderer - 渲染器,用于屏幕尺寸
31
- * @param parentModel THREE.Object3D - FBX 根节点或 Group
32
- * @param modelLabelsMap Record<string,string> - 模型 name 标签文字 映射表
33
- * @param options LabelOptions - 可选标签样式配置
34
- * @returns LabelManager - 包含 pause/resume/dispose 的管理接口
40
+ * @param camera THREE.Camera - Scene camera
41
+ * @param renderer THREE.WebGLRenderer - Renderer, used for screen size
42
+ * @param parentModel THREE.Object3D - FBX root node or Group
43
+ * @param modelLabelsMap Record<string,string> - Map of model name to label text
44
+ * @param options LabelOptions - Optional label style configuration
45
+ * @returns LabelManager - Management interface containing pause/resume/dispose
35
46
  */
36
47
  declare function addChildModelLabels(camera: THREE.Camera, renderer: THREE.WebGLRenderer, parentModel: THREE.Object3D, modelLabelsMap: Record<string, string>, options?: LabelOptions): LabelManager;
37
48
 
49
+ /**
50
+ * @file hoverEffect.ts
51
+ * @description
52
+ * Singleton highlight effect manager. Uses OutlinePass to create a breathing highlight effect on hovered objects.
53
+ *
54
+ * @best-practice
55
+ * - Initialize once in your setup/mounted hook.
56
+ * - Call `updateHighlightNames` to filter which objects are interactive.
57
+ * - Automatically handles mousemove throttling and cleanup on dispose.
58
+ */
59
+
38
60
  type HoverBreathOptions = {
39
61
  camera: THREE.Camera;
40
62
  scene: THREE.Scene;
@@ -47,13 +69,13 @@ type HoverBreathOptions = {
47
69
  throttleDelay?: number;
48
70
  };
49
71
  /**
50
- * 创建单例高亮器 —— 推荐在 mounted 时创建一次
51
- * 返回 { updateHighlightNames, dispose, getHoveredName } 接口
72
+ * Create a singleton highlighter - Recommended to create once on mount
73
+ * Returns { updateHighlightNames, dispose, getHoveredName } interface
52
74
  *
53
- * ✨ 性能优化:
54
- * - hover 对象时自动暂停动画
55
- * - mousemove 节流处理,避免过度计算
56
- * - 使用 passive 事件监听器提升滚动性能
75
+ * Features:
76
+ * - Automatically pauses animation when no object is hovered
77
+ * - Throttles mousemove events to avoid excessive calculation
78
+ * - Uses passive event listeners to improve scrolling performance
57
79
  */
58
80
  declare function enableHoverBreath(opts: HoverBreathOptions): {
59
81
  updateHighlightNames: (names: string[] | null) => void;
@@ -63,7 +85,18 @@ declare function enableHoverBreath(opts: HoverBreathOptions): {
63
85
  };
64
86
 
65
87
  /**
66
- * 后期处理配置选项
88
+ * @file postProcessing.ts
89
+ * @description
90
+ * Manages the post-processing chain, specifically for Outline effects and Gamma correction.
91
+ *
92
+ * @best-practice
93
+ * - call `initPostProcessing` after creating your renderer and scene.
94
+ * - Use the returned `composer` in your render loop instead of `renderer.render`.
95
+ * - Handles resizing automatically via the `resize` method.
96
+ */
97
+
98
+ /**
99
+ * Post-processing configuration options
67
100
  */
68
101
  interface PostProcessingOptions {
69
102
  edgeStrength?: number;
@@ -74,7 +107,7 @@ interface PostProcessingOptions {
74
107
  resolutionScale?: number;
75
108
  }
76
109
  /**
77
- * 后期处理管理接口
110
+ * Post-processing management interface
78
111
  */
79
112
  interface PostProcessingManager {
80
113
  composer: EffectComposer;
@@ -83,18 +116,18 @@ interface PostProcessingManager {
83
116
  dispose: () => void;
84
117
  }
85
118
  /**
86
- * 初始化描边相关信息(包含 OutlinePass)- 优化版
119
+ * Initialize outline-related information (contains OutlinePass)
87
120
  *
88
- * ✨ 功能增强:
89
- * - 支持窗口 resize 自动更新
90
- * - 可配置分辨率缩放提升性能
91
- * - 完善的资源释放管理
121
+ * Capabilities:
122
+ * - Supports automatic update on window resize
123
+ * - Configurable resolution scale for performance improvement
124
+ * - Comprehensive resource disposal management
92
125
  *
93
126
  * @param renderer THREE.WebGLRenderer
94
127
  * @param scene THREE.Scene
95
128
  * @param camera THREE.Camera
96
- * @param options PostProcessingOptions - 可选配置
97
- * @returns PostProcessingManager - 包含 composer/outlinePass/resize/dispose 的管理接口
129
+ * @param options PostProcessingOptions - Optional configuration
130
+ * @returns PostProcessingManager - Management interface containing composer/outlinePass/resize/dispose
98
131
  */
99
132
  declare function initPostProcessing(renderer: THREE.WebGLRenderer, scene: THREE.Scene, camera: THREE.Camera, options?: PostProcessingOptions): PostProcessingManager;
100
133