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