여러 인력을 처리 할 수있는 물리 엔진?


9

저는 주로 3 차원 중력으로 플레이 할 게임을 만들고 있습니다.

그것은 여러 행성 / 별 / 달이 현실적으로 행동하는 것을 의미하며, 중력장에서 경로 플롯과 경로 예측을 의미합니다.

Bullet , tokamak 또는 Newton 과 같은 다양한 물리 엔진을 살펴 보았지만 기본적으로 중력 엔진을 프레임 워크에서 다시 작성해야하기 때문에 적합한 것으로 보이지 않습니다.

당신은 서로에게 끌리는 여러 몸을 다룰 수있는 물리 엔진을 알고 있습니까?

핵심 물리학 인 장면 그래프 관리 나 렌더링이 필요하지 않습니다. (강체 동역학처럼 충돌 감지는 보너스가 될 것입니다).


내 배경은 물리학에 있으므로 Verlet 통합 또는 RK4 (또는 필요한 경우 오일러 통합)를 사용하는 엔진을 작성할 수는 있지만 기성품 솔루션에 훨씬 더 적응합니다.

[편집] : 이 멋진 있습니다 자원 에 대한 물리 시뮬레이션 N-신체 문제는 온라인과의 유래


7
단순히 Bullet을 사용하고 표준 중력을 선택 해제 할 수 없습니까? (예 : applyGravity 호출을 피하고, 제로 벡터로 setGravity 호출, BT_DISABLE_WORLD_GRAVITY ... 사용) 원하는 효과가 중력의 형태가된다고해서 "중력"API를 통해 달성 할 수있는 것은 아닙니다. 기본 물리 엔진.
Neverender

일종의 역 스프링을 사용할 수 있습니다
Roy T.

1
@RoyT. 스프링 자체는 d에 비례하는 힘을 갖는 반면 중력은 d ^ (-2) (d ^ (-1)도 아님)입니다. 두 가지 모두에서 궤도 를 얻을 수 있지만 특성이 매우 다릅니다. "엔진이 제공 한 거리 기반 구속 조건 사용"을 의미하는 경우, 반 제곱 구속 조건이 있으면 예입니다.
Kevin Reid

@KevinReid 당신이 옳을 지 모르지만 나는 당신의 설명을 확신하지 못합니다. 스프링 력이 거리에 따라 선형이고 중력이 제곱에 의존한다는 것을 의미합니까?
Roy T.

1
Osmos는 훌륭한 작은 게임입니다. 내가 찾은 최고는 인터뷰 였습니다
brice

답변:


2

세 가지 신체 문제 로 인해 안정적인 궤도를 허용하지 않기 때문에 기존의 타임 슬라이스 물리 엔진을 사용할 수 있다고 생각하지 않습니다 .

물리 엔진을 스텔라 리움이나 다른 천문학 패키지에서 빼낼 수 있습니다.

그러나 최선의 행동 방법은 단순히 지구의 경로를 굽고 테이블에서 꺼내는 것입니다. 플레이어가 자신의 행동으로 행성의 궤도에 실제로 영향을 줄 수 없다면 전체 시뮬레이션을 수행 할 필요는 없습니다.


실제로, N-body 문제로 안정된 궤도를 얻을 수 있습니다 . 통합 방법에 따라 다릅니다. 나는 verlet과 RK4로 안정적인 궤도를 관리했습니다.
brice

경로를 미리 계산하는 것이 공정한 제안이지만 즉시 시스템을 동적으로 생성하고 싶습니다. 또한 행성은 실제로 내가 걱정하는 것이 아닙니다. 실제로 배가 중력의 영향을 받기를 원하며 , 플레이어가 통제 할 수 있기 때문에 경로를 미리 계산할 수 없습니다.
브라이스

기록을 위해 안정적인 궤도를 얻는 방법은 대칭 시스템을 만드는 것입니다. 또한 불안정에 대한 시간 척도는 평균 게임 길이보다 훨씬 길다. (100에서 1000까지의 행성 궤도는 불안정하지만 게임은 4/5보다 오래 지속되지 않습니다)
brice

안정적인 궤도의 예를 들어, 한 번 봐 가지고 (Verlet 사용)
브라이스

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.