erincatto/box3d
C0 / 0
Box3D는 C17로 작성된 크로스플랫폼 3D 물리 엔진으로 연속 충돌 감지와 데이터 지향 설계로 대규모 물체 시뮬레이션 성능을 제공한다.
TL;DR
Box3D는 C17로 작성된 크로스플랫폼 3D 물리 엔진으로 연속 충돌 감지와 로버스트한 Soft Step 솔버를 통해 고속 이동체와 복잡한 제약을 안정적으로 처리한다. 데이터 지향 설계와 멀티스레딩 및 SSE2/Neon SIMD 최적화를 적용해 대량의 바디를 효율적으로 시뮬레이션하도록 설계되었고 아일랜드 기반 슬립과 녹화·재생 기능을 통해 성능과 디버깅을 지원한다. 빌드와 통합은 CMake 프리셋, FetchContent, add_subdirectory, find_package 방식으로 유연하게 가능하며 Windows, Linux, macOS 샘플이 제공되어 엔진 동작을 즉시 검증할 수 있다. 제약으로는 샘플 빌드를 위해 C++20 컴파일러가 필요하고 플랫폼별 SIMD 의존성이 있으므로 타깃 환경의 컴파일러와 SIMD 지원 여부를 확인해야 한다.
핵심 포인트
- 데이터 지향 설계와 C17 기반의 포터블 구현을 결합하여 낮은 레벨의 성능 제어가 가능하다. 이 설계는 SIMD와 멀티스레딩을 효과적으로 활용할 수 있게 하여 대량의 객체를 처리하는 시나리오에서 성능 우위를 제공한다. Box3D는 이 점을 README에서 명시하며 대형 바디 더미에 최적화되었다고 표기하고 있다.
- 로버스트한 Soft Step 솔버를 채택하여 충돌 및 제약 조건 해결 시 수치적 안정성을 우선시한다. 이 접근은 전형적인 직접 해법보다 더 강건한 시간적 수렴을 목표로 하며 빠른 회전과 이동에 취약한 전통적 기법의 문제를 완화한다. 결과적으로 격렬한 상호작용이 많은 장면에서 물리적 발산을 억제하는 효과가 있다.
- 샘플 앱은 sokol과 ImGui를 활용해 플랫폼별 렌더링과 GUI를 통합한 데모를 제공하므로 엔진 통합 및 시각적 디버깅이 빠르게 가능하다. 빌드 프리셋과 플랫폼별 실행 경로가 제공되어 Windows, Linux, macOS에서 일관된 샘플 실행 흐름을 유지할 수 있다. 또한 설치형과 소스형 통합 양쪽을 모두 지원해 사용자가 원하는 통합 방식을 선택할 수 있다.
- 충돌 관련 기능으로 연속 충돌 감지와 접촉 이벤트 처리를 제공하며, 볼록 껍질과 캡슐, 구, 삼각형 메시, 하이트필드 등 다양한 형태의 충돌체를 지원한다. 여러 형태(shape)를 하나의 바디에 할당할 수 있고 충돌 필터링과 센서 시스템을 통해 충돌 판정과 이벤트를 세밀하게 제어할 수 있다. 레이 캐스트와 쉐이프 캐스트, 오버랩 쿼리를 통해 물리 쿼리 기반 로직을 구현할 수 있다.
이미지 분석

3.8k
STARS
139
FORKS
+255
TRENDING
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.