3D 렌더링의 종류와 Java

게임개발로그 2011. 2. 13. 20:55


광선 추적법(ray tracing)
실세계의 빛을 모델링하는 것과 유사하다. 하지만 광원으로부터 우리의 눈으로 오는 광선을 모델링하는 대신, 
반대로 우리 눈이 세계를 바라보는 광선을 모델링한다. 스크린 상의 모든 픽셀에 대한 광선을 모델링하는 것은
산술적으로 많은 비용이 들기 때문에 3차원 그래픽에서 잘 사용되지 않지만, 더 현식적인 결과를 보여준다. 

다각형 모델링(polygon modeling)
실시간 게임과 컴퓨터가 생성한 이미지를 사용하는 영화에서는 3차원 렌더링 기술로 다각형 모델링을 사용한다. 
polygon modeling에서는 3차원 세계를 편평한 다각형으로 해석한다. 다각형은 편평하지만,  3개 이상의 변을 갖는
도형이다.  렌더링 속도가 빠르지만, 둥근 구와 같은 객체는 충분한 개수의 다각형을 사용하지 않으면, 잘 표현이 
되지 않는다. 3차원 가속카드와 같은 하드웨어를 사용하여 속도를 가속화 시킬 수 있다. 

자바 3D 렌더링 
Java3D는 은면제거, 충돌검사, Scene  관리를 처리해주는 하이레벨  API이다. Java3D는 자바로 작성되었지만, 
코어에서 3D  렌더링을 위해 OpenGL과 DirectX를 사용한다. Java3D는 윈도우와 리눅스에서도 사용가능하지만,
라이센스 문제로 SDK 1.4.1에 포함되지 않았으며, Mac OS X에서는 사용할 수 없다. 
반면 자바 OpenGL 바인딩은 상업용 제품을 위해 무료로 사용가능하며, Mac OS X를 포함한 다양한 하드웨어에서
사용가능하다. OpenGL API는 저수준 API이며,  장점을 활용하기 위해서는 3차원 그래픽 프로그래밍에 대해 
더 많은 지식을 필요로한다.  OpenGL 바인딩은 단순히 자바코드를 OpenGL 형식으로 접근할 수 있게한다. 

잘 알려진 자바 OpenGL 바인딩으로 GL4Java(www.jausoft.com/gl4java.html)와 LWJGL(java-game-lib.sourceforge.net)가 
있다. GL4 Java는 AWT, Swing 과 함께 사용할 수 있으며 더 많은 시스템에서 사용가능하지만 업데이트가 되지않아
최신의 OpenGL 기능을 사용할 수 없다. 
LWJGL (Light-Weight Java Game Library)는 OpenGL과 상호작용하기 위해 NIO native 버퍼를 사용하기 때문에 
속도가 더 빠르다. 현재 정기적으로 업데이트 되고 있지만, AWT, Swing과 호환하여 사용할 수 없다. 

소프트웨어 기반의  3차원 폴리곤 렌더러는, 하드웨어 기반의 렌더러 보다 속도가 더 느리지만 큰 스케일의 게임을
위한 솔루션으로 적합하다. 소프트웨어 기반의 3D 렌더러를 구축하는 과정에서 하드웨어 기반 렌더러의 동작방식을
이해하게 되고, 하드웨어 렌더러에도 적용할 수 있는 많은 3D  그래픽 기술을 배울 수 있다. 

'게임개발로그' 카테고리의 다른 글

아이폰 2D 게임엔진 Cocos2D  (1) 2011.03.16
게임 개발 기초  (2) 2011.02.14
게임 시스템 모듈 구성  (0) 2011.02.13
DirectX 와 OpenGL  (0) 2011.02.13
3차원의 기초  (0) 2011.02.13
3D 렌더링의 종류와 Java  (0) 2011.02.13