"매 InstancedMesh의 진화형 — frustum culling, LOD, BVH, per-instance uniforms를 그대로 지원하는 instancing 솔루션". 매 three.js의 stock InstancedMesh가 모든 instance를 ALWAYS draw 하는 한계를 극복하기 위해 등장한 community library — agargaro/instanced-mesh가 매 2024-2026 사실상 표준으로 자리잡음.
매 핵심
매 stock InstancedMesh의 한계
매 frustum culling 부재 → off-screen instance도 GPU에 commit
매 per-instance visibility toggle 부재
매 LOD 미지원 — 매 distance 무관 동일 mesh draw
매 raycasting brute-force — 매 매 instance 매 triangle scan
매 InstancedMesh2 추가 기능
Per-instance frustum culling: 매 BVH 기반 fast cull
LOD groups: 매 distance threshold 별 다른 geometry
BVH acceleration: 매 raycast O(log n)
Per-instance uniforms: 매 색상/sprite frame/animation time 등
constlod=newInstancedMesh2(geoHigh,mat,{capacity: 5000});lod.addLOD(geoMid,mat,30);// 30 units 부터 mid mesh
lod.addLOD(geoLow,mat,100);// 100 units 부터 low mesh
lod.addShadowLOD(geoShadow,50);// shadow 용 별도 LOD
mesh.perObjectFrustumCulled=true;// default
mesh.sortObjects=true;// 매 transparent 매 back-to-front
매 raycasting BVH
mesh.computeBVH({margin: 0});constray=newTHREE.Raycaster();ray.setFromCamera(mouse,camera);consthits=ray.intersectObject(mesh);// hits[0].instanceId 매 정확한 instance
매 instance 제거
mesh.removeInstances([0,5,10]);// 매 batch 매 1 frame
mesh.computeBVH();// 매 dirty 면 rebuild