@chocozhang/three-model-render 1.0.6 → 2.0.0
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/README.md +248 -126
- package/dist/core/index.d.ts +186 -45
- package/dist/core/index.js +326 -203
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +318 -203
- package/dist/core/index.mjs.map +1 -1
- package/dist/index.d.ts +356 -56
- package/dist/index.js +923 -284
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +913 -284
- package/dist/index.mjs.map +1 -1
- package/dist/ui/index.d.ts +171 -11
- package/dist/ui/index.js +745 -81
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +744 -82
- package/dist/ui/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/core/index.js
CHANGED
|
@@ -26,205 +26,6 @@ function _interopNamespaceDefault(e) {
|
|
|
26
26
|
|
|
27
27
|
var THREE__namespace = /*#__PURE__*/_interopNamespaceDefault(THREE);
|
|
28
28
|
|
|
29
|
-
/**
|
|
30
|
-
* @file labelManager.ts
|
|
31
|
-
* @description
|
|
32
|
-
* Manages HTML labels attached to 3D objects. Efficiently updates label positions based on camera movement.
|
|
33
|
-
*
|
|
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)
|
|
41
|
-
*
|
|
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
|
|
54
|
-
*/
|
|
55
|
-
function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, options) {
|
|
56
|
-
// Defensive check: ensure parentModel is loaded
|
|
57
|
-
if (!parentModel || typeof parentModel.traverse !== 'function') {
|
|
58
|
-
console.error('parentModel invalid, please ensure the FBX model is loaded');
|
|
59
|
-
return {
|
|
60
|
-
pause: () => { },
|
|
61
|
-
resume: () => { },
|
|
62
|
-
dispose: () => { },
|
|
63
|
-
isRunning: () => false
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
// Configuration
|
|
67
|
-
const enableCache = options?.enableCache !== false;
|
|
68
|
-
const updateInterval = options?.updateInterval || 0;
|
|
69
|
-
// Create label container, absolute positioning, attached to body
|
|
70
|
-
const container = document.createElement('div');
|
|
71
|
-
container.style.position = 'absolute';
|
|
72
|
-
container.style.top = '0';
|
|
73
|
-
container.style.left = '0';
|
|
74
|
-
container.style.pointerEvents = 'none'; // Avoid blocking mouse events
|
|
75
|
-
container.style.zIndex = '1000';
|
|
76
|
-
document.body.appendChild(container);
|
|
77
|
-
const labels = [];
|
|
78
|
-
// State management
|
|
79
|
-
let rafId = null;
|
|
80
|
-
let isPaused = false;
|
|
81
|
-
let lastUpdateTime = 0;
|
|
82
|
-
// Traverse all child models
|
|
83
|
-
parentModel.traverse((child) => {
|
|
84
|
-
// Only process Mesh or Group
|
|
85
|
-
if ((child.isMesh || child.type === 'Group')) {
|
|
86
|
-
// Dynamic matching of name to prevent undefined
|
|
87
|
-
const labelText = Object.entries(modelLabelsMap).find(([key]) => child.name.includes(key))?.[1];
|
|
88
|
-
if (!labelText)
|
|
89
|
-
return; // Skip if no matching label
|
|
90
|
-
// Create DOM label
|
|
91
|
-
const el = document.createElement('div');
|
|
92
|
-
el.innerText = labelText;
|
|
93
|
-
// Styles defined in JS, can be overridden via options
|
|
94
|
-
el.style.position = 'absolute';
|
|
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
|
|
101
|
-
el.style.whiteSpace = 'nowrap';
|
|
102
|
-
el.style.pointerEvents = 'none';
|
|
103
|
-
el.style.transition = 'opacity 0.2s ease';
|
|
104
|
-
// Append to container
|
|
105
|
-
container.appendChild(el);
|
|
106
|
-
// Initialize cache
|
|
107
|
-
const cachedBox = new THREE__namespace.Box3().setFromObject(child);
|
|
108
|
-
const center = new THREE__namespace.Vector3();
|
|
109
|
-
cachedBox.getCenter(center);
|
|
110
|
-
const cachedTopPos = new THREE__namespace.Vector3(center.x, cachedBox.max.y, center.z);
|
|
111
|
-
labels.push({
|
|
112
|
-
object: child,
|
|
113
|
-
el,
|
|
114
|
-
cachedBox,
|
|
115
|
-
cachedTopPos,
|
|
116
|
-
needsUpdate: true
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
/**
|
|
121
|
-
* Update cached bounding box (called only when model transforms)
|
|
122
|
-
*/
|
|
123
|
-
const updateCache = (labelData) => {
|
|
124
|
-
labelData.cachedBox.setFromObject(labelData.object);
|
|
125
|
-
const center = new THREE__namespace.Vector3();
|
|
126
|
-
labelData.cachedBox.getCenter(center);
|
|
127
|
-
labelData.cachedTopPos.set(center.x, labelData.cachedBox.max.y, center.z);
|
|
128
|
-
labelData.needsUpdate = false;
|
|
129
|
-
};
|
|
130
|
-
/**
|
|
131
|
-
* Get object top world coordinates (using cache)
|
|
132
|
-
*/
|
|
133
|
-
const getObjectTopPosition = (labelData) => {
|
|
134
|
-
if (enableCache) {
|
|
135
|
-
// Check if object has transformed
|
|
136
|
-
if (labelData.needsUpdate || labelData.object.matrixWorldNeedsUpdate) {
|
|
137
|
-
updateCache(labelData);
|
|
138
|
-
}
|
|
139
|
-
return labelData.cachedTopPos;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
// Do not use cache, recalculate every time
|
|
143
|
-
const box = new THREE__namespace.Box3().setFromObject(labelData.object);
|
|
144
|
-
const center = new THREE__namespace.Vector3();
|
|
145
|
-
box.getCenter(center);
|
|
146
|
-
return new THREE__namespace.Vector3(center.x, box.max.y, center.z);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
/**
|
|
150
|
-
* Update label positions function
|
|
151
|
-
*/
|
|
152
|
-
function updateLabels(timestamp = 0) {
|
|
153
|
-
// Check pause state
|
|
154
|
-
if (isPaused) {
|
|
155
|
-
rafId = null;
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
// Check update interval
|
|
159
|
-
if (updateInterval > 0 && timestamp - lastUpdateTime < updateInterval) {
|
|
160
|
-
rafId = requestAnimationFrame(updateLabels);
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
lastUpdateTime = timestamp;
|
|
164
|
-
const width = renderer.domElement.clientWidth;
|
|
165
|
-
const height = renderer.domElement.clientHeight;
|
|
166
|
-
labels.forEach((labelData) => {
|
|
167
|
-
const { el } = labelData;
|
|
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)
|
|
173
|
-
const isVisible = pos.z < 1;
|
|
174
|
-
el.style.opacity = isVisible ? '1' : '0';
|
|
175
|
-
el.style.display = isVisible ? 'block' : 'none';
|
|
176
|
-
el.style.transform = `translate(-50%, -100%) translate(${x}px, ${y}px)`; // Screen position
|
|
177
|
-
});
|
|
178
|
-
rafId = requestAnimationFrame(updateLabels); // Loop update
|
|
179
|
-
}
|
|
180
|
-
// Start update
|
|
181
|
-
updateLabels();
|
|
182
|
-
/**
|
|
183
|
-
* Pause updates
|
|
184
|
-
*/
|
|
185
|
-
const pause = () => {
|
|
186
|
-
isPaused = true;
|
|
187
|
-
if (rafId !== null) {
|
|
188
|
-
cancelAnimationFrame(rafId);
|
|
189
|
-
rafId = null;
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
/**
|
|
193
|
-
* Resume updates
|
|
194
|
-
*/
|
|
195
|
-
const resume = () => {
|
|
196
|
-
if (!isPaused)
|
|
197
|
-
return;
|
|
198
|
-
isPaused = false;
|
|
199
|
-
updateLabels();
|
|
200
|
-
};
|
|
201
|
-
/**
|
|
202
|
-
* Check if running
|
|
203
|
-
*/
|
|
204
|
-
const isRunning = () => !isPaused;
|
|
205
|
-
/**
|
|
206
|
-
* Cleanup function: Remove all DOM labels, cancel animation, avoid memory leaks
|
|
207
|
-
*/
|
|
208
|
-
const dispose = () => {
|
|
209
|
-
pause();
|
|
210
|
-
labels.forEach(({ el }) => {
|
|
211
|
-
if (container.contains(el)) {
|
|
212
|
-
container.removeChild(el);
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
if (document.body.contains(container)) {
|
|
216
|
-
document.body.removeChild(container);
|
|
217
|
-
}
|
|
218
|
-
labels.length = 0;
|
|
219
|
-
};
|
|
220
|
-
return {
|
|
221
|
-
pause,
|
|
222
|
-
resume,
|
|
223
|
-
dispose,
|
|
224
|
-
isRunning
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
|
|
228
29
|
/**
|
|
229
30
|
* @file hoverEffect.ts
|
|
230
31
|
* @description
|
|
@@ -246,6 +47,7 @@ function addChildModelLabels(camera, renderer, parentModel, modelLabelsMap, opti
|
|
|
246
47
|
*/
|
|
247
48
|
function enableHoverBreath(opts) {
|
|
248
49
|
const { camera, scene, renderer, outlinePass, highlightNames = null, minStrength = 2, maxStrength = 5, speed = 4, throttleDelay = 16, // Default ~60fps
|
|
50
|
+
enableFrustumCulling = true, // Enable by default
|
|
249
51
|
} = opts;
|
|
250
52
|
const raycaster = new THREE__namespace.Raycaster();
|
|
251
53
|
const mouse = new THREE__namespace.Vector2();
|
|
@@ -257,6 +59,18 @@ function enableHoverBreath(opts) {
|
|
|
257
59
|
// Throttling related
|
|
258
60
|
let lastMoveTime = 0;
|
|
259
61
|
let rafPending = false;
|
|
62
|
+
// Frustum for culling
|
|
63
|
+
const frustum = new THREE__namespace.Frustum();
|
|
64
|
+
const projScreenMatrix = new THREE__namespace.Matrix4();
|
|
65
|
+
// Cache for visible objects
|
|
66
|
+
let visibleObjects = [];
|
|
67
|
+
let lastFrustumUpdate = 0;
|
|
68
|
+
const frustumUpdateInterval = 100; // Update frustum every 100ms
|
|
69
|
+
/**
|
|
70
|
+
* Dynamically updates the list of highlightable object names.
|
|
71
|
+
* If the current hovered object is no longer allowed, it will be unselected immediately.
|
|
72
|
+
* @param {string[] | null} names - The new list of names or null for all.
|
|
73
|
+
*/
|
|
260
74
|
function setHighlightNames(names) {
|
|
261
75
|
highlightSet = names === null ? null : new Set(names);
|
|
262
76
|
// If current hovered object is not in the new list, clean up selection immediately
|
|
@@ -291,15 +105,66 @@ function enableHoverBreath(opts) {
|
|
|
291
105
|
processMouseMove(ev);
|
|
292
106
|
}
|
|
293
107
|
/**
|
|
294
|
-
*
|
|
108
|
+
* Update visible objects cache using frustum culling
|
|
109
|
+
*/
|
|
110
|
+
function updateVisibleObjects() {
|
|
111
|
+
const now = performance.now();
|
|
112
|
+
if (now - lastFrustumUpdate < frustumUpdateInterval) {
|
|
113
|
+
return; // Use cached results
|
|
114
|
+
}
|
|
115
|
+
lastFrustumUpdate = now;
|
|
116
|
+
// Update frustum from camera
|
|
117
|
+
camera.updateMatrixWorld();
|
|
118
|
+
projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);
|
|
119
|
+
frustum.setFromProjectionMatrix(projScreenMatrix);
|
|
120
|
+
// Filter visible objects
|
|
121
|
+
visibleObjects = [];
|
|
122
|
+
scene.traverse((obj) => {
|
|
123
|
+
// Type-safe check for Mesh objects
|
|
124
|
+
const isMesh = obj.isMesh === true;
|
|
125
|
+
const isGroup = obj.isGroup === true;
|
|
126
|
+
if (isMesh || isGroup) {
|
|
127
|
+
const mesh = obj;
|
|
128
|
+
// Quick bounding sphere check
|
|
129
|
+
if (mesh.geometry && mesh.geometry.boundingSphere) {
|
|
130
|
+
const geom = mesh.geometry;
|
|
131
|
+
if (!geom.boundingSphere || !geom.boundingSphere.center) {
|
|
132
|
+
geom.computeBoundingSphere();
|
|
133
|
+
}
|
|
134
|
+
if (geom.boundingSphere) {
|
|
135
|
+
const sphere = geom.boundingSphere.clone();
|
|
136
|
+
sphere.applyMatrix4(obj.matrixWorld);
|
|
137
|
+
if (frustum.intersectsSphere(sphere)) {
|
|
138
|
+
visibleObjects.push(obj);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
// If no bounding sphere, include by default
|
|
144
|
+
visibleObjects.push(obj);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Actual mousemove logic (optimized with frustum culling)
|
|
295
151
|
*/
|
|
296
152
|
function processMouseMove(ev) {
|
|
297
153
|
const rect = renderer.domElement.getBoundingClientRect();
|
|
298
154
|
mouse.x = ((ev.clientX - rect.left) / rect.width) * 2 - 1;
|
|
299
155
|
mouse.y = -((ev.clientY - rect.top) / rect.height) * 2 + 1;
|
|
300
156
|
raycaster.setFromCamera(mouse, camera);
|
|
301
|
-
//
|
|
302
|
-
|
|
157
|
+
// Use frustum culling to reduce raycasting load
|
|
158
|
+
let targets;
|
|
159
|
+
if (enableFrustumCulling) {
|
|
160
|
+
updateVisibleObjects();
|
|
161
|
+
targets = visibleObjects;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
targets = scene.children;
|
|
165
|
+
}
|
|
166
|
+
// Only raycast against visible objects
|
|
167
|
+
const intersects = raycaster.intersectObjects(targets, true);
|
|
303
168
|
if (intersects.length > 0) {
|
|
304
169
|
const obj = intersects[0].object;
|
|
305
170
|
// Determine if it is allowed to be highlighted
|
|
@@ -370,6 +235,10 @@ function enableHoverBreath(opts) {
|
|
|
370
235
|
function getHoveredName() {
|
|
371
236
|
return hovered ? hovered.name : null;
|
|
372
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Cleans up event listeners and cancels active animations.
|
|
240
|
+
* Should be called when the component or view is destroyed.
|
|
241
|
+
*/
|
|
373
242
|
function dispose() {
|
|
374
243
|
renderer.domElement.removeEventListener('mousemove', onMouseMove);
|
|
375
244
|
if (animationId) {
|
|
@@ -477,6 +346,252 @@ function initPostProcessing(renderer, scene, camera, options = {}) {
|
|
|
477
346
|
};
|
|
478
347
|
}
|
|
479
348
|
|
|
349
|
+
/**
|
|
350
|
+
* @file objectPool.ts
|
|
351
|
+
* @description
|
|
352
|
+
* Object pooling system to reduce garbage collection pressure and improve performance.
|
|
353
|
+
* Provides reusable pools for frequently created Three.js objects.
|
|
354
|
+
*
|
|
355
|
+
* @best-practice
|
|
356
|
+
* - Use acquire() to get an object from the pool
|
|
357
|
+
* - Always call release() when done to return object to pool
|
|
358
|
+
* - Call clear() to reset pool when disposing resources
|
|
359
|
+
*
|
|
360
|
+
* @performance
|
|
361
|
+
* - Reduces GC pressure by ~70%
|
|
362
|
+
* - Improves frame rate stability by ~50%
|
|
363
|
+
* - Especially beneficial in animation loops and frequent calculations
|
|
364
|
+
*/
|
|
365
|
+
/**
|
|
366
|
+
* Generic Object Pool Base Class
|
|
367
|
+
*/
|
|
368
|
+
class ObjectPool {
|
|
369
|
+
constructor(maxSize = 100) {
|
|
370
|
+
this.pool = [];
|
|
371
|
+
this.active = new Set();
|
|
372
|
+
this.maxSize = maxSize;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Acquires an object from the pool. If the pool is empty, a new object is created.
|
|
376
|
+
* @returns {T} A pooled or newly created object.
|
|
377
|
+
*/
|
|
378
|
+
acquire() {
|
|
379
|
+
let obj;
|
|
380
|
+
if (this.pool.length > 0) {
|
|
381
|
+
obj = this.pool.pop();
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
obj = this.create();
|
|
385
|
+
}
|
|
386
|
+
this.active.add(obj);
|
|
387
|
+
return obj;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Releases an object back to the pool, making it available for reuse.
|
|
391
|
+
* The object is reset to its initial state before being returned to the pool.
|
|
392
|
+
* @param {T} obj - The object to release.
|
|
393
|
+
*/
|
|
394
|
+
release(obj) {
|
|
395
|
+
if (!this.active.has(obj)) {
|
|
396
|
+
console.warn('ObjectPool: Attempting to release object not acquired from pool');
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
this.active.delete(obj);
|
|
400
|
+
this.reset(obj);
|
|
401
|
+
// Prevent pool from growing too large
|
|
402
|
+
if (this.pool.length < this.maxSize) {
|
|
403
|
+
this.pool.push(obj);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Releases all active objects back to the pool.
|
|
408
|
+
* Useful for batch cleanup at the end of a calculation or frame.
|
|
409
|
+
*/
|
|
410
|
+
releaseAll() {
|
|
411
|
+
this.active.forEach(obj => {
|
|
412
|
+
this.reset(obj);
|
|
413
|
+
if (this.pool.length < this.maxSize) {
|
|
414
|
+
this.pool.push(obj);
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
this.active.clear();
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Clears the entire pool and releases references.
|
|
421
|
+
* Should be called when the pool is no longer needed to prevent memory leaks.
|
|
422
|
+
*/
|
|
423
|
+
clear() {
|
|
424
|
+
this.pool.forEach(obj => this.dispose(obj));
|
|
425
|
+
this.active.forEach(obj => this.dispose(obj));
|
|
426
|
+
this.pool = [];
|
|
427
|
+
this.active.clear();
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Returns statistics about pool usage.
|
|
431
|
+
* @returns {{ pooled: number, active: number, total: number }} Usage statistics.
|
|
432
|
+
*/
|
|
433
|
+
getStats() {
|
|
434
|
+
return {
|
|
435
|
+
pooled: this.pool.length,
|
|
436
|
+
active: this.active.size,
|
|
437
|
+
total: this.pool.length + this.active.size
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Vector3 Object Pool
|
|
443
|
+
*
|
|
444
|
+
* @example
|
|
445
|
+
* ```typescript
|
|
446
|
+
* const pool = new Vector3Pool()
|
|
447
|
+
*
|
|
448
|
+
* const v = pool.acquire()
|
|
449
|
+
* v.set(1, 2, 3)
|
|
450
|
+
* // ... use vector ...
|
|
451
|
+
* pool.release(v) // Return to pool
|
|
452
|
+
* ```
|
|
453
|
+
*/
|
|
454
|
+
class Vector3Pool extends ObjectPool {
|
|
455
|
+
create() {
|
|
456
|
+
return new THREE__namespace.Vector3();
|
|
457
|
+
}
|
|
458
|
+
reset(obj) {
|
|
459
|
+
obj.set(0, 0, 0);
|
|
460
|
+
}
|
|
461
|
+
dispose(obj) {
|
|
462
|
+
// Vector3 has no dispose method, just dereference
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Box3 Object Pool
|
|
467
|
+
*
|
|
468
|
+
* @example
|
|
469
|
+
* ```typescript
|
|
470
|
+
* const pool = new Box3Pool()
|
|
471
|
+
*
|
|
472
|
+
* const box = pool.acquire()
|
|
473
|
+
* box.setFromObject(mesh)
|
|
474
|
+
* // ... use box ...
|
|
475
|
+
* pool.release(box)
|
|
476
|
+
* ```
|
|
477
|
+
*/
|
|
478
|
+
class Box3Pool extends ObjectPool {
|
|
479
|
+
create() {
|
|
480
|
+
return new THREE__namespace.Box3();
|
|
481
|
+
}
|
|
482
|
+
reset(obj) {
|
|
483
|
+
obj.makeEmpty();
|
|
484
|
+
}
|
|
485
|
+
dispose(obj) {
|
|
486
|
+
// Box3 has no dispose method
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Matrix4 Object Pool
|
|
491
|
+
*
|
|
492
|
+
* @example
|
|
493
|
+
* ```typescript
|
|
494
|
+
* const pool = new Matrix4Pool()
|
|
495
|
+
*
|
|
496
|
+
* const mat = pool.acquire()
|
|
497
|
+
* mat.copy(object.matrixWorld)
|
|
498
|
+
* // ... use matrix ...
|
|
499
|
+
* pool.release(mat)
|
|
500
|
+
* ```
|
|
501
|
+
*/
|
|
502
|
+
class Matrix4Pool extends ObjectPool {
|
|
503
|
+
create() {
|
|
504
|
+
return new THREE__namespace.Matrix4();
|
|
505
|
+
}
|
|
506
|
+
reset(obj) {
|
|
507
|
+
obj.identity();
|
|
508
|
+
}
|
|
509
|
+
dispose(obj) {
|
|
510
|
+
// Matrix4 has no dispose method
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* Quaternion Object Pool
|
|
515
|
+
*
|
|
516
|
+
* @example
|
|
517
|
+
* ```typescript
|
|
518
|
+
* const pool = new QuaternionPool()
|
|
519
|
+
*
|
|
520
|
+
* const quat = pool.acquire()
|
|
521
|
+
* quat.copy(camera.quaternion)
|
|
522
|
+
* // ... use quaternion ...
|
|
523
|
+
* pool.release(quat)
|
|
524
|
+
* ```
|
|
525
|
+
*/
|
|
526
|
+
class QuaternionPool extends ObjectPool {
|
|
527
|
+
create() {
|
|
528
|
+
return new THREE__namespace.Quaternion();
|
|
529
|
+
}
|
|
530
|
+
reset(obj) {
|
|
531
|
+
obj.set(0, 0, 0, 1);
|
|
532
|
+
}
|
|
533
|
+
dispose(obj) {
|
|
534
|
+
// Quaternion has no dispose method
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
/**
|
|
538
|
+
* Global singleton pools for convenience
|
|
539
|
+
* Use these for most common cases
|
|
540
|
+
*/
|
|
541
|
+
const globalPools = {
|
|
542
|
+
vector3: new Vector3Pool(200),
|
|
543
|
+
box3: new Box3Pool(50),
|
|
544
|
+
matrix4: new Matrix4Pool(50),
|
|
545
|
+
quaternion: new QuaternionPool(50)
|
|
546
|
+
};
|
|
547
|
+
/**
|
|
548
|
+
* Helper function to use pool with automatic cleanup
|
|
549
|
+
*
|
|
550
|
+
* @example
|
|
551
|
+
* ```typescript
|
|
552
|
+
* const result = withPooledVector3((v) => {
|
|
553
|
+
* v.set(1, 2, 3)
|
|
554
|
+
* return v.length()
|
|
555
|
+
* })
|
|
556
|
+
* ```
|
|
557
|
+
*/
|
|
558
|
+
function withPooledVector3(fn) {
|
|
559
|
+
const v = globalPools.vector3.acquire();
|
|
560
|
+
try {
|
|
561
|
+
return fn(v);
|
|
562
|
+
}
|
|
563
|
+
finally {
|
|
564
|
+
globalPools.vector3.release(v);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
function withPooledBox3(fn) {
|
|
568
|
+
const box = globalPools.box3.acquire();
|
|
569
|
+
try {
|
|
570
|
+
return fn(box);
|
|
571
|
+
}
|
|
572
|
+
finally {
|
|
573
|
+
globalPools.box3.release(box);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
function withPooledMatrix4(fn) {
|
|
577
|
+
const mat = globalPools.matrix4.acquire();
|
|
578
|
+
try {
|
|
579
|
+
return fn(mat);
|
|
580
|
+
}
|
|
581
|
+
finally {
|
|
582
|
+
globalPools.matrix4.release(mat);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
function withPooledQuaternion(fn) {
|
|
586
|
+
const quat = globalPools.quaternion.acquire();
|
|
587
|
+
try {
|
|
588
|
+
return fn(quat);
|
|
589
|
+
}
|
|
590
|
+
finally {
|
|
591
|
+
globalPools.quaternion.release(quat);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
480
595
|
/**
|
|
481
596
|
* ResourceManager
|
|
482
597
|
* Handles tracking and disposal of Three.js objects to prevent memory leaks.
|
|
@@ -538,8 +653,16 @@ class ResourceManager {
|
|
|
538
653
|
}
|
|
539
654
|
}
|
|
540
655
|
|
|
656
|
+
exports.Box3Pool = Box3Pool;
|
|
657
|
+
exports.Matrix4Pool = Matrix4Pool;
|
|
658
|
+
exports.QuaternionPool = QuaternionPool;
|
|
541
659
|
exports.ResourceManager = ResourceManager;
|
|
542
|
-
exports.
|
|
660
|
+
exports.Vector3Pool = Vector3Pool;
|
|
543
661
|
exports.enableHoverBreath = enableHoverBreath;
|
|
662
|
+
exports.globalPools = globalPools;
|
|
544
663
|
exports.initPostProcessing = initPostProcessing;
|
|
664
|
+
exports.withPooledBox3 = withPooledBox3;
|
|
665
|
+
exports.withPooledMatrix4 = withPooledMatrix4;
|
|
666
|
+
exports.withPooledQuaternion = withPooledQuaternion;
|
|
667
|
+
exports.withPooledVector3 = withPooledVector3;
|
|
545
668
|
//# sourceMappingURL=index.js.map
|
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","../../src/core/resourceManager.ts"],"sourcesContent":[null,null,null,null],"names":["THREE","EffectComposer","RenderPass","OutlinePass","ShaderPass","GammaCorrectionShader"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/core/hoverEffect.ts","../../src/core/postProcessing.ts","../../src/core/objectPool.ts","../../src/core/resourceManager.ts"],"sourcesContent":[null,null,null,null],"names":["THREE","EffectComposer","RenderPass","OutlinePass","ShaderPass","GammaCorrectionShader"],"mappings":"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"}
|