@chocozhang/three-model-render 1.0.3 → 1.0.5
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.
- package/CHANGELOG.md +39 -0
- package/README.md +134 -97
- package/dist/camera/index.d.ts +59 -36
- package/dist/camera/index.js +83 -67
- package/dist/camera/index.js.map +1 -1
- package/dist/camera/index.mjs +83 -67
- package/dist/camera/index.mjs.map +1 -1
- package/dist/core/index.d.ts +81 -28
- package/dist/core/index.js +194 -104
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +194 -105
- package/dist/core/index.mjs.map +1 -1
- package/dist/effect/index.d.ts +47 -134
- package/dist/effect/index.js +287 -288
- package/dist/effect/index.js.map +1 -1
- package/dist/effect/index.mjs +287 -288
- package/dist/effect/index.mjs.map +1 -1
- package/dist/index.d.ts +432 -349
- package/dist/index.js +1399 -1228
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1395 -1229
- package/dist/index.mjs.map +1 -1
- package/dist/interaction/index.d.ts +85 -52
- package/dist/interaction/index.js +168 -142
- package/dist/interaction/index.js.map +1 -1
- package/dist/interaction/index.mjs +168 -142
- package/dist/interaction/index.mjs.map +1 -1
- package/dist/loader/index.d.ts +106 -58
- package/dist/loader/index.js +492 -454
- package/dist/loader/index.js.map +1 -1
- package/dist/loader/index.mjs +491 -455
- package/dist/loader/index.mjs.map +1 -1
- package/dist/setup/index.d.ts +26 -24
- package/dist/setup/index.js +125 -163
- package/dist/setup/index.js.map +1 -1
- package/dist/setup/index.mjs +124 -164
- package/dist/setup/index.mjs.map +1 -1
- package/dist/ui/index.d.ts +18 -7
- package/dist/ui/index.js +45 -37
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +45 -37
- package/dist/ui/index.mjs.map +1 -1
- package/package.json +50 -22
package/dist/core/index.mjs
CHANGED
|
@@ -6,25 +6,35 @@ import { GammaCorrectionShader } from 'three/examples/jsm/shaders/GammaCorrectio
|
|
|
6
6
|
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* @file labelManager.ts
|
|
10
|
+
* @description
|
|
11
|
+
* Manages HTML labels attached to 3D objects. Efficiently updates label positions based on camera movement.
|
|
10
12
|
*
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
* -
|
|
14
|
-
* -
|
|
15
|
-
|
|
13
|
+
* @best-practice
|
|
14
|
+
* - Use `addChildModelLabels` to label parts of a loaded model.
|
|
15
|
+
* - Labels are HTML elements overlaid on the canvas.
|
|
16
|
+
* - Supports performance optimization via caching and visibility culling.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Add overhead labels to child models (supports Mesh and Group)
|
|
16
20
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
21
|
+
* Features:
|
|
22
|
+
* - Caches bounding boxes to avoid repetitive calculation every frame
|
|
23
|
+
* - Supports pause/resume
|
|
24
|
+
* - Configurable update interval to reduce CPU usage
|
|
25
|
+
* - Automatically pauses when hidden
|
|
26
|
+
*
|
|
27
|
+
* @param camera THREE.Camera - Scene camera
|
|
28
|
+
* @param renderer THREE.WebGLRenderer - Renderer, used for screen size
|
|
29
|
+
* @param parentModel THREE.Object3D - FBX root node or Group
|
|
30
|
+
* @param modelLabelsMap Record<string,string> - Map of model name to label text
|
|
31
|
+
* @param options LabelOptions - Optional label style configuration
|
|
32
|
+
* @returns LabelManager - Management interface containing pause/resume/dispose
|
|
23
33
|
*/
|
|
24
34
|
function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, options) {
|
|
25
|
-
//
|
|
35
|
+
// Defensive check: ensure parentModel is loaded
|
|
26
36
|
if (!parentModel || typeof parentModel.traverse !== 'function') {
|
|
27
|
-
console.error('parentModel
|
|
37
|
+
console.error('parentModel invalid, please ensure the FBX model is loaded');
|
|
28
38
|
return {
|
|
29
39
|
pause: () => { },
|
|
30
40
|
resume: () => { },
|
|
@@ -32,48 +42,47 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
32
42
|
isRunning: () => false
|
|
33
43
|
};
|
|
34
44
|
}
|
|
35
|
-
//
|
|
36
|
-
const enableCache =
|
|
37
|
-
const updateInterval =
|
|
38
|
-
//
|
|
45
|
+
// Configuration
|
|
46
|
+
const enableCache = options?.enableCache !== false;
|
|
47
|
+
const updateInterval = options?.updateInterval || 0;
|
|
48
|
+
// Create label container, absolute positioning, attached to body
|
|
39
49
|
const container = document.createElement('div');
|
|
40
50
|
container.style.position = 'absolute';
|
|
41
51
|
container.style.top = '0';
|
|
42
52
|
container.style.left = '0';
|
|
43
|
-
container.style.pointerEvents = 'none'; //
|
|
53
|
+
container.style.pointerEvents = 'none'; // Avoid blocking mouse events
|
|
44
54
|
container.style.zIndex = '1000';
|
|
45
55
|
document.body.appendChild(container);
|
|
46
56
|
const labels = [];
|
|
47
|
-
//
|
|
57
|
+
// State management
|
|
48
58
|
let rafId = null;
|
|
49
59
|
let isPaused = false;
|
|
50
60
|
let lastUpdateTime = 0;
|
|
51
|
-
//
|
|
61
|
+
// Traverse all child models
|
|
52
62
|
parentModel.traverse((child) => {
|
|
53
|
-
|
|
54
|
-
// 只处理 Mesh 或 Group
|
|
63
|
+
// Only process Mesh or Group
|
|
55
64
|
if ((child.isMesh || child.type === 'Group')) {
|
|
56
|
-
//
|
|
57
|
-
const labelText =
|
|
65
|
+
// Dynamic matching of name to prevent undefined
|
|
66
|
+
const labelText = Object.entries(modelLabelsMap).find(([key]) => child.name.includes(key))?.[1];
|
|
58
67
|
if (!labelText)
|
|
59
|
-
return; //
|
|
60
|
-
//
|
|
68
|
+
return; // Skip if no matching label
|
|
69
|
+
// Create DOM label
|
|
61
70
|
const el = document.createElement('div');
|
|
62
71
|
el.innerText = labelText;
|
|
63
|
-
//
|
|
72
|
+
// Styles defined in JS, can be overridden via options
|
|
64
73
|
el.style.position = 'absolute';
|
|
65
|
-
el.style.color =
|
|
66
|
-
el.style.background =
|
|
67
|
-
el.style.padding =
|
|
68
|
-
el.style.borderRadius =
|
|
69
|
-
el.style.fontSize =
|
|
70
|
-
el.style.transform = 'translate(-50%, -100%)'; //
|
|
74
|
+
el.style.color = options?.color || '#fff';
|
|
75
|
+
el.style.background = options?.background || 'rgba(0,0,0,0.6)';
|
|
76
|
+
el.style.padding = options?.padding || '4px 8px';
|
|
77
|
+
el.style.borderRadius = options?.borderRadius || '4px';
|
|
78
|
+
el.style.fontSize = options?.fontSize || '14px';
|
|
79
|
+
el.style.transform = 'translate(-50%, -100%)'; // Position label directly above the model
|
|
71
80
|
el.style.whiteSpace = 'nowrap';
|
|
72
81
|
el.style.pointerEvents = 'none';
|
|
73
82
|
el.style.transition = 'opacity 0.2s ease';
|
|
74
|
-
//
|
|
83
|
+
// Append to container
|
|
75
84
|
container.appendChild(el);
|
|
76
|
-
//
|
|
85
|
+
// Initialize cache
|
|
77
86
|
const cachedBox = new THREE.Box3().setFromObject(child);
|
|
78
87
|
const center = new THREE.Vector3();
|
|
79
88
|
cachedBox.getCenter(center);
|
|
@@ -88,7 +97,7 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
88
97
|
}
|
|
89
98
|
});
|
|
90
99
|
/**
|
|
91
|
-
*
|
|
100
|
+
* Update cached bounding box (called only when model transforms)
|
|
92
101
|
*/
|
|
93
102
|
const updateCache = (labelData) => {
|
|
94
103
|
labelData.cachedBox.setFromObject(labelData.object);
|
|
@@ -98,18 +107,18 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
98
107
|
labelData.needsUpdate = false;
|
|
99
108
|
};
|
|
100
109
|
/**
|
|
101
|
-
*
|
|
110
|
+
* Get object top world coordinates (using cache)
|
|
102
111
|
*/
|
|
103
112
|
const getObjectTopPosition = (labelData) => {
|
|
104
113
|
if (enableCache) {
|
|
105
|
-
//
|
|
114
|
+
// Check if object has transformed
|
|
106
115
|
if (labelData.needsUpdate || labelData.object.matrixWorldNeedsUpdate) {
|
|
107
116
|
updateCache(labelData);
|
|
108
117
|
}
|
|
109
118
|
return labelData.cachedTopPos;
|
|
110
119
|
}
|
|
111
120
|
else {
|
|
112
|
-
//
|
|
121
|
+
// Do not use cache, recalculate every time
|
|
113
122
|
const box = new THREE.Box3().setFromObject(labelData.object);
|
|
114
123
|
const center = new THREE.Vector3();
|
|
115
124
|
box.getCenter(center);
|
|
@@ -117,15 +126,15 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
117
126
|
}
|
|
118
127
|
};
|
|
119
128
|
/**
|
|
120
|
-
*
|
|
129
|
+
* Update label positions function
|
|
121
130
|
*/
|
|
122
131
|
function updateLabels(timestamp = 0) {
|
|
123
|
-
//
|
|
132
|
+
// Check pause state
|
|
124
133
|
if (isPaused) {
|
|
125
134
|
rafId = null;
|
|
126
135
|
return;
|
|
127
136
|
}
|
|
128
|
-
//
|
|
137
|
+
// Check update interval
|
|
129
138
|
if (updateInterval > 0 && timestamp - lastUpdateTime < updateInterval) {
|
|
130
139
|
rafId = requestAnimationFrame(updateLabels);
|
|
131
140
|
return;
|
|
@@ -135,22 +144,22 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
135
144
|
const height = renderer.domElement.clientHeight;
|
|
136
145
|
labels.forEach((labelData) => {
|
|
137
146
|
const { el } = labelData;
|
|
138
|
-
const pos = getObjectTopPosition(labelData); //
|
|
139
|
-
pos.project(camera); //
|
|
140
|
-
const x = (pos.x * 0.5 + 0.5) * width; //
|
|
141
|
-
const y = (-(pos.y * 0.5) + 0.5) * height; //
|
|
142
|
-
//
|
|
147
|
+
const pos = getObjectTopPosition(labelData); // Use cached top position
|
|
148
|
+
pos.project(camera); // Convert to screen coordinates
|
|
149
|
+
const x = (pos.x * 0.5 + 0.5) * width; // Screen X
|
|
150
|
+
const y = (-(pos.y * 0.5) + 0.5) * height; // Screen Y
|
|
151
|
+
// Control label visibility (hidden when behind camera)
|
|
143
152
|
const isVisible = pos.z < 1;
|
|
144
153
|
el.style.opacity = isVisible ? '1' : '0';
|
|
145
154
|
el.style.display = isVisible ? 'block' : 'none';
|
|
146
|
-
el.style.transform = `translate(-50%, -100%) translate(${x}px, ${y}px)`; //
|
|
155
|
+
el.style.transform = `translate(-50%, -100%) translate(${x}px, ${y}px)`; // Screen position
|
|
147
156
|
});
|
|
148
|
-
rafId = requestAnimationFrame(updateLabels); //
|
|
157
|
+
rafId = requestAnimationFrame(updateLabels); // Loop update
|
|
149
158
|
}
|
|
150
|
-
//
|
|
159
|
+
// Start update
|
|
151
160
|
updateLabels();
|
|
152
161
|
/**
|
|
153
|
-
*
|
|
162
|
+
* Pause updates
|
|
154
163
|
*/
|
|
155
164
|
const pause = () => {
|
|
156
165
|
isPaused = true;
|
|
@@ -160,7 +169,7 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
160
169
|
}
|
|
161
170
|
};
|
|
162
171
|
/**
|
|
163
|
-
*
|
|
172
|
+
* Resume updates
|
|
164
173
|
*/
|
|
165
174
|
const resume = () => {
|
|
166
175
|
if (!isPaused)
|
|
@@ -169,11 +178,11 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
169
178
|
updateLabels();
|
|
170
179
|
};
|
|
171
180
|
/**
|
|
172
|
-
*
|
|
181
|
+
* Check if running
|
|
173
182
|
*/
|
|
174
183
|
const isRunning = () => !isPaused;
|
|
175
184
|
/**
|
|
176
|
-
*
|
|
185
|
+
* Cleanup function: Remove all DOM labels, cancel animation, avoid memory leaks
|
|
177
186
|
*/
|
|
178
187
|
const dispose = () => {
|
|
179
188
|
pause();
|
|
@@ -195,36 +204,45 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
195
204
|
};
|
|
196
205
|
}
|
|
197
206
|
|
|
198
|
-
// src/utils/hoverBreathEffectByNameSingleton.ts
|
|
199
207
|
/**
|
|
200
|
-
*
|
|
201
|
-
*
|
|
208
|
+
* @file hoverEffect.ts
|
|
209
|
+
* @description
|
|
210
|
+
* Singleton highlight effect manager. Uses OutlinePass to create a breathing highlight effect on hovered objects.
|
|
211
|
+
*
|
|
212
|
+
* @best-practice
|
|
213
|
+
* - Initialize once in your setup/mounted hook.
|
|
214
|
+
* - Call `updateHighlightNames` to filter which objects are interactive.
|
|
215
|
+
* - Automatically handles mousemove throttling and cleanup on dispose.
|
|
216
|
+
*/
|
|
217
|
+
/**
|
|
218
|
+
* Create a singleton highlighter - Recommended to create once on mount
|
|
219
|
+
* Returns { updateHighlightNames, dispose, getHoveredName } interface
|
|
202
220
|
*
|
|
203
|
-
*
|
|
204
|
-
* -
|
|
205
|
-
* - mousemove
|
|
206
|
-
* -
|
|
221
|
+
* Features:
|
|
222
|
+
* - Automatically pauses animation when no object is hovered
|
|
223
|
+
* - Throttles mousemove events to avoid excessive calculation
|
|
224
|
+
* - Uses passive event listeners to improve scrolling performance
|
|
207
225
|
*/
|
|
208
226
|
function enableHoverBreath(opts) {
|
|
209
|
-
const { camera, scene, renderer, outlinePass, highlightNames = null, minStrength = 2, maxStrength = 5, speed = 4, throttleDelay = 16, //
|
|
227
|
+
const { camera, scene, renderer, outlinePass, highlightNames = null, minStrength = 2, maxStrength = 5, speed = 4, throttleDelay = 16, // Default ~60fps
|
|
210
228
|
} = opts;
|
|
211
229
|
const raycaster = new THREE.Raycaster();
|
|
212
230
|
const mouse = new THREE.Vector2();
|
|
213
231
|
let hovered = null;
|
|
214
232
|
let time = 0;
|
|
215
233
|
let animationId = null;
|
|
216
|
-
// highlightSet: null
|
|
234
|
+
// highlightSet: null means all; empty Set means none
|
|
217
235
|
let highlightSet = highlightNames === null ? null : new Set(highlightNames);
|
|
218
|
-
//
|
|
236
|
+
// Throttling related
|
|
219
237
|
let lastMoveTime = 0;
|
|
220
238
|
let rafPending = false;
|
|
221
239
|
function setHighlightNames(names) {
|
|
222
240
|
highlightSet = names === null ? null : new Set(names);
|
|
223
|
-
//
|
|
241
|
+
// If current hovered object is not in the new list, clean up selection immediately
|
|
224
242
|
if (hovered && highlightSet && !highlightSet.has(hovered.name)) {
|
|
225
243
|
hovered = null;
|
|
226
244
|
outlinePass.selectedObjects = [];
|
|
227
|
-
//
|
|
245
|
+
// Pause animation
|
|
228
246
|
if (animationId !== null) {
|
|
229
247
|
cancelAnimationFrame(animationId);
|
|
230
248
|
animationId = null;
|
|
@@ -232,13 +250,13 @@ function enableHoverBreath(opts) {
|
|
|
232
250
|
}
|
|
233
251
|
}
|
|
234
252
|
/**
|
|
235
|
-
*
|
|
253
|
+
* Throttled mousemove handler
|
|
236
254
|
*/
|
|
237
255
|
function onMouseMove(ev) {
|
|
238
256
|
const now = performance.now();
|
|
239
|
-
//
|
|
257
|
+
// Throttle: if time since last process is less than threshold, skip
|
|
240
258
|
if (now - lastMoveTime < throttleDelay) {
|
|
241
|
-
//
|
|
259
|
+
// Use RAF to process the latest event later, ensuring the last event isn't lost
|
|
242
260
|
if (!rafPending) {
|
|
243
261
|
rafPending = true;
|
|
244
262
|
requestAnimationFrame(() => {
|
|
@@ -252,24 +270,24 @@ function enableHoverBreath(opts) {
|
|
|
252
270
|
processMouseMove(ev);
|
|
253
271
|
}
|
|
254
272
|
/**
|
|
255
|
-
*
|
|
273
|
+
* Actual mousemove logic
|
|
256
274
|
*/
|
|
257
275
|
function processMouseMove(ev) {
|
|
258
276
|
const rect = renderer.domElement.getBoundingClientRect();
|
|
259
277
|
mouse.x = ((ev.clientX - rect.left) / rect.width) * 2 - 1;
|
|
260
278
|
mouse.y = -((ev.clientY - rect.top) / rect.height) * 2 + 1;
|
|
261
279
|
raycaster.setFromCamera(mouse, camera);
|
|
262
|
-
//
|
|
280
|
+
// Deep detect all children of the scene (true)
|
|
263
281
|
const intersects = raycaster.intersectObjects(scene.children, true);
|
|
264
282
|
if (intersects.length > 0) {
|
|
265
283
|
const obj = intersects[0].object;
|
|
266
|
-
//
|
|
284
|
+
// Determine if it is allowed to be highlighted
|
|
267
285
|
const allowed = highlightSet === null ? true : highlightSet.has(obj.name);
|
|
268
286
|
if (allowed) {
|
|
269
287
|
if (hovered !== obj) {
|
|
270
288
|
hovered = obj;
|
|
271
289
|
outlinePass.selectedObjects = [obj];
|
|
272
|
-
//
|
|
290
|
+
// Start animation (if not running)
|
|
273
291
|
if (animationId === null) {
|
|
274
292
|
animate();
|
|
275
293
|
}
|
|
@@ -279,7 +297,7 @@ function enableHoverBreath(opts) {
|
|
|
279
297
|
if (hovered !== null) {
|
|
280
298
|
hovered = null;
|
|
281
299
|
outlinePass.selectedObjects = [];
|
|
282
|
-
//
|
|
300
|
+
// Stop animation
|
|
283
301
|
if (animationId !== null) {
|
|
284
302
|
cancelAnimationFrame(animationId);
|
|
285
303
|
animationId = null;
|
|
@@ -291,7 +309,7 @@ function enableHoverBreath(opts) {
|
|
|
291
309
|
if (hovered !== null) {
|
|
292
310
|
hovered = null;
|
|
293
311
|
outlinePass.selectedObjects = [];
|
|
294
|
-
//
|
|
312
|
+
// Stop animation
|
|
295
313
|
if (animationId !== null) {
|
|
296
314
|
cancelAnimationFrame(animationId);
|
|
297
315
|
animationId = null;
|
|
@@ -300,10 +318,10 @@ function enableHoverBreath(opts) {
|
|
|
300
318
|
}
|
|
301
319
|
}
|
|
302
320
|
/**
|
|
303
|
-
*
|
|
321
|
+
* Animation loop - only runs when there is a hovered object
|
|
304
322
|
*/
|
|
305
323
|
function animate() {
|
|
306
|
-
//
|
|
324
|
+
// If no hovered object, stop animation
|
|
307
325
|
if (!hovered) {
|
|
308
326
|
animationId = null;
|
|
309
327
|
return;
|
|
@@ -313,11 +331,11 @@ function enableHoverBreath(opts) {
|
|
|
313
331
|
const strength = minStrength + ((Math.sin(time) + 1) / 2) * (maxStrength - minStrength);
|
|
314
332
|
outlinePass.edgeStrength = strength;
|
|
315
333
|
}
|
|
316
|
-
//
|
|
317
|
-
//
|
|
334
|
+
// Start (called only once)
|
|
335
|
+
// Use passive to improve scrolling performance
|
|
318
336
|
renderer.domElement.addEventListener('mousemove', onMouseMove, { passive: true });
|
|
319
|
-
//
|
|
320
|
-
// refresh:
|
|
337
|
+
// Note: Do not start animate here, wait until there is a hover object
|
|
338
|
+
// refresh: Forcibly clean up selectedObjects if needed
|
|
321
339
|
function refreshSelection() {
|
|
322
340
|
if (hovered && highlightSet && !highlightSet.has(hovered.name)) {
|
|
323
341
|
hovered = null;
|
|
@@ -338,7 +356,7 @@ function enableHoverBreath(opts) {
|
|
|
338
356
|
animationId = null;
|
|
339
357
|
}
|
|
340
358
|
outlinePass.selectedObjects = [];
|
|
341
|
-
//
|
|
359
|
+
// Clear references
|
|
342
360
|
hovered = null;
|
|
343
361
|
highlightSet = null;
|
|
344
362
|
}
|
|
@@ -351,23 +369,33 @@ function enableHoverBreath(opts) {
|
|
|
351
369
|
}
|
|
352
370
|
|
|
353
371
|
/**
|
|
354
|
-
*
|
|
372
|
+
* @file postProcessing.ts
|
|
373
|
+
* @description
|
|
374
|
+
* Manages the post-processing chain, specifically for Outline effects and Gamma correction.
|
|
355
375
|
*
|
|
356
|
-
*
|
|
357
|
-
* -
|
|
358
|
-
* -
|
|
359
|
-
* -
|
|
376
|
+
* @best-practice
|
|
377
|
+
* - call `initPostProcessing` after creating your renderer and scene.
|
|
378
|
+
* - Use the returned `composer` in your render loop instead of `renderer.render`.
|
|
379
|
+
* - Handles resizing automatically via the `resize` method.
|
|
380
|
+
*/
|
|
381
|
+
/**
|
|
382
|
+
* Initialize outline-related information (contains OutlinePass)
|
|
383
|
+
*
|
|
384
|
+
* Capabilities:
|
|
385
|
+
* - Supports automatic update on window resize
|
|
386
|
+
* - Configurable resolution scale for performance improvement
|
|
387
|
+
* - Comprehensive resource disposal management
|
|
360
388
|
*
|
|
361
389
|
* @param renderer THREE.WebGLRenderer
|
|
362
390
|
* @param scene THREE.Scene
|
|
363
391
|
* @param camera THREE.Camera
|
|
364
|
-
* @param options PostProcessingOptions -
|
|
365
|
-
* @returns PostProcessingManager -
|
|
392
|
+
* @param options PostProcessingOptions - Optional configuration
|
|
393
|
+
* @returns PostProcessingManager - Management interface containing composer/outlinePass/resize/dispose
|
|
366
394
|
*/
|
|
367
395
|
function initPostProcessing(renderer, scene, camera, options = {}) {
|
|
368
|
-
//
|
|
396
|
+
// Default configuration
|
|
369
397
|
const { edgeStrength = 4, edgeGlow = 1, edgeThickness = 2, visibleEdgeColor = '#ffee00', hiddenEdgeColor = '#000000', resolutionScale = 1.0 } = options;
|
|
370
|
-
//
|
|
398
|
+
// Get renderer actual size
|
|
371
399
|
const getSize = () => {
|
|
372
400
|
const width = renderer.domElement.clientWidth;
|
|
373
401
|
const height = renderer.domElement.clientHeight;
|
|
@@ -377,12 +405,12 @@ function initPostProcessing(renderer, scene, camera, options = {}) {
|
|
|
377
405
|
};
|
|
378
406
|
};
|
|
379
407
|
const size = getSize();
|
|
380
|
-
//
|
|
408
|
+
// Create EffectComposer
|
|
381
409
|
const composer = new EffectComposer(renderer);
|
|
382
|
-
//
|
|
410
|
+
// Basic RenderPass
|
|
383
411
|
const renderPass = new RenderPass(scene, camera);
|
|
384
412
|
composer.addPass(renderPass);
|
|
385
|
-
// OutlinePass
|
|
413
|
+
// OutlinePass for model outlining
|
|
386
414
|
const outlinePass = new OutlinePass(new THREE.Vector2(size.width, size.height), scene, camera);
|
|
387
415
|
outlinePass.edgeStrength = edgeStrength;
|
|
388
416
|
outlinePass.edgeGlow = edgeGlow;
|
|
@@ -390,34 +418,34 @@ function initPostProcessing(renderer, scene, camera, options = {}) {
|
|
|
390
418
|
outlinePass.visibleEdgeColor.set(visibleEdgeColor);
|
|
391
419
|
outlinePass.hiddenEdgeColor.set(hiddenEdgeColor);
|
|
392
420
|
composer.addPass(outlinePass);
|
|
393
|
-
// Gamma
|
|
421
|
+
// Gamma correction
|
|
394
422
|
const gammaPass = new ShaderPass(GammaCorrectionShader);
|
|
395
423
|
composer.addPass(gammaPass);
|
|
396
424
|
/**
|
|
397
|
-
* resize
|
|
398
|
-
* @param width
|
|
399
|
-
* @param height
|
|
425
|
+
* Handle resize
|
|
426
|
+
* @param width Optional width, uses renderer.domElement actual width if not provided
|
|
427
|
+
* @param height Optional height, uses renderer.domElement actual height if not provided
|
|
400
428
|
*/
|
|
401
429
|
const resize = (width, height) => {
|
|
402
430
|
const actualSize = width !== undefined && height !== undefined
|
|
403
431
|
? { width: Math.floor(width * resolutionScale), height: Math.floor(height * resolutionScale) }
|
|
404
432
|
: getSize();
|
|
405
|
-
//
|
|
433
|
+
// Update composer size
|
|
406
434
|
composer.setSize(actualSize.width, actualSize.height);
|
|
407
|
-
//
|
|
435
|
+
// Update outlinePass resolution
|
|
408
436
|
outlinePass.resolution.set(actualSize.width, actualSize.height);
|
|
409
437
|
};
|
|
410
438
|
/**
|
|
411
|
-
*
|
|
439
|
+
* Dispose resources
|
|
412
440
|
*/
|
|
413
441
|
const dispose = () => {
|
|
414
|
-
//
|
|
442
|
+
// Dipose all passes
|
|
415
443
|
composer.passes.forEach(pass => {
|
|
416
444
|
if (pass.dispose) {
|
|
417
445
|
pass.dispose();
|
|
418
446
|
}
|
|
419
447
|
});
|
|
420
|
-
//
|
|
448
|
+
// Clear passes array
|
|
421
449
|
composer.passes.length = 0;
|
|
422
450
|
};
|
|
423
451
|
return {
|
|
@@ -428,5 +456,66 @@ function initPostProcessing(renderer, scene, camera, options = {}) {
|
|
|
428
456
|
};
|
|
429
457
|
}
|
|
430
458
|
|
|
431
|
-
|
|
459
|
+
/**
|
|
460
|
+
* ResourceManager
|
|
461
|
+
* Handles tracking and disposal of Three.js objects to prevent memory leaks.
|
|
462
|
+
*/
|
|
463
|
+
class ResourceManager {
|
|
464
|
+
constructor() {
|
|
465
|
+
this.geometries = new Set();
|
|
466
|
+
this.materials = new Set();
|
|
467
|
+
this.textures = new Set();
|
|
468
|
+
this.objects = new Set();
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Track an object and its resources recursively
|
|
472
|
+
*/
|
|
473
|
+
track(object) {
|
|
474
|
+
this.objects.add(object);
|
|
475
|
+
object.traverse((child) => {
|
|
476
|
+
if (child.isMesh) {
|
|
477
|
+
const mesh = child;
|
|
478
|
+
if (mesh.geometry)
|
|
479
|
+
this.geometries.add(mesh.geometry);
|
|
480
|
+
if (mesh.material) {
|
|
481
|
+
if (Array.isArray(mesh.material)) {
|
|
482
|
+
mesh.material.forEach(m => this.trackMaterial(m));
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
this.trackMaterial(mesh.material);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
return object;
|
|
491
|
+
}
|
|
492
|
+
trackMaterial(material) {
|
|
493
|
+
this.materials.add(material);
|
|
494
|
+
// Track textures in material
|
|
495
|
+
for (const value of Object.values(material)) {
|
|
496
|
+
if (value instanceof THREE.Texture) {
|
|
497
|
+
this.textures.add(value);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Dispose all tracked resources
|
|
503
|
+
*/
|
|
504
|
+
dispose() {
|
|
505
|
+
this.geometries.forEach(g => g.dispose());
|
|
506
|
+
this.materials.forEach(m => m.dispose());
|
|
507
|
+
this.textures.forEach(t => t.dispose());
|
|
508
|
+
this.objects.forEach(obj => {
|
|
509
|
+
if (obj.parent) {
|
|
510
|
+
obj.parent.remove(obj);
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
this.geometries.clear();
|
|
514
|
+
this.materials.clear();
|
|
515
|
+
this.textures.clear();
|
|
516
|
+
this.objects.clear();
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
export { ResourceManager, addChildModelLabels, enableHoverBreath, initPostProcessing };
|
|
432
521
|
//# sourceMappingURL=index.mjs.map
|
package/dist/core/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/core/labelManager.ts","../../src/core/hoverEffect.ts","../../src/core/postProcessing.ts"],"sourcesContent":[null,null,null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/core/labelManager.ts","../../src/core/hoverEffect.ts","../../src/core/postProcessing.ts","../../src/core/resourceManager.ts"],"sourcesContent":[null,null,null,null],"names":[],"mappings":"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"}
|