2012-03-07 2 views
0

일반적인 지식에 관심이 있고 특정 문제에 답변하지 않는 문제에 대한 답변을 제공하는 일반적인 질문입니다.물리적 엔진을 생성하는 방법은 무엇입니까

개체가 서로 그리고 외부 힘과 상호 작용하는 실제 엔진을 구현하는 데 사용할 수있는 방법이 무엇일까 궁금합니다. 예를 들어 Angry Birds 나 TIM과 같은 게임을 살펴볼 수 있습니다. 공기를 통해 "날아가는"물체가 서로 충돌하고 상호 작용하며 중력, 바람 및 기타 "힘"과 같은 환경의 잠재력에 영향을받습니다.

제가 생각한 모델은 각 객체가 (어떤 클래스의 객체로서) 객체와 그것에 관련된 스레드를 가지고 있다는 것입니다. 각 시간 슬롯은 스레드가 일부 작은 dt의 공간에서 오브젝트를 "전진"시킵니다. 이 경우 공간에서 위치를 얻고 환경 잠재력에 의해 적용되는 동등한 힘을 줄 수있는 "환경"객체를 가질 수 있습니다. 내가 정확히 얻을 수없는 것은 객체가 서로 어떻게 상호 작용 하는가하는 것입니다.

또한 내 방향을 닫습니까? 이러한 문제에 대한 다른 솔루션과 모델이 있습니까? 내가 놓친 것들은 무엇입니까 (나는 몇 가지를 놓치고 있어야합니다)?

+0

운동을 묘사하는 방정식은 기계 물리학에 속하며 벡터 수학을 이해하면 매우 간단합니다. 게임 엔진의 작동 원리는 무엇인가 설명했습니다. "객체가 어떻게 상호 작용하는지"에 관해서는, 당신은 [충돌 탐지] (http://en.wikipedia.org/wiki/Collision_detection)에 대해 묻고있는 것처럼 들립니다. 이 질문은 "웹 사이트는 어떻게 만들어 졌습니까?"와 같이 광범위하기 때문에 나는 투표를 끝내겠다고 투표하고 있습니다. - 책을 쓰지 않고 대답 할 수있는 방법이 없으며, 그 답은 유용한 콘텐츠가 없다는 극단적 인 상황을 일반화하는 것입니다. –

+0

내가 원하는 것은 일반화 된 대답이다. 나는 문제의 실제적인 사용이 없다고 말했다. 그리고 물리학이 어떻게 작동하는지 이해하고, 두 몸체 사이의 충돌을 감지하는 방법을 설명합니다. 모든 신체에 충돌 감지 절차를 실행하는 메커니즘과이를 관리하고 가능한 작업 수를 최소화 할 수있는 방법에 관심이 있습니다. 나는이 문제의 주요 포인트가 큰 신체 수 환경에서 충돌 체크 절차를 최적화하는 방법이라고 생각한다. – SIMEL

+1

http://en.wikipedia.org/wiki/Collision_detection#Optimization –

답변

2

구현은 일반적으로 사용자가 설명하는 것과 같지 않습니다. 이는 너무 비쌉니다. 대신 모든 것이 행렬 변환으로 축소됩니다. 점은 다음 시간 간격으로 업데이트하는 행렬에 의해 연산되는 좌표 목록입니다. 행렬은 그 자체로 물리학으로부터 계산됩니다 (그것들은 그 순간에 힘의 선형 솔루션입니다).

규모가 매우 다르면 (예 : 은하계의 별을 시뮬레이션 할 때) 상황이 더 복잡해집니다. 비판적인 포인트보다 비판적인 포인트 (예 : 빠른 이동 또는보다 정확하게, 강하게 가속)가 자주 업데이트되도록보다 계층적인 접근법을 사용할 수 있습니다. 하지만 그때조차도 메모리 내 표현은 매우 추상적이어서 "한 객체 당 하나의 객체"와 같이 직접적인 것이 아닙니다.

관련 문제