본문으로 건너뛰기

트렌딩 - GitHub 인기 레포 & HuggingFace 모델

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)를 하나의 바디에 할당할 수 있고 충돌 필터링과 센서 시스템을 통해 충돌 판정과 이벤트를 세밀하게 제어할 수 있다. 레이 캐스트와 쉐이프 캐스트, 오버랩 쿼리를 통해 물리 쿼리 기반 로직을 구현할 수 있다.

이미지 분석

Box3D 샘플 화면으로 보이는 대형 피라미드 구조의 바디 더미와 우측에 벤치마크/솔버 설정 패널이 포함된 스크린샷이다.
화면 중앙에 다수의 작은 박스로 구성된 대형 피라미드가 배치되어 있어 엔진의 다량 바디 처리 성능을 검증하는 벤치마크 장면임이 확인된다. 우측 패널에는 'Large Pyramid Benchmark'라는 텍스트와 시간 단계, 서브스텝, Hertz, workers 같은 솔버 관련 설정이 표시되어 있어 시뮬레이션 파라미터를 실시간으로 조정하며 성능을 측정하는 UI를 제공한다. 마우스 포인터와 일부 박스의 동적 위치 변화가 보이는 점으로 보아 이 이미지는 샘플 실행 화면을 캡처한 것이며 녹화 재생 및 벤치마크 인터페이스를 통한 디버깅·측정 목적임이 드러난다.

3.8k

STARS

139

FORKS

+255

TRENDING

0

조회수

watchers 3.8kopen issues 8MIT License

관련 토론

아직 관련 토론이 없습니다.

댓글

댓글을 작성하려면 로그인이 필요합니다.