일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 삼성
- 멤버십
- 가상화
- 갤럭시탭S8울트라
- 신경회로망
- 하이퍼바이저
- BAM
- 파이썬
- Neural Network
- 신경망
- 물걸레로봇청소기추천
- Python
- 인공지능
- 물걸레자동세척로봇청소기
- 삼성소프트웨어멤버십
- SSM
- Friendship
- 증강현실
- 고려대학교
- 패턴 인식
- 빅데이터
- Google App Engine
- hopfield network
- 구글 앱 엔진
- 패턴인식
- 동아리
- 나르왈프레오
- 삼성전자 소프트웨어멤버십 SSM
- Bidirectional Associative Memory
- NarwalFreo
- Today
- Total
정보공간_1
[6기 부산 박천경] mixare(증강현실) opensource 분석 #1 본문
안녕하세요 부산 멤버십 박천경 입니다.
이번 mixare(증강현실) opensource 분석 #1 에서는 증강현실의 정의에 대해서 살펴 볼 것 입니다.
또한 SurfaceHolder 생성으로 SurfaceView를 제어 하여 카메라 화면과 스마트폰의 센서 값들을
읽어오고 SurfaceView 위에 canvas를 이용하여 이미지를 그리는 작업을 해보겠습니다.
참고로 필자는 window 환경에서 개발을 진행 하였습니다.
1. 증강현실의 정의
사용자가 눈으로 보는 현실세계에 가상 물체를 겹쳐 보여 주는 기술입니다. 현실세계에 실시간으로
부가정보를 갖는 가상세계를 합쳐 하나의 영상으로 보여 주므로 혼합현실(Mixed Reality, MR)이라고도 합니다.
현실환경과 가상환경을 융합하는 복합형 가상현실 시스템(hybrid VR system)으로 1990년대
후반부터 미국,일본을 중심으로 연구 개발이 진행되고 있습니다.
현실세계를 가상세계로 보완해주는 개념인 증강현실은 컴퓨터 그래픽으로 만들어진
가상환경을 사용하지만 주역은 현실환경입니다. 컴퓨터 그래픽은 현실환경에 필요한
정보를 추가 제공하는 역할을 합니다. 사용자가 보고 있는 실사 영상에3차원 가상영상을
겹침(overlap)으로써 현실환경과 가상화면과의 구분이 모호해지도록 한다는 뜻입니다.
2. SurfaceView를 이용한 camera 생성
먼저 변수를 살펴보면, previewHolder는 SurfaceView를 관리하는 SurfaceHolder이며,
camera는 카메라와 관련된 모든 것을 담당하는 오브젝트입니다. inPreview는 미리보기가
활성화 상태인지를 알려주는 변수입니다. 또한 각종 센서의 값들이 들어갈 변수를 지정해 두었습니다.
먼저 carmeraPreview라는 ID를 가진 SurfaceView를 검색해서 cameraPreview에 할당 합니다.
그 다음 cameraPreView의 getHolder()메소드를 실행하고 addCallback 메소드로 콜백을 추가합니다.
SurfaceView가 안드로이드에 맞게 설정되고 크기가 조절 되었으니, 카메라에게 설정 정보를
넘기서 스마트폰의 크기의 화면에 맞게 그릴 수 있도록 도와줍니다.
메소드가 호출되면 Camera.Parameters 오브젝트에 정보를 전달해서 카메라를 업데이트하고
startPreview()를 통하여 Camera가 미리보기 화면을 표시하게 도와줍니다.
3. 방향센서 및 가속도 센서 값 보여주기
1) 방향센서는 자기장 센서와 가속도계 센서의 조합으로 구현됩니다.
두 센서에서 얻어진 데이터와 약간의 삼각함수를 이용해서 기기의 피치와 롤, 방위각을 얻어낼 수 있습니다.
2) 가속도계는 좌우,앞뒤,상하 세 방향의 축에 대한 가속도 값을 측정하는 것입니다.
sensorManager가 모든 센서로부터의 데이터 값을 받아오며 센서를 관리하는 역할까지 합니다.
시스템 서비스로서 이 서비스의 레퍼런스를 sensorManger에 저장합니다.
그 다음 방향 센서와 가속도 센서를 등록해 줍니다. 또한 화면에 방향센서와
가속도 센서 값을 표시해 줄 TextView를 만들어 주겠습니다.
sensorEventListener를 생성해서 new SensorEventListener로 등록합니다.
그 후 onSensorChanged() 사용해서 센서의 값이 변할 때 마다 업데이트 된 값을 받아 오게 됩니다.
3) SurfaceView camera 위에 그림 삽입 및 그리기
먼저 onCreate()에서 ContentView를 추가합니다.
그 다음 onDraw 매소드를 이용해서 canvas를 생성하고 그 위에 Circle, Rect, Line을
자유롭게 그릴 수 있습니다. Bitmap 이미지 또한 삽입하여 화면에 표시 할 수 있습니다.
(위 code는 이미지가 큰 관계로 inSampleSize를 이용하여 이미지 크기를 줄였습니다.)
위 과정을 차근히 따라오시면 위 그림과 같이 카메라를 띄우고 가속도,방향센서 값들을 불러오면서
이미지까지 삽입하는 것 까지 무난히 하셧을꺼라고 생각됩니다.
기본적으로 증강현실 opensource인 mixare를 사용 하기에 앞서 간단히 필요한 개념에 대해서
정리하는 시간이 었습니다.
다음 시간에는 mixare를 이용하여 주변의 주요 건물들을 볼 수있는 앱을 만들어 보겠습니다.
수고하셨습니다.
'IT 놀이터' 카테고리의 다른 글
[6기 수원 김병연] Node.js Server Testing (0) | 2014.12.13 |
---|---|
[6기 부산 박천경]SDL (Simple DirectMedia layer) #3 (0) | 2014.10.09 |
[6기 수원 김병연] Node.js 디버깅 및 실제 함수의 동작 이해 (0) | 2014.09.05 |
[UX research] 사용자 리서치를 간략하게 설명해봅시다. (0) | 2011.07.02 |