2012-12-09 4 views
5

2D 게임에서 실제 유체 (물)를 만들려고합니다. 이 게임은 Terraria와 비슷합니다. 나는 장면에서 충돌하는 입자들을 어떻게 때 리고 그것 위에 렌더링하고 현실감 넘치는 연기 물을들을 수 있는지에 대해 들었습니다.타일 맵 2D 현실적인 유체 물리학

Terraria는 내가 좋아하는 타일이 아닌 물을 사용합니다. 나는 더 진보 된 것을 원합니다.

글 머리 기호 3D 물리학을 사용하려고 생각했습니다 (box2d에는 내가 쳤을 한계가 있습니다). 비 충돌 입자 효과의 경우 SPARK와 같은 것을 사용하려고 생각하고 있습니다. 두 세계에서 최고의 성능을 제공한다고 생각하기 때문입니다.

내가 생각하고있는 문제는 각 블록이 16x16이므로 1600x900 장면에 약 5 천 개의 타일이 있다는 것입니다.

그래서 물리 엔진에이 타일들이 충돌 가능하다는 것을 알려줄 필요가 있습니다. 물론, 무의미한 것으로 간주되는 void 타일이 있습니다.

누구에게도 아이디어가 있습니까? 언어는 C++이지만 관련성은 의심 스럽습니다.

편집 : 나는 동굴에 있어야하고 그리드 기반의 물을 사용해야 할 것이라고 생각합니다. 나는 회귀 입자 기반으로 모든 것을 더 어렵게 만들지 만 어떤 이득을 얻었 을까?

답변

1

귀하의 질문은 타일이 붙어있는 유체에 관한 것이지만 실제로 입자 기반 접근법에 대해 묻고있는 것 같습니다.

그런 경우, "Smoothed Particle Hydrodynamics"또는 SPH가 실시간 상황에서 2D 및 3D 유체 시뮬레이션을 위해 널리 사용되는 기술입니다.

그렇습니다. 기본적으로 입자 시스템은 각 입자가 환경 (중력, 충돌 등)의 힘에 합당한 (수학적으로 안정한) 방식으로 반응하고 특정 거리를 유지해야한다는 제약 조건과 결합됩니다 유체가 비압축성 이도록 분리시킨다.

입자가 충분하면 입자를 포인트로 렌더링하거나 표면을 유도하기위한 소스로 사용할 수 있습니다 (예 : marching-cubes를 사용하여 2D에서 그래도 걱정하지 않음) .

http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics

IT는 GPU에 가속화 실제로 상대적으로 코드를 쉽고되는 장점이 있습니다.

실은 타일 기반 접근법을 시도하는 것보다 더 나은 접근 방법이라고 생각합니다. 스프레이 발로 걷기, 물체의 가장자리에 부딪히는 파도 등 흥미로운 결과를 얻을 수 있습니다. 기쁘게 일하는 것을 얻기가 너무 어렵습니다.

+0

흠 ... 나는 당신이 나를 이것으로 재 해석하게 만들 것 같아, hehe. 그래도 정교하게 만들 수 있니? 입자가 타일 맵과 충돌하게 만드는 방법에 대한 아이디어를주지 않았습니다. 또한, 어떤 종류의 라이브러리가 있을까요? 이 수학을 직접 구현할 수있는 방법은 없습니다. 특히 다른 사람들이 더 잘할 수있을 때 말이죠. – user148459

+0

또한 SPH에는 어떤 대안이 있습니까? 이것은 SPH가 과도한 느낌을 주므로 입자 시뮬레이터가 아닌 2D 게임이라는 것을 기억하십시오. – user148459

+0

현실적인 유체를 원한다면 아마도 가장 간단한 방법 중 하나 일 것입니다. 그것이 과잉이라고 생각한다면 아마도 유체 같은 많은 옵션이 없을 것입니다. – JasonD