데브허브 | DEVHUB | R3F Cookbook : Bvh 컴포넌트
- BVH(Bounding Volume Hierarchy)는 메시의 삼각형들을 계층적 바운딩 볼륨 구조로 구성하여 매우 빠른 공간 탐색을 가능하게 하는 자료 구조입니다. 🌳
- BVH를 사용하지 않을 경우, 수백만 개의 삼각형으로 구성된 모델에서 특정 지점에 가장 가까운 삼각형을 찾으려면 수백만 번의 거리 계산이 필요하여 성능 저하를 초래합니다. 🐢
- BVH는 전체 메시를 포함하는 최상위 바운딩 박스부터 시작하여, 삼각형들을 고르게 나누어 재귀적으로 더 작은 바운딩 박스들로 분할하며 계층 구조를 생성합니다. 🏗️
- 이 계층 구조를 통해 특정 지점을 포함하는 가장 작은 바운딩 박스를 빠르게 찾아내고, 해당 박스에 속한 소수의 삼각형에 대해서만 거리 계산을 수행하여 탐색 속도를 획기적으로 향상시킵니다. 🚀
- R3F의 BVH 컴포넌트는 복잡한 BVH 자료 구조를 모델을 자식으로 감싸는 것만으로 쉽게 적용할 수 있게 해줍니다. ✨
- 실습 예시에서 100만 개 이상의 삼각형을 가진 모델에 마우스 커서를 올렸을 때, BVH 미적용 시 빨간색 구가 끊기며 느리게 움직였으나, BVH 적용 후에는 끊김 없이 빠르게 위치하는 것을 확인했습니다. 🔴💨
- BVH 컴포넌트는
firstHitOnly (첫 교차 지점만 계산), enabled (BVH 활성화/비활성화), maxDepth (계층 최대 높이), maxLeafTris (리프 박스의 최대 삼각형 수)와 같은 다양한 옵션을 제공합니다. ⚙️
- R3F는 이처럼 간단한 컴포넌트 적용만으로 복잡한 기능을 쉽게 추가할 수 있는 큰 장점을 가지고 있습니다. 🧩