반응형

http://topnanis.tistory.com/161



물리엔진이란 - 오브젝트를 대상으로 질량, 속도, 마찰, 유체저항 등의 수치를 이용하여 뉴턴역학 모델을 시뮬레이트 하는 프로그램을 통칭하며 자연계의 물리 현상을 프로그램 내에서 시뮬레이트 하는 프로그램 라이브러리입니다.

에이지 오브 엠파이어시리즈에선 3 부터 였죠. 물리엔진이 도입되면서 대포알 각도와 힘에 따라 사람이나 건물 파편이 늘 다르게 튕기는 모습이 연출되어 넋을 잃고 대포를 쏘던 기억이 나네요. 게임의 감초역할을 하는 물리엔진은 적소에 잘 쓴다면.. 빛이 반짝반짝 난답니다(생각보다는 활용도가 높진 않더라구요) 

여기에서는 공개된 대표적인 물리엔진인 Erin Catto님의 Box2d로 설명하겠습니다. (참고로 저희 과제중에 블럭마스터(http://topnanis.tistory.com/91)가 이 라이브러리를 사용했습니다. 그땐 C#에서 했었는데. 자바에서도 오브젝티브c에서도 각각의 버젼이 나와 있을정도로 보편적입니다)




물론 복잡한 것이 아니라면 손코딩으로 흉내를 낼수 있겠지만 [조인트]나, [충돌] 등의 복잡함이 추가된다면 엔진을 사용하는 것이 훨씬 편리하고 정확한 값을 얻을 수 있습니다. 만약 도형이 시간에 따라 아래로 일정하게 떨어지는 프로그램이 있다면 box2D hello world 프로그램에서는 가속도를 붙이며 떨어지는 모습을 볼수 있습니다.

기본프로그램에서는 좌표값과 앵글이 숫자로만 표시되지만 약간 변형하여 바람(가로중력)에 따라 문자열이 날리며 떨어지는 모습을 구현하도록 할께요. 
제목은.. box2D in fall 로 하겠어요 :)

초기 환경 설정이 약간 까다로워 물리엔진을 쓰지 못하는 분들을 위해 글을 적어야 겠다고 생각했답니다. 환경설정은 게임프로그래밍의 대가 게미조아님이 알려주신거예요. 다른 방법은 에러가 나더라구요. 꼭 이렇게 해보세요.

 
1. 우선 http://code.google.com/p/box2d/downloads/list 로 가서 Box2D_v2.2.1.zip를 받습니다.



lib파일을 사용하기 위해 우선 빌드를 시켜야 합니다.

2. 압축을 풀어 ./Box2D_v2.2.1/Build/vs2010.sln를 실행한뒤,  디버깅모드로 한번, 릴리즈모드로 한번 컴파일을 시킵니다.



그러면 로딩이 걸리면서 빌드가 되고 오른쪽 아래와 같이 폴더 안에 .lib 파일이 각각 생겨납니다. (에러는 무시하셔두 됩니다) 이 경로를 프로젝트 lib링크를 위해 메모장에 기억해둡니다.(간단하게 이(bin)폴더를 c:\에 옮겨두셔두 좋겠죠)


3. vs2010에 c 콘솔 프로젝트는 아래 내용 소스가 들어갑니다. 기본소스에 주석을 빼고, 위치를 찍어주기 위한 약간의 코드가 추가되었습니다.

testblog.cpp




4. 그리고 #include <Box2D\Box2D.h>를 위해서 ./Box2D_v2.2.1\Box2D 폴더를 C:\Program Files\Microsoft Visual Studio 10.0\VC\include에다 옮겨줍니다. 즉,



이렇게 됩니다. 그러면.. 인클루드가 잘 되겠죠.


5. 그리고 메뉴에 Project - Properties - Configuration Properties - VC++ Directories - Library Dir - 

디버깅 모드일때는 아까 2번 주소의 디버깅으로

릴리즈 모드일때는 아까 2번 주소의 릴리즈로 링크를 걸어줍니다.



6. 그리고 Box2D.lib추가 (귀찮아서 사진으로 대체.. )
 





8. 그리고 실행합니다. 오.. 글자가 데굴데굴 굴러다니죠


 


실행파일을 첨부합니다~



반응형

+ Recent posts