블로그 이미지
박공명

카테고리

분류 전체보기 (99)
된장 (7)
Dev (60)
꼐..꼐임 (6)
식탐 (18)
우리 (0)
Etc (8)
개인자료 (0)
Total
Today
Yesterday

'옵티머스 3D'에 해당되는 글 2건

  1. 2011.07.14 REAL 3D 를 사용한 OpenGL 게임 2
  2. 2011.04.19 Real 3D 개요


얼마전에 Real 3D lib를 사용한 2D 이미지 처리방법을 포스팅 했는데

OpenGL을 공부하느라 3D 이미지 처리방법 포스팅까지 간격이 좀 길었다.

게임 화면부터 공개를 해야할듯 ㅋ ㅋ



뭐 이렇다.

왜 두개냐.. 3D가 원래 이렇다. 양옆이 되던 위아래가 되던 번갈아서 나오던

3D는 양안용 이미지 2개를 모두 가지고 있어야 성립된다.

사실 Real 3D library가 하는일도 이렇게 형식에 마추어 나누어진 화면을

하나로 그리고 양쪽 눈에 맞게 보여주는 역활이다.

열심히 포스팅을 하고있지만 실제 추가되는 처리는 얼마 없다는 것이지.

사실 OpenGL 공부하고 만드는데 3일걸리고 3D로 전환하는데 20분 걸렸다.

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

OpenGL 강의물도 아니고 내가 전문가도 아닐터이니

3D로 전환하는 핵심부분만 간단히 정리하자.

1. library 선언

2. 전체화면을 반반 나누어 View port를 만든다.

3. 각각 View port의 카메라 x좌표 간격을 조절한다. (여기에서 화면 밖으로 튀어나오거나 들어가게하는걸 조절하게된다.)

    private void setLeftEnv(GL10 gl) {
        gl.glViewport(0, 0, (int) mWidth / 2, (int) mHeight);
 
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        gl.glLoadIdentity();
        GLU.gluLookAt(gl, mEyeDistance, 0.0f, 4.5f, mFocusPoint[0], mFocusPoint[1], mFocusPoint[2], 0.0f, 1.0f, 0.0f);
    }
    private void setRightEnv(GL10 gl) {
        gl.glViewport((int) mWidth / 2, 0, (int) mWidth / 2, (int) mHeight);
        gl.glMatrixMode(GL10.GL_MODELVIEW);
        gl.glLoadIdentity();
        GLU.gluLookAt(gl, - mEyeDistance, 0.0f, 4.5f, mFocusPoint[0], mFocusPoint[1], mFocusPoint[2], 0.0f, 1.0f, 0.0f);
    }



4. 둘다 그린다.

if(mIs3D) {
   setLeftEnv(gl);
   root.draw(gl);
   objectRoot.draw(gl);
   setRightNomalEnv(gl);
   root.draw(gl);
   setRightEnv(gl);
   objectRoot.draw(gl);
  } else {
   setFullEnv(gl);
   root.draw(gl);
   objectRoot.draw(gl);
  }



끝.

object만드는 노가다를 해보니 역시 게임엔진이란게 있어야한다는걸 알았다 ㅠ_ㅠ

gamebryo 사용했을때는 대충 그리면 끝났던것을.........

Posted by 박공명
, |

Real 3D 개요

Dev/Android / 2011. 4. 19. 16:55

3D를 구현하기위해서는 먼저 구동방식을 이해하는것이 먼저라고 해야겠다.

먼저 사람의 눈이 어떠한 방식으로 원근감을 얻게되는지 알아야 하는데

사람은 어떠한 물체를 좌우의 눈으로 다른 방향에서 바라보면서 이를 통하여

입체감을 얻을수가 있는데 이걸 양안시차 라고 부른다고 한다.

한쪽 눈의 시력을 상실한 사람이 원근감을 잃는것도 이와 같은 맥락인거같다.

그렇다면 각각의 눈에 다른 상을 맺이게 할수있다면 원근감을 조작하는것이

가능하단 이야기가 되는데 그것이 3d display의 요체인거같다.

자료를 좀 찾아보니 현재 무안경 3d display 구현방법은 두가지 정도로 보인다.

Lenticular lens 방식과 Parallax barrier 방식이라고 부르는거같은데

전자는 화면앞에 이름과같은 렌즈가 있어서 빛의 굴절을 통하여 각각의 눈이

원하는 상을 보게 만든다.

후자는 화면 앞에 Film Barrier , LC Shutter (정확하게 뭔진 모른다) 등을 통해서

반대쪽 눈이 보고있는 영상을 가리고 자기가 봐야하는것만 보여주는거다.

결론적으로 무슨 편법을 쓰던간에 각각의 눈에 다른 영상이 보이기만 하면

3D 화면이 구현이 가능하다.

한가지 알아둬야 할건 아직은 기술적인 문제인지 아주 한정적인 각도로만

구현이 가능하다. 현재 가로모드로만 3d를 구현하고 있으며 시야각에따라서

화면에 많은 문제가 있으며 세로로 보면 아까 설명한 3d의 원리를 두눈으로 확인할 수 있다. ㅋ ㅋ

아무튼 중요한건 전문가들이 다 해줄테니 개발자는 사용법만 알면 오케이

다음화에서 구현을 해보겠다.

'Dev > Android' 카테고리의 다른 글

우분투에 안드로이드 프로젝트 세팅  (0) 2011.05.18
Real 3D - 단순 이미지 3D 구현  (0) 2011.04.20
LG Real 3D SDK  (1) 2011.04.13
JNI ?  (1) 2010.10.28
안드로이드 교육내용  (0) 2010.09.13
Posted by 박공명
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함