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