관리 메뉴

나만을 위한 블로그

[Android] AR core란? 본문

Android

[Android] AR core란?

참깨빵위에참깨빵_ 2019. 12. 2. 14:34
728x90
반응형

참고한 사이트 : https://developers.google.com/ar/develop/java/quickstart

 

Quickstart for Android  |  ARCore  |  Google Developers

Set up your development environment Open the sample project This quickstart uses Sceneform, a 3D framework for that makes it easy for Java developers to build ARCore apps without OpenGL. To use ARCore in your app without Sceneform, review the Enable ARCore

developers.google.com

(만약 위 링크로 이동했는데 찾을 수 없는 페이지라고 나온다면 구글에 AR core 쳐서 공홈 들어가기)

 

먼저 AR의 뜻을 알 필요가 있다.

 

AR : Argumented reality = 증가된 현실. 증강 현실이라는 뜻이다

증강 : 수, 양을 늘려 더 강하게 함

현실 : 실제로 존재하는 상태 및 사실

 

∴ 증강현실 : 실제로 존재하는 무엇인가를 수나 양을 늘려 더 강하게 존재하는 것처럼 사람이 인식할 수 있게 하는 기술이라 생각한다.

 

기술 정의로는, 시각/청각/촉각을 포함한 여러 감각을 통해 실제 세계에 있는 물체가 컴퓨터 생성 지각 정보에 의해 보강되는 실제 환경의 대화식 경험이다.

혹은 스마트폰, 태블릿 PC 또는 안경 형태 등의 기기를 통해 보이는 이미지에 부가 정보를 실시간으로 덧붙여 향상된 현실을 보여주는 기술이라고도 한다.

이것을 사용하면 아무것도 없는 공간에 핸드폰 화면을 비추고 탭하면 내가 넣은 3D 이미지가 생겨나고, 드래그와 크기 확대가 가능하다.

 

※ 참고용어

 

1. SDK : Software Development Kit, 소프트웨어 개발 키트의 준말

 

2. Tango : 구글이 개발한 AR(증강현실) 기술이자 서비스, 현실을 스캔해 3차원 공간 정보를 파악하고 이를 활용해 현실과 가상을 합친다. 즉, 혼합 현실을 구현한 구글 서비스다. 이것 없이도 안드로이드 스튜디오에서 구현이 충분히 가능함

 

3. Render : [동사] (어떤 상태가 되게) 만들다, 하다

 

4. ***.sfa : Sceneform Assets의 준말, Asset의 가져오기 설정에 대한 사용자가 읽을 수 있는 설명을 포함하는 텍스트 파일이다. 또한 소스 자산의 모델과 텍스처를 참조하고 Scenefor의 물리적 기반 재료(material)에 대한 재료 매개변수를 제공해서 재료를 정의한다.

 

5. ***.sfb : .sfa 확장자 파일을 Sceneform을 이용해 변환한 결과물의 확장자. 이것을 써서 핸드폰 화면을 통해 현실에서 3D 렌더링 이미지를 불러온다. 앱의 APK에 내장됨

 

6. Plane : 클래스, 실제 평면에 대한 정보를 설명한다.

 

7. ArSceneView : AR core와 통합되서 화면을 렌더링하는 SurfaceView

 

8. Renderable : 3D 모델이며 꼭지점, 재질(material), 텍스처 등으로 구성된다.

 

9. Anchor : [명사] 닻, 정신적 지주 / [동사] 닻을 내리다 -> 고정시키다, ~에 단단히 기반을 두다

안드로이드의 Anchor : CoordinatorLayout의 자식들이 갖는 것, 일반적으로 다른 뷰를 가리키고 뷰의 id값으로 표시된다.

AR core에서 Anchor(이하 앵커)를 쓰는 이유 : 가상 객체가 AR scene에서 제자리에 있는 것처럼 보이게 하기 위해 사용한다. AR core의 환경 이해도가 업데이트됨에 따라 가상 객체가 배치된 위치에서 멀어지는 것처럼 보일 경우가 있다. 이것은 앱의 사실성과 사용자 환경에 영향을 줄 수 있기 때문에, 앵커는 가상 객체가 공간의 동일한 위치 및 방향에 유지되도록 해준다.

 

