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


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.