--- id: [[P-Reinforce|P-Reinforce]]-AUTO-D211FC category: Unified confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - BVH" --- # [[BVH|BVH]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > BVH(Bounding Volume Hierarchy)๋Š” 3D ํ™˜๊ฒฝ์—์„œ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๋ ˆ์ด์บ์ŠคํŒ…([[Raycasting|Raycasting]]), ์ ˆ๋‘์ฒด ์ปฌ๋ง([[Frustum Culling|Frustum Culling]]) ๋ฐ ๊ณต๊ฐ„ ์งˆ์˜(Spatial Queries)๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ •๊ตํ•œ ๊ณต๊ฐ„ ๋ถ„ํ•  ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค [1, 2]. ์ด๋Š” ๋ Œ๋”๋ง, ์กฐ๋ช… ๋ฐ ๊ทธ๋ฆผ์ž ์—ฐ์‚ฐ, ์ถฉ๋Œ ์ฒ˜๋ฆฌ, ์ž์‚ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ๋กœ๋”ฉ ๋“ฑ ๊ด‘๋ฒ”์œ„ํ•œ ์ตœ์ ํ™”๋ฅผ ์ฃผ๋„ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค [3]. Three.js ์ƒํƒœ๊ณ„์—์„œ๋Š” ์ฃผ๋กœ ๋Œ€๊ทœ๋ชจ ํด๋ฆฌ๊ณค์ด๋‚˜ ๋ณต์žกํ•œ ์ธ์Šคํ„ด์Šค ์”ฌ์—์„œ์˜ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [1, 4]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ๊ณ ์† ๋ ˆ์ด์บ์ŠคํŒ…:** BVH๋Š” ๋ณต์žกํ•œ ๊ธฐํ•˜ํ•™์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋Œ€ํ™”ํ˜• ์”ฌ์—์„œ ๋ ˆ์ด์บ์ŠคํŒ…์„ ๊ฐ€์†ํ™”ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์š”์†Œ์ž…๋‹ˆ๋‹ค [4]. `[[three-mesh-bvh|three-mesh-bvh]]` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ 60fps ํ™˜๊ฒฝ์—์„œ 8๋งŒ ๊ฐœ ์ด์ƒ์˜ ํด๋ฆฌ๊ณค์— ๋Œ€ํ•œ ๋ ˆ์ด์บ์ŠคํŒ…์„ ๋ณ‘๋ชฉ ์—†์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 5]. - **๋Œ€๊ทœ๋ชจ ์”ฌ์˜ ๊ณต๊ฐ„ ๋ถ„ํ• ([[Spatial Partitioning|Spatial Partitioning]]):** BVH๋Š” ๊ณต๊ฐ„ ๋ถ„ํ•  ๋ฐ ์ธ๋ฑ์‹ฑ(Indexing) ์Šคํ‚ค๋งˆ๋ฅผ ํ†ตํ•ด CPU ์ธก์˜ ์—ฐ์‚ฐ ๋ถ€๋‹ด์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค [3, 6]. ์ˆ˜๋งŒ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์”ฌ์—์„œ ๊ฒน์ณ ์žˆ๊ฑฐ๋‚˜ ๊ฐ€๋ ค์ง„ ๊ฐ์ฒด๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ์„ ํƒ(Lasso Selection ๋“ฑ)ํ•˜๋ ค๋ฉด BVH์™€ ๊ฐ™์€ ๊ณต๊ฐ„ ๋ถ„ํ•  ์ž๋ฃŒ๊ตฌ์กฐ ๊ตฌ์ถ•์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [2]. - **[[InstancedMesh|InstancedMesh]]์™€์˜ ํ†ตํ•ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜:** ๊ธฐ๋ณธ์ ์œผ๋กœ `three-mesh-bvh`๋Š” `InstancedMesh` ๋‚ด์˜ ๊ฐœ๋ณ„ ๊ธฐํ•˜ํ•™์  ๊ตฌ์กฐ(Geometry)์— ๋Œ€ํ•œ BVH ๊ธฐ๋ฐ˜ ๋ ˆ์ด์บ์ŠคํŒ…์€ ์ง€์›ํ•˜์ง€๋งŒ, ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๋“ค์˜ ์ „์ฒด ์ง‘ํ•ฉ ์ž์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค [7, 8]. ๊ทธ๋Ÿฌ๋‚˜ `[[InstancedMesh2|InstancedMesh2]]`์™€ ๊ฐ™์€ ํ™•์žฅ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ๋‚ด๋ถ€์ ์œผ๋กœ BVH ๊ณต๊ฐ„ ์ธ๋ฑ์Šค(Spatial Index)๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ, ์ธ์Šคํ„ด์Šค ๋‹จ์œ„์˜ ๋น ๋ฅธ ๋ ˆ์ด์บ์ŠคํŒ…๊ณผ ๊ฐœ๋ณ„ ์ ˆ๋‘์ฒด ์ปฌ๋ง(Frustum Culling)์„ ํšจ๊ณผ์ ์œผ๋กœ ์ง€์›ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค [9-12]. - **API ๋ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ:** ๊ฐœ๋ฐœ ์‹œ BVH์˜ ๋ฐ”์šด๋”ฉ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๊ณผ๊ฑฐ์— ์‚ฌ์šฉ๋˜๋˜ `MeshBVHVisualizer` ํด๋ž˜์Šค๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ(deprecated), ์ตœ์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” `MeshBVHHelper`์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค [8, 13]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Raycasting|Raycasting]], Frustum Culling, [[InstancedMesh|InstancedMesh]], Spatial Indexing - **Projects/Contexts:** [[three-mesh-bvh|three-mesh-bvh]], [[InstancedMesh2|InstancedMesh2]] - **Contradictions/Notes:** ๊ธฐ๋ณธ `three-mesh-bvh` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ์œผ๋กœ๋Š” `InstancedMesh`์˜ ์ „์ฒด ์ธ์Šคํ„ด์Šค ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ๊ณต๊ฐ„ ์กฐํšŒ๊ฐ€ ์ œํ•œ์ ์ด๋ผ๋Š” ์ ์ด ์ง€์ ๋˜์ง€๋งŒ [7], ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ฐœ๋ฐœ๋œ `InstancedMesh2` ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ BVH ๊ณต๊ฐ„ ์ธ๋ฑ์Šค๋ฅผ ๋‚ด์žฅํ•จ์œผ๋กœ์จ ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๊ทน๋ณตํ•˜๊ณ  ์ „์ฒด ์ธ์Šคํ„ด์Šค์˜ ๋น ๋ฅธ ์ปฌ๋ง ๋ฐ ๋ ˆ์ด์บ์ŠคํŒ…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค [10, 12]. --- *Last updated: 2026-04-19* ---