0728

2026년 7월 28일

0728.gif

3D 물리엔진인, Bullet 3 를 통합해 보았다.


RigidBody3D 라는 오브젝트를 정의하고,

btRigidBody* 핸들을 들고서

virtual void set_world_position()

virtual void set_orientation()

이 2개로 위치 / 회전을 주면

불렛의 핸들에게도 동기화되도록 하였다.


btCollisionWorld* 나 다른 전역 설정들은

Scene단에 있게 하였다.


이제 물리 스레드를 나눈 후에,

물리용 Transform3D / 오브젝트용 Transform3D 두 개를 만들고

동기화 시점에 오브젝트용 트랜스폼을 덮어쓰면서

std::vector<PhysicsCommand> 를 채워서

물리스레드에다가 여러 요청을 날릴 수 있게 해야 한다.


물리엔진을 통합하면 해야 하는 게 꽤나 많아진다.

기본적으로 BVH 프리미티브 마우스 피킹이 필요하고,

meshoptimizer 같은 걸로

콜리젼 셰이프를 구울 수도 있어야한다.

래그돌같은 걸 추가하면

오브젝트도 여러개 정의해줘야 한다.


불렛이 브로드페이즈를 어디까지 지원하는지는 모르겠지만,

플레이어 1명 기준으로

거리에 따라서 걸러내는 기능이 있을 것이다.