천재태지의 세상 돌려보기

seoz.egloos.com

- About Me... - Enlightenment, EFL - 타이젠 Tizen



[EFL] EFL로 만든 물리 라이브러리 EPhysics ├ Enlightenment, EFL

[ EFL 게시물 목차 : http://seoz.egloos.com/3458699 ]


며칠전 EFL 오픈소스에 Ephysics라는 물리 라이브러리가 추가되었습니다.
EPhysics는 Bruno Dilly(bdilly)라는 분이 만든 라이브러리로 EFL에서 Bullet[1][2]이라는 물리 엔진을 쉽게 사용할 수 있게 연결해주는 라이브러리입니다.
(참고로 Bruno Dilly는 브라질에 있는 ProFUSION사에서 일하고 있습니다.)


흔히 게임을 만들 때 충돌 처리와 같은 동작을 처리하기 위해 물리 엔진을 사용하는데요, EPhysics는 Bullet이라는 물리 엔진을 사용합니다.
Bullet은 오픈소스 물리 엔진으로 안정적이고 빠릅니다. 또한 사용이 간단합니다. 소니, 디즈니 등과 같은 기업이 게임, 영화에서 Bullet을 사용하고 있다고 합니다.

그럼 실제로 EPhysics를 이용해서 만든 테스트 애플리케이션 영상을 먼저 보겠습니다.


이런 애플리케이션을 EFL로도 쉽게 만들 수가 있게 되었습니다.

Bruno Dilly의 EPhysics에 대한 블로그[3]에 따르면 EPhysics를 이용하여 세계(World)를 만들고 여기에 여러 물체(Bodies)를 추가할 수 있습니다. 물체는 질량, 마찰, 복원, 형태 등 다양한 물리적인 속성을 가질 수 있습니다. 물체들끼리 충격을 줄 수도 있으며 서로 출동을 할 수도 있습니다. 물체가 이동할 수 있기 때문에 두 물체가 출동하거나 세계가 정지하는 등(모든 물체가 멈춥니다.)과 같이 어떤 일이 생길 때 이벤트(Events)가 발생한다고 합니다.

자세한 내용은 Bruno Dilly의 블로그를 참고 하시기 바랍니다.
저는 EPhysics를 설치하는 방법 및 EPhysics 코드에 대해서 간단히 이야기하도록 하겠습니다.


1. EPhysics 설치

A. 의존성 확인

우선 EPhysics를 빌드하기 위해서는 아래 라이브러리들이 설치되어 있어야 합니다.

Eina >= 1.2.99
Evas >= 1.2.99
Ecore >= 1.2.99
Elementary >= 1.0.99
Bullet >= 2.79

Eina, Evas, Ecore, Bullet은 EPhysics 라이브러리에서 사용하는 라이브러리인데, Elementary 같은 경우는 EPhysics 테스트 애플리케이션에서 사용하는 라이브러리입니다.
Eina, Evas, Ecore, Elementary를 설치하는 방법은 'EFL 설치하기'와 관련된 이전 포스팅을 참고하시면 됩니다.


B. Bullet 빌드 및 설치

Bullet은 페도라 용으로는 패키징되어 있는데 우분투 용으로는 공식적으로 패키징이 되어 있지 않습니다. 우분투 용으로 제공하는 비공식 패키지[9]도 있긴 하지만 우분투 10.10 및 11.04를 위해 패키징된 Bullet 2.78 버전이네요. 결국 우분투 사용자는 직접 소스코드를 받아서 빌드해야 합니다.

Bullet을 빌드하기 위해서는 빌드 도구인 cmake와 버전관리 도구인 subversion을 먼저 설치해야 합니다.

$ sudo apt-get update
$ sudo apt-get install cmake subversion

이제 EPhysics 소스코드[10]를 다운로드 받아서 빌드해봅시다.

$ svn checkout http://bullet.googlecode.com/svn/trunk/ bullet
$ cd bullet
$ cmake . -G "Unix Makefiles" -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=RelWithDebugInfo
$ make
$ sudo make install
$ sudo ldconfig

위와 같이 실행하면, bullet이 설치됩니다.

C. EPhysics 빌드 및 설치

이제 필요한 라이브러리는 모두 설치되었습니다. EPhysic 소스코드를 받아서 빌드해보겠습니다.

$ svn checkout http://svn.enlightenment.org/svn/e/trunk/ephysics
$ cd ephysics
$ ./autogen.sh
$ make
$ sudo make install
$ sudo ldconfig

만약 이전에 EFL 소스코드를 받아놓으셨다면 trunk 에서 svn up으로 업데이트만 하시면 ephysics 소스코드를 받으실 수 있습니다. 이 경우 아래 처럼 ephysics를 빌드하고 설치하시면 됩니다.

$ cd trunk
$ svn up
$ cd ephysics
$ ./autogen.sh
$ make
$ sudo make install
$ sudo ldconfig

2. EPhysics 테스트 애플리케이션 실행

자, EPhysics를 설치하셨다면 테스트 애플리케이션을 실행해서 잘 돌아가는지 확인하셔야 합니다.

$ ephysics_test



아직 최적화가 되어 있지 않아 속도가 느릴 수 있지만, 물리 엔진을 이용하는데는 무리가 없어 보입니다.

3. EPhysics로 개발하기

A. 문서

EPhysics 문서는 아직 EFL 공식 웹사이트에 올라와 있지 않습니다. 대신, Bruno Dilly의 개인 웹사이트[11]에서 EPhysics의 문서를 확인하실 수 있습니다. 아래 링크를 따라가보시면 Ephysics의 개념 설명 및 API 설명이 나와있습니다.

B. 예제

EPhysics 소스코드의 src/bin 디렉토리를 보시면 예제 코드가 있습니다. 이 예제 코드를 참고하여 애플리케이션을 작성하실 수 있습니다.

- ephysics_logo : EPhysics 로고를 위해 만든 애플리케이션입니다.
- ephysics_test : EPhysics 테스트를 위한 애플리케이션입니다. 다양한 예제가 들어있습니다.

C. 기본 개념 이해

EPhysics에는 물체(bodies)들을 가지고 놀 수 있는 세계(world)가 있습니다. 개발자는 세계를 먼저 만들고 이 안에 물체를 만들게 됩니다. 물체들끼리 이동하고 부딪히다 보면 다양한 이벤트가 발생합니다.

EPhysics를 이용한 애플리케이션을 작성할 때, 우선 ephysics_init()을 이용하여 ephysics 및 bullet 엔진을 초기화합니다.
그리고 ephysics_world_new()를 이용해서 세계를 만듭니다.
그럼 이제부터 개발자가 마음대로 물체를 만들면 됩니다. 예를 들어 원(circle) 모양의 물체를 만들고 싶으면 ephysics_body_circle_add()를 호출하고 박스 모양의 물체를 만들고 싶으면 ephysics_body_box_add()를 호출합니다. 만약 물체를 삭제하고 싶다면 ephysics_body_del()을 호출합니다.
생성한 물체에 여러가지 속성을 줄 수 있습니다. 예를 들어 물체에 질량을 설정하고 싶다면 ephysics_body_mass_set()을 호출합니다. 마찰력을 설정하려면 ephysics_body_friction_set()을 호출합니다. 그리고 ephysics_body_evas_object_set()을 이용하여 원하는 Evas_Object를 물체에 설정할 수 있습니다.

지금까지 간단히 EPhysics에 대해서 알아봤습니다. 아직은 성능이 최적화 되어 있지는 않지만 앞으로 EFL을 이용하여 애플리케이션을 개발할 때 (특히 게임) EPhysics를 이용해서 쉽게 물리 엔진을 적용할 수 있을 것 같습니다.

감사합니다.




[ EFL 게시물 목차 : http://seoz.egloos.com/3458699 ]



핑백

  • EFL 한국 사용자 모임 : EFL 한국 사용자 모임 2012-07-02 00:41:56 #

    ... 정책 변경 (mouse down -> clicked)elementary 라이브러리에서 els, elc, elm, elu 란? [EPhysics]EFL로 만든 물리 라이브러리 EPhysics [최신 소식] EFL 핵심 라이브러리 알파 배포 (2010.08.21)EFL 핵심 라이브러리 1.0 배포 (2011.1.29)EFL 핵심 라이 ... more

  • 천재태지의 세상 돌려보기 : [EFL/E17] EFL 및 E17 빌드 및 설치 (우분투 12.04) 2013-01-29 00:14:07 #

    ... ephysics</a><a href="http://seoz.egloos.com/3857085">[11</a>] 라이브러리를 빌드하려면 bullet[12]이라는 물리 엔진이 필요합니다. 그런데 우분투 12.04에는 bullet 물리엔진이 패키징되어 있지 않기 때문에 ephysics를 비활성화하여 efl을 빌드하도록 하겠습니다. 만약 bullet을 수동으로 빌드하고 싶으신 분은 아래 포스팅을 참고하세요. <a href="http ... more

덧글

댓글 입력 영역