2D 입자를 유체로 렌더링하는 방법은 무엇입니까?


45

물과 같은 유체를 시뮬레이션하기 위해 2D 입자를 이동시키는 좋은 방법이 있다고 가정합니다. 렌더링 방법에 대한 아이디어가 있습니까?

이것은 2D 게임을위한 입니다. 물은 넘어져서 다른 물체와 상호 작용하기 위해 깨질 수있는 상자에 담겨 있습니다. 내 마음에 오는 가장 간단한 방법은 각 입자에 작은 이미지를 사용하는 것입니다. 물을 렌더링하는 더 많은 방법을 듣는 데 관심이 있습니다.

답변:


28

GDC2010의 프레젠테이션 (PDF) 에서 PixelJunk Shooter (시뮬레이션 포함)가 어떻게 수행했는지 확인하십시오 .


PixelJunk 슈터 이미지 샘플


1
PixelJunk를 몰랐습니다 ... 정말 좋은 대가입니다. 감사합니다!
luke

링크 : 트레일러에
데이비드 Gouveia의


SPU, PPU, SPURS 란 무엇입니까?
Martijn Courteaux

@MartjinCourteaux : 그들은 PS3의 Cell CPU의 일부입니다. 몇 가지 중요한 차이점이 있지만 GPU 쉐이더로 생각하십시오.
Sean Middleditch

12

게임에 완전히 시뮬레이션 된 물이 필요한 경우 George Duckett의 대답은 훨씬 더 직접적이고 잘 표현됩니다. 정확도가 가장 낮은 (물리적 현실감, 장난기있는) 얕은 물 물리 시뮬레이션의 경우이 이미지는 다음과 같은 놀라운 선명도를 제공했습니다.

http://www.patrickmatte.com/stuff/physicsLiquid/


간단하고 좋은! 그런 간단한 사후 처리 단계를 사용하지 않았다 ... 아이폰과 같은 기기가 이것을 처리 할 수 ​​있을지 궁금하다. 좋은 출발점이 될 것 같습니다. 고마워.
luke

나는이 접근법을 보증 할 수있다. 프로젝트에서 한 번 사용했는데 아름답게 작동했습니다. 경사 필터를 추가하면 얼룩에도 멋진 반월 상 연골이 생길 수 있습니다.
scriptocalypse 2018

슈퍼 쿨! 그러나 나는 그것을 통해 걷는 캐릭터를 얼마나 잘 수용 할 수 있는지 잘 모르겠습니다. 그것은 모든 구체를 한쪽으로 밀지 않겠습니까?
Max

6

또는 빠르고 쉬운 방법으로 metaball을 사용하십시오 !

3D 메타 볼


5

그랜트 콧 (Grant Kot) 은 자바 스크립트 (캔버스)와 OpenFrameworks를 사용한 C ++로 구현 된 유체 시뮬레이션 코드를 Github에 추가했습니다. https://github.com/kotsoft

그는 자신의 YouTube 계정에 대한 몇 가지 데모를 가지고 있습니다 : http://youtu.be/HqWheJSEiaw

나는 그것이 어떻게 작동하는지 모른다. 그러나 나는 그것이 빨리 실행되고 그것을 가지고 모든 종류의 변형이 있다는 것을 알고있다. 검색하기에 좋은 키워드는 "멀티 그리드 입자"일 수 있습니다.


Grant Kot이 유체를 시뮬레이션하는 방법을 정말 좋아합니다! 최소한 해당 웹 페이지의 애플릿에서 렌더링이 최소 인 경우에도 마찬가지입니다. 시뮬레이션을 제어하기 위해 많은 파레 미터로 사용됩니다. 더 자세히 살펴볼 가치가 있습니다. 고마워.
luke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.