--- id: P-REINFORCE-AUTO-68A235 category: "10_Wiki/πŸ’‘ Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Bounding Volume Hierarchy (BVH)" --- # [[Bounding Volume Hierarchy (BVH)|Bounding Volume Hierarchy (BVH)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > 지식 μš”μ•½ 정보 μΆ”μΆœ 쀑... ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **λΉ λ₯Έ λ ˆμ΄μΊμŠ€νŒ…κ³Ό 곡간 쿼리:** `three-mesh-bvh`와 같은 κ΅¬ν˜„μ²΄λŠ” Three.js ν™˜κ²½μ—μ„œ 8만 개 μ΄μƒμ˜ 폴리곀에 λŒ€ν•œ λ ˆμ΄μΊμŠ€νŒ…μ„ 60fps의 μ†λ„λ‘œ μ›ν™œν•˜κ²Œ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€ [4]. μ΄λŠ” λ³΅μž‘ν•œ μ§€μ˜€λ©”νŠΈλ¦¬λ₯Ό κ°€μ§„ μΈν„°λž™ν‹°λΈŒ μ”¬μ΄λ‚˜ λ‹€μˆ˜μ˜ λ ˆμ΄μΊμŠ€νŠΈκ°€ λ°œμƒν•˜λŠ” μƒν™©μ—μ„œ μ„±λŠ₯ μ €ν•˜λ₯Ό λ°©μ§€ν•˜λŠ” κ°•λ ₯ν•œ μˆ˜λ‹¨μž…λ‹ˆλ‹€ [4, 7]. - **효율적인 곡간 λΆ„ν• κ³Ό 포괄적 μ΅œμ ν™”:** 잘 μ„€κ³„λœ BVH μŠ€ν‚€λ§ˆλŠ” 곡간을 효율적으둜 λΆ„ν• ν•˜κ³  μΈλ±μ‹±ν•˜μ—¬, λ Œλ”λ§λΏλ§Œ μ•„λ‹ˆλΌ μ‘°λͺ… 및 그림자 계산, 좩돌 감지(Collisions), 그리고 μ—μ…‹μ˜ λ‹€μš΄λ‘œλ“œμ™€ λ©”λͺ¨λ¦¬ λ‘œλ”© 및 폐기에 이λ₯΄λŠ” μ „λ°©μœ„μ μΈ μ΅œμ ν™”λ₯Ό 주도할 수 μžˆμŠ΅λ‹ˆλ‹€ [3]. 특히 정적인(static) 객체에 λŒ€ν•΄ μ΄ˆκΈ°ν™” μ‹œμ μ— BVHλ₯Ό 계산해두면, CPU μ—°μ‚° λ‹¨κ³„μ—μ„œ ν•΄λ‹Ή 객체듀을 화면에 그릴지(Culling) μ—¬λΆ€λ₯Ό κ·Ήλ„λ‘œ λΉ λ₯΄κ³  효율적으둜 νŒλ³„ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [6, 8]. - **InstancedMesh ν™˜κ²½μ—μ„œμ˜ 적용:** μΈμŠ€ν„΄μ‹± 기술(예: `InstancedMesh2` 라이브러리)에 BVH ν˜•νƒœμ˜ 곡간 인덱슀λ₯Ό κ²°ν•©ν•˜λ©΄ κ°œλ³„ μΈμŠ€ν„΄μŠ€μ— λŒ€ν•œ 맀우 λΉ λ₯Έ λ ˆμ΄μΊμŠ€νŒ…κ³Ό ν”„λŸ¬μŠ€ν…€ 컬링을 κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [5, 9, 10]. κΈ°μ‘΄ `InstancedMesh` μžμ²΄μ— λŒ€ν•΄μ„œλŠ” 전체 μΈμŠ€ν„΄μŠ€ μ„ΈνŠΈκ°€ μ•„λ‹Œ λ‚΄λΆ€μ˜ κ°œλ³„ μ§€μ˜€λ©”νŠΈλ¦¬ λ‹¨μœ„λ‘œ BVH 기반 λ ˆμ΄μΊμŠ€νŒ…μ„ μˆ˜ν–‰ν•˜λ―€λ‘œ, μ§€μ˜€λ©”νŠΈλ¦¬μ— λŒ€ν•œ λ°”μš΄λ“œ 트리(bounds tree)λ₯Ό μƒμ„±ν•˜μ—¬ μ μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€ [11, 12]. - **λ„μž… μ‹œμ˜ 기술적 λ‚œμ œμ™€ νŠΈλ ˆμ΄λ“œμ˜€ν”„:** λŒ€κ·œλͺ¨ μΈμŠ€ν„΄μŠ€ μ”¬μ—μ„œ μ—¬λŸ¬ 객체가 겹쳐 μžˆκ±°λ‚˜ κ°€λ €μ§„ 객체λ₯Ό μ •λ°€ν•˜κ²Œ 선택(GPU Picking의 ν•œκ³„ 극볡)ν•˜κΈ° μœ„ν•΄μ„œλŠ” BVH와 같은 μ •κ΅ν•œ 곡간 λΆ„ν•  자료ꡬ쑰λ₯Ό λ³„λ„λ‘œ ꡬ좕해야 ν•©λ‹ˆλ‹€ [2]. ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ κ³ λ„ν™”λœ 자료ꡬ쑰λ₯Ό μΆ”κ°€λ‘œ κ΅¬μΆ•ν•˜λŠ” 과정은 `InstancedMesh`κ°€ 본래 μ œκ³΅ν•˜λŠ” 'μ‚¬μš©μ˜ λ‹¨μˆœν•¨'μ΄λΌλŠ” μž₯점을 ν‡΄μƒ‰μ‹œν‚¬ 수 μžˆλ‹€λŠ” ꡬ쑰적 ν•œκ³„λ₯Ό λ™λ°˜ν•©λ‹ˆλ‹€ [2]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Graphics & Performance λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[Raycasting|Raycasting]], [[Frustum Culling|Frustum Culling]], [[InstancedMesh|InstancedMesh]], [[Spatial Partitioning|Spatial Partitioning]] - **Projects/Contexts:** [[three-mesh-bvh|three-mesh-bvh]], [[InstancedMesh2|InstancedMesh2]] - **Contradictions/Notes:** BVH λͺ¨λΈμ„ μ”¬μ—μ„œ 직접 μ‹œκ°ν™”ν•˜μ—¬ ν™•μΈν•˜κ³ μž ν•  λ•Œ, μ΅œμ‹  라이브러리 ν™˜κ²½μ—μ„œλŠ” 기쑴에 μ‚¬μš©λ˜λ˜ `MeshBVHVisualizer`κ°€ 더 이상 μ§€μ›λ˜μ§€ μ•ŠμœΌλ―€λ‘œ(deprecated) λ°˜λ“œμ‹œ λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ—¬ `MeshBVHHelper`λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€ [12]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/Bounding Volume Hierarchy (BVH).md ---