10. World Space : 카메라와 물체가 배치되는 공간을 조정한다. 여기서 카메라 및 객체 위치가 프레임에서 프레임까지 업데이트된다.

 

11. Poses : World Space에서 객체의 위치, 방향을 나타낸다. 앵커를 만들 때 현재 프레임의 World Space 견적(estimate)에 상대적인 위치, 방향을 설명하는 Position을 사용한다.

하나 이상의 객체를 앵커에 붙인다. 앵커와 앵커에 붙은 객체들은 사용자가 누른 위치에 그대로 있는 것처럼 보인다.

Anchor Pose는 각 프레임의 World Space 업데이트에 맞춰 조정되므로, 그에 따라 객체의 Pose 또한 업데이트한다. 여러 객체를 같은 앵커에 연결해 앵커의 포즈가 조정된 경우에도 이 객체들이 상대적인 위치, 방향을 유지하도록 할 수 있다.

 

12. ***.mtl : ***.obj에서 참조되는 재질(material) 파일, 텍스처 및 lightning 구성 등을 정의함

 

 

- 사용법

 

 

공식 문서를 보면 다 나와있지만 굳이 적자면 아래와 같다.

 

- 안드로이드 스튜디오 버전 3.1 이상 or 안드로이드 SDK 플랫폼 버전 7.0(API 레벨 24) 이상

- 안드로이드 개발에 대한 기본 지식(당연한 소릴...)

 

해당 문서에 들어가서 마우스 휠을 좀만 내리면

Open the sample project

 

이런 문구를 볼 수 있다. 그리고 'Download and extract the Sceneform Samples' 이란 문구가 있는데, 파란 글자를 클릭해서 예제 코드를 다운받아 압축을 푼다.

깃이 있고 쓸 줄 안다면 clone해서 사용하자. 난 압축을 푸는 방식으로 할 거다.

 

압축을 풀었다면 samples -> hellosceneform 폴더로 들어가서 안에 있는 gradle, xml, java 파일들의 코드를 싹 다 복붙한다.

한 가지 특이한 게 있다면 app 폴더 안에 sampledata 폴더가 있다. 이 폴더는 안드로이드 스튜디오 프로젝트에서 app 하위 폴더에 들어가도록 복붙하자. 즉 압축 해제해서 내가 본 폴더 상황처럼 내 프로젝트 폴더도 똑같이 만들란 소리다.

 

이 sampledata 폴더에는 andy란 이름의 4가지 각각 다른 확장자명을 가진 파일들이 있다. 다 필요없고 .obj 파일만 사용한다. 그렇다고 다른 3개 파일들은 굳이 삭제할 필요는 없다. 용량도 얼마 안 한다

 

그 다음, 안드로이드 스튜디오의 설정(Ctrl + Alt + s)에 들어간 후 plugin을 누르면 플러그인을 검색해 설치할 수 있는 페이지로 이동된다.

MarketPlace 탭을 클릭하고 sceneform을 입력하면 Google Sceneform Tools(Beta)라고 적힌 플러그인이 있다. 설치해라.

 

이 플러그인을 설치하고 스튜디오에서 sampledata -> models -> andy.obj 파일에 우클릭을 하면 "import Sceneform Asset" 이라는 문구가 보인다. 눌러라.

그러면 경로를 설정하라고 한다. 아무것도 건드리지 말고 finish 눌러라.

 

그럼 로그창에서 뭔가가 돌아가고 잠시 후 끝난다. 그러면 assets 폴더에(없던 상태라면 새로 생긴다) andy.sfb 파일이 새로 생긴 걸 볼 수 있다.

 

여기까지 했다면 자바 파일에서 주의해서 봐야 할 곳이 있다.

바로 setSource(this, R.raw.andy)다.

여기서 R.raw.andy라 쓰인 곳을 Uri.parse("andy.sfb")라고 고쳐줘야 제대로 작동한다.

혹은 .obj 파일을 우클릭해서 'import sceneform asset' 한 뒤 생겨나는 .sfb 파일을 raw 폴더로 복사해도 된다.

 

나머지는 응용법 생각하고 다른 obj 파일을 다운로드 받아서 사용해야겠다

반응형
Comments