Introducing ARCore: Augmented Reality at Android Scale (GDD Europe ’17)

[음악 재생] 톰 슬레이터 : 안녕하세요 나는 톰이야

저는 VR과 AR에 대한 기술적 인 단서 중 하나입니다 Google의 노력 우리 팀은 개발자 생산성 도구 전문 회사입니다 나는 정말로 흥분한다, 단지 1 주 AR 코어 발표 후 오늘 여기 서서 이야기하기 AR Core SDK 미리보기 AR 기능을 정말 쉽게 추가 할 수있는 방법 귀하의 안드로이드 애플 리케이션에

우리가하는 일을 빨리 처리 할 수 ​​있습니다 오늘 얘기 할거야 그래서 우리는 AR에 대해 이야기 할 것입니다 관련 사촌 VR 우리는 AR 핵심을 뒷받침하는 개념에 대해 이야기 할 것입니다

우리는 API를 살펴볼 것입니다 우리는 모든 옵션을 통해 이야기 할 것입니다 AR 콘텐츠를 만들어야합니다 그리고 우리는 건물을위한 모든 옵션에 대해 이야기 할 것입니다 귀하의 코드뿐만 아니라

그래서 우리가 기술 세부 사항에 들어가기 전에, 몰입 형 컴퓨팅이란 무엇을 의미하는지, 우리가 어디에서 왔는지, 그리고 그것이 당신을 위해 무엇을 할 수 있는지 알려줍니다 그래서 항상 AR과 VR이 왜 필요한가요? 우리는 이러한 모바일 장치를 갖추고 있으며 모두 훌륭합니다 왜 우리가 가서 다른 일을해야합니까? 따라서 Cardboard, Daydream 및 Tango를 사용하면 우리는 꽤 오랫동안이 공간에 투자 해 왔습니다 그리고 우리는 상호 작용하는 것이 보다 자연스러운 방법으로 데이터를 미래에 제공하십시오 몰입 형 컴퓨팅은 많은 추상화를 제거합니다

당신과 당신의 컴퓨팅 사이 그래서 저는이 기술들에 대해서 잠깐 이야기하고 싶습니다 우리가 약간의 코드에 뛰어 들기 전에 그래서 AR과 VR은 존재하는 것으로 생각합니다 몰입 형 컴퓨팅의 한 분야입니다

맨 왼쪽에는 세상이있는 현실이 있습니다 우리가 알고있는 것처럼, 우리는 오늘 앉아 있습니다 우리가 현실에 디지털 컨텐츠를 추가하기 시작하면, 그런 다음 우리는 그것을 확대하기 시작합니다, 그리고 그것은, 그러므로, 증강 현실 그리고 그 현실을 가상으로 완전히 바꾸면, 우리에게는 가상 현실이 있습니다 AR은 디지털 콘텐츠를 가져올 수 있습니다

개와 함께 포즈를 취하는이 녀석과 같은 너와 너의 세계에 AR의 장점 중 일부는 당신은 당신의 세계에서 실제 크기와 규모로 물체를 볼 수 있습니다 가구를 살 수 있다고 상상해보십시오 집에 실제로 들어 있는지 알 수 있습니다 당신이 그것을 사기 전에

문맥에서 사물을 볼 수도 있습니다 다시 말하면, 그 가구를 사고 상상해보십시오 그것은 당신의 집에있는 당신의 다른 모든 장식과 일치합니다 그리고 – 존재를 상상해보십시오 실제 세계에 포스트잇으로 주석을 달 수있다

메모는 실제로 실제적인 엉망을 일으키지 않습니다 또한 3D 장면에 대한 자연스러운 입력 기능을 추가합니다 따라서 디지털 콘텐츠 제작 또는 모델링을 사용한 적이 있다면 도구를 사용하면 제어하기가 실제로 어렵습니다 그 장면의 카메라 증강 현실로, 당신은 당신의 전화를 잡아, 그리고 당신은 그것을보고, 누구든지 그것을 할 수 있습니다

그리고 당신이 당신의 세계에서 모든 것을 대체한다면 가상 컨텐츠, 디지털 컨텐츠, 당신은 가상 현실을 가지고 있습니다 그것은 당신이 즉시 장소에 가서 세계를 방문 할 수 있습니다 그리고 이것의 몇 가지 이점은 당신이 완전히 몰두하는 것입니다 네가 다른 곳으로 이송 된 것처럼 느껴진다 그리고 입력에있어 정말 대단한 혁신이 있습니다

정말 당신의 세계에서 자연스럽게 일할 수있게 해줍니다 VR과 AR 모두 컴퓨팅 경험을 가능하게합니다 우리가 현실 세계를 경험하는 것처럼 더 많이, 둘 다 많은 동일한 기술을 이용합니다 그래서 2014 년에 우리는 아이디어로 시작했습니다 기기가 이해할 수 있어야 함 더 많은 세계

따라서 전용 하드웨어의 경우 Tango 우리가 깊이를 이해하게 해주었습니다 우리에게 정말 훌륭한 응용 프로그램을 만들 수있었습니다 당신의 세계를 측정 할 수 없기 때문에지도를 만들 수 있습니다 집을 공유하고 게임을 할 수 있습니다 친구와 함께 탁상 위 일부 게임

우리는 Asus와 Lenovo로 두 개의 소비자 장치를 만들었습니다 개발자는 Tango를 위해 100 개 이상의 응용 프로그램을 만듭니다 우리는 많은 것을 배웠습니다 이제는 소프트웨어로 더 많은 것을 할 수 있습니다 우리가 3 년 전에 할 수 있었던 것보다

사용자 정의 센서에 의존 할 필요가 없어 AR 코어와 함께 오늘과 지난 주 발표 그래서 지난주에 AR 코어를 발표했습니다 당신이 일어날 수있는 미리보기 SDK입니다 지금 AR 애플리케이션을 구축하여 실행 중입니다 AR 코어는 Tango에서 배운 모든 것을 사용합니다 오늘 전화를 통해 AR을 사용할 수 있습니다

깊이 카메라 또는 사용자 정의 특수 센서가 필요하지 않습니다 AR 코어는 현재 미리보기 상태이며 우리와 같은 개발자들에게 어떻게 피드백을 주는지 이 SDK가 당신을 위해 작동하도록하십시오 그리고 거기에 20 억 개의 장치가 있으면, 우리는이 기술에 대한 거대한 잠재 고객을 확보하고 있습니다 지금까지 AR Core가 Pixel, Pixel XL, Galaxy S8을 통해 현재 수백만 대의 장치에서 실행됩니다 이미

우리는 제조업체와 협력하고 있습니다 삼성, 화웨이, LG, 아수스 등 미리보기가 끝나면 우리는 1 억 개의 장치를 사용할 것으로 예상합니다 그리고 우리는이 하드웨어 벤더들과 함께 일하고 있습니다 정말 일관된 막대를 사용하여 이것을 가능하게하기 동일한 방식으로 품질과 고성능을 보장합니다 우리가 백일몽과 함께했던 것

그래서 우리가 코드에 들어가기 전에, 나는 그것이 정말로 도움이된다고 생각한다 AR의 기본 개념을 이해하려면 AR 코어가 어떻게 작동하는지 알 수 있습니다 그래서 세 가지 주요 개념에 대해 생각할 수 있습니다 하나는 모션 추적이고, 두 가지는 환경 이해이며, 3 개는 가벼운 평가입니다 이제 자세히 살펴 보겠습니다

AR 콘텐츠를 렌더링하려면 가상 카메라가 필요합니다 실제 카메라와 일치합니다 가상 장면을 렌더링하고, 카메라와 합성하고, 너 끝났어 이것은 간단하게 들립니다 사실, 정말로 어렵습니다

귀하의 휴대 전화 자이로 스코프가 정말 대단합니다 회전을 위해서는 시간이 지남에 따라 표류 할 수 있습니다 그리고 귀하의 가속도계는 훌륭합니다 그 순간 입력에 대해서는 실제 위치를 파악하기에는별로 좋지 않습니다 그래서 AR을 얻는 데 정말 힘든 부분입니다

이 번역 및 회전을 파악하는 것입니다 실시간으로 기기의 동일한 가상 카메라로 디지털 객체를 렌더링 할 수있다 너의 육체적 인 카메라 이것이 잘못된다면, 세계의 사물들 가상 동등 물과 오정렬됩니다 그들은 수영하고 뛰고, 나타나지 않을 것이다

세계에 뿌리를두고 있습니다 그리고 우리가 얼마나 효과적인지 알 수 있습니다 이 허수아비 때문에 AR 코어에서이 작업을 수행했습니다 다른 사람들이 타코를 기다리는 것처럼 보입니다 이렇게하려면 AR Core가 장치의 카메라를 사용합니다

추적 할 관성 측정 장치 프로세스를 사용하여 전 세계 어디에서나 귀하의 장치를 정확히 파악할 수 있습니다 Concurrent Odometry and Mapping이라고도하며 COM이라고도합니다 시각적으로 다른 기능을 찾습니다 연속 프레임을 추적 할 수있는 포인트 클라우드를 구축하여 해당 포인트에 대해 지역화 할 수 있습니다 구름

이것은 고주파수 IMU 데이터와 결합되어, 회전과 번역을 제공합니다 전 세계에서 가상 컨텐츠를 정확하게 렌더링 할 수 있습니다 바른 장소 이것은 당신이 시도했을지도 모르는 다른 AR 경험들에 비해서 더 뛰어납니다 이것은 자이로 스코프만을 사용하여 회전을 얻습니다

당신의 세계를 미끄러지는 내용의 문제가 있습니다 더 나은 모습을 위해 가까이 다가 갈 수는 없습니다 이것은 디지털 콘텐츠를 고정시키는 데 정말로 중요합니다 현실 세계에 이 그림은 예제입니다

당신의 세계에서 장치 추적 포인트의 그리고 포인트 클라우드를 만드는 것이지만, 그것이 진짜 일 때, 실제로 4 점보다 많은 점수를 받았습니다 따라서 중요한 모션 추적 위에, 환경에 대한 이해 또한 매우 중요합니다 렌더링 내용은 사실 그 자체로 재미 있지 않습니다 세상과도 상호 작용할 수 있어야합니다 따라서 AR 코어는 해당 기능의 클러스터를 찾고 있습니다

일반적인 수평면에있는 것처럼 보이는 점, 앱에서 이러한 서페이스를 사용할 수있게합니다 비행기로 비행기는 수학적으로 무한하기 때문에, 또한 AR 코어는 이러한 서페이스의 경계를 다각형으로 제공합니다 그리고이 정보를 사용하여 객체를 배치 할 수 있습니다 너의 세계에서이 안드로이드 녀석을 좋아해

평면은 수평면에서 감지되므로, 바닥, 테이블, 주방 조리대, 벤치, 의자, 그 이름을 지어 라 그러나 AR 코어는 특징점을 사용하기 때문에 이들 표면을 검출하기 위해, 평평한 표면 질감이 없거나 반사가 심하지 않은 표면 제대로 감지되지 않을 수 있습니다 그리고 마지막으로, 가벼운 평가 그래서 AR Core는 정보를 탐지 할 수 있습니다 현재 환경의 조명에 대해 당신을 대표하는 가치를 제공합니다

주어진 카메라 이미지의 평균 강도 이 정보를 사용하여 장면을 밝게 할 수 있습니다 같은 조건의 가상 오브젝트 환경으로서 리얼리즘의 감각 이 작업을 수행하지 않으면 디지털 객체 눈에 띄고 보이지 않을 것입니다 그 세계의 한 부분, 정말, 정말로 현실적인 렌더링의 열쇠

그리고 그것은 당신이 정말로 재미있는 효과를 낼 수있게 해줍니다 무서워하는 사자처럼 당신이 불을 끄면 그리고 그것은 경박하게 보일지도 모르지만 실제로는 실제로 중요합니다 카메라를 들고 본 모습 만 본 적이 있다면 광원에서 또는 창 밖으로 지적했다

실제로 카메라의 자동 노출 그 범위가 상당히 넓어지면서, 그렇게하지 않으면 정말 좋지 않을 수 있습니다 계정에 이제 AR 코어의 주요 개념을 살펴 보았습니다 일부 코드로 건너 뛰고 자바로 AR 애플리케이션을 만드는 데 필요한 것 이것이 API에 대한 생각입니다

AR 세션을 나타내는 세션을 생성합니다 네가 달리고 있다는거야 일단 이것을 얻으면 세션을 업데이트하고, 그것은 당신에게 프레임을 제공합니다 프레임이 생기면 카메라를 나타냅니다 그와 함께 진행되는 모든 메타 데이터는 비행기를 얻습니다

비행기가 있으면 앵커를 만들 수 있습니다 앵커를 사용하면 콘텐츠를 배치 할 수 있습니다 당신의 현실 세계에서 Hello AR 응용 프로그램은 API에서 이러한 모든 부분을 연습합니다 그리고 그것은 GitHub에 있고, 일어나기 위해 위대하다

그리고 이것으로 달리는 것 코드를 살펴보면 정말 쉽습니다 AR Core 세션을 시작하십시오 세션을 시작하기 만하면됩니다 우리는 기본 설정 파일을 제공합니다

이는 기본적으로 API의 모든 부분을 켭니다 모션 추적, 비행기 찾기, 빛 평가 장치가 작동하지 않는지 확인하는 간단한 방법 AR 코어를 지원합니다 그리고 우리가 응용 프로그램을 렌더링 할 때 우리가 먼저해야 할 일 프레임이 깨끗한 다음 간단하게 sessionupdate를 호출합니다

여기에서 이해해야 할 주요 개념 중 하나 당신이 당신의 세션을 만들 때, 설정에서 변경할 수있는 것들 중 하나 차단 또는 최신 카메라 이미지를 사용하고 있는지 여부입니다 차단 기능을 사용하면 기본적으로 카메라가 실행되는 속도의 프레임, 어떤 종류의 의미가 있습니다 당신보다 빨리 렌더링하고 싶지는 않습니다 모든 포즈가 모든 프레임과 정렬되도록하고 싶습니다 그러나 일부 응용 프로그램의 경우, 당신이 정말로 부드러운 업데이트를 원할 때, 당신은 애니메이션을 가지고 있고, 당신은 최대한 빨리 렌더링하는 것이 좋습니다

능력과 성능을 희생 할 수 있습니다 그래서 일단 프레임이 생기면 우리는이 도우미 기능을 갖습니다 히트 테스트 (Hit Test) : 우리가 세계에 광선을 투사하는 데 도움이됩니다 터치 위치에 있고 가지고 있는지 확인하십시오 이 비행기들 중 하나를 건드렸다

충돌 한 경우 탭이 범위 내에 있음 그런 다음 우리는 앵커를 만듭니다 그리고 우리는 나중에 좀 더 자세하게 앵커에 들어갈 것입니다 따라서 프레임이 실제로 추적되는지 확인해야합니다 카메라 앞에 손을 댄 경우 또는 무언가, 그리고 당신은 추적하고 있지 않다 교차점이 올바른지 확인하려고합니다

그런 다음 모든 데이터를 프레임에 쿼리합니다 개체를 렌더링해야합니다 그리고 사용하지 않았다면 걱정하지 마십시오 투영 행렬을 사용하기 전에, 그리고 당신은 뷰 행렬을 모른다 입니다

괜찮아 앞서 언급했듯이이 AR 콘텐츠를 렌더링하려면, 가상 카메라의 시야와 일치해야합니다 실제 카메라의 시야와 투영 행렬에는 이러한 모든 속성이 포함됩니다 당신이 필요로하는 것, 그리고 당신은 단지 쿼리합니다 AR 코어에 대한 액세스 권한을 얻기위한 AR 코어 세션 이 예제에서는 객체의 범위를 설정합니다

10 센티미터에서 100 미터로 렌더링합니다 그리고 나서 뷰 매트릭스는 다음을 포함합니다 모션 추적을위한 모든 정보 실제로 포즈가 들어 있습니다 카메라는 세계에 있습니다

마지막으로 액세스 권한을 얻습니다 조명 추정에 – 그것은 단순한 접근 자 호출 일뿐입니다 그 가치를 얻은 후에는 일부 논리에 사용하거나 그것을 사용하여 렌더링이나 조명에 영향을줍니다 그리고 마침내, 우리는 모든 앵커를 반복합니다 우리가 세계에 두었던 추적중인 경우 해당 객체를 렌더링합니다

따라서 투영 행렬에 카메라가 포함 된 경우 속성 및 카메라가 포함 된보기 일치 행렬 위치, 모델 행렬에 위치 포함 그 닻의 세계 안에 그 결합 된 모델 뷰 투영 행렬로, 당신은 당신이 넣어야 할 모든 것을 가지고 있습니다 화면의 올바른 위치에있는 픽셀, 카메라 피드 상단에 제대로 겹쳐서 표시됩니다 앵커에 대해 이야기하면서 앵커가 필요한 이유는 무엇입니까? 앵커라는 개념은 무엇입니까? 그래서 당신은 3 차원 공간이라고 생각할 것입니다 우리가 시작하는 곳으로 전화하지 그래

원산지 응용 프로그램에서 개체를 배치합니다 그것과 관련된? 그래서 실제로 포즈에 약간의 오류가 있음이 드러났습니다 모션 추적에서 돌아옵니다 동작 추적이 지속적으로 업데이트되고 있습니다 세상에 대한 이해

그리고 당신이 앵커를 사용한다면, 세상에 대한이 이해로서 업데이트하면 모델의 포즈도 업데이트됩니다 앵커를 사용하려는 좋은 예 루프를 타고 건물을 걸어 다니는 것을 상상해보십시오 당신이 시작한 곳으로 돌아 가면, 그 표류는 시간이 지남에 따라 축적 될 것이며, 그리고 앵커를 사용하여 정말로 확실하게하고 싶습니다 모든 것이 정확하다는 것 그리고 만약 당신이 세계에 닻을 놓으면, 당신은 또한 당신이 그 앵커의 꼭대기에 디지털 물체를 올려 놓으십시오

그래서 그 회전에 오류가있을 때마다, 그리고 나서 그 대상이 그 앵커로부터 멀어 질수록, 당신은이 레버 암 효과로 끝날 것입니다 물체의 중심에있는 피벗을 중심으로 회전하며, 그리고 그것은 그것이되고 싶어하는 곳에서 번역됩니다 그리고이 앵커들이 실제로 거기에 있다고 생각합니다 디지털 물체, 실제 물체를 뿌리 내리기 세상에 내가 의자 위에 물건을 놓을 예정이라면, 의자 용 앵커 하나를 만들고 싶습니다

의자 위에 물건을 올려 놓으십시오 내가 책상 위에 물건 10 개를 넣고 싶으면 앵커 10 개를 만들 필요가 없습니다 나는 단지 하나를 만들어서 그것들과 관련된 모든 것을 놓아야 만한다 그런 다음 다시 한 번 전역 좌표를 사용하지 마십시오 시스템

당신이 그들을 사용하면 나쁜 시간을 보내 게됩니다 그래서 우리는 이것을 건너 뛰었습니다 화면을 청소하는 것 외에도 3D 렌더링에 대해 이야기합니다 렌더링 3D는 실제로 실제로 큰 주제입니다 나는 오늘 여기서 30 분간의 대화에서 다루지 않을 수있는 것입니다

그러나 보게 될 것을 당신에게주기 위해, 몇 가지 옵션이 있습니다 Open GLES를 직접 사용할 수 있으며 실제로 이 작업을 시작하는 방법에 대한 훌륭한 자습서가 있습니다 developerandroidcom

또는 [INAUDIBLE]과 같은 프레임 워크를 사용할 수 있습니다 당신을 위해 그렇게 많이 들지 않습니다 또는 Hello AR 샘플을 살펴 보거나, 실제로는 일부 모델 로딩 코드 및 모델을 포함합니다 렌더링 코드도 있습니다 당신의 세계에 어떤 물건을 놓고 싶습니다

따라서 AR Core는 Java와 함께 작동 할뿐만 아니라, Unity와 Unreal에서도 작동합니다 우리는 확실히하기 위해 많은 작업을했습니다 그것은 정말로 잘 통합되어 있습니다 이러한 일반적인 게임 엔진은 복잡성을 관리에서 제외시킨다 복잡한 3D 장면으로, 실제로 집중할 수 있습니다

귀하의 신청서를 작성하십시오 그래서 Hello AR을 Unity에 포팅했습니다 거기에서 볼 수 있습니다 이 API는 모두 동일한 API를 실행하지만, 우리는 쉽게 디자인 할 수 있도록 설계했습니다 속도를 높이고 스크립트와 프리 패브를 사용하십시오

자신의 응용 프로그램에서 그리고 SDK를 다운로드 할 때 SDK의 일부로 제공됩니다 마찬가지로 Unreal에서도 마찬가지입니다 우리는 AR 구축을 위해 모든 것을했습니다 응용 프로그램을 사용하여 정말 쉽게 응용 프로그램 네가 가장 잘 알고있는 것

그래서 또 다른 옵션은 WebXR입니다 AR에 대한 실제 웹 표준은 아직 존재하지 않지만, 그러나이 프로토 타입은 웹 개발자 오늘 증강 현실 웹 경험 구축을 시작하십시오 그들의 실험은 웹상의 AR에 대한 모든 것을 가르쳐 줄 것입니다 희망적으로 볼 수있는 것처럼 보일 수있다 진짜 웹 표준을 더 빠르게 만들어라

더 잘 설계되어야합니다 이러한 기능은 WebVR 위에 구축되며, 그렇게 익숙하다면 WebXR을 사용하여 실행하고 실행하기가 쉽습니다 여기에서 볼 수있는 데모도 있습니다 실험용 Chrome for AR 키트에서 작동합니다 iOS에서도 마찬가지입니다

AR 응용 프로그램을 작성하는 방법에 대해 많이 이야기했습니다 하지만 정말 어려운 부분은 어떻게 콘텐츠를 얻는 것입니까? 우리 모두는 2D 용 컨텐츠를 만드는 방법을 알고 있습니다 우리는 이미지를 얻는 방법을 알고 있습니다 우리는 텍스트, 글꼴, 비디오를 얻는 방법을 알고 있습니다 우리는 그것들을 만드는 법을 압니다

우리의 응용 프로그램에서 그들을 사용하는 방법을 알아 그래서 Google은 AR 및 VR에서 꽤 오랫동안 작업 해 왔으며, 우리는이 콘텐츠를 실제로 만들었습니다 정말 쉽습니다 그래서 우리는 블록을 만들었습니다 Blocks을 사용하면 3D 컨텐츠를 VR로 신속하게 제작할 수 있습니다

VR 헤드셋이없는 경우에도, 우리 도서관을 보아라 리믹스 가능으로 태그 된 모든 컨텐츠는 다운로드 할 수 있습니다 콘텐츠의 일부를 간략하게 살펴 보도록하겠습니다 우리 제작자가 블록을 위해 만든 것입니다 그래서 당신이이 남자, 당신의 부엌에있는라면 요리사를 원한다면, 그 힘은 이제 당신에게 열려 있습니다

이 녀석이 너를 지키길 원한다면 밤에는 침대 옆 탁자에 앉아 꿈을 이룰 수 있습니다 정말로, 정말 인상적입니다 사람들은 블록을 사용하여 만들었으며 매우 쉬운 방법입니다 3D 콘텐츠를 응용 프로그램에 가져올 수 있습니다 그래서 저는 여러분 모두가 우리의 Blocks 웹 사이트로 향하도록 격려합니다

그것을 다운로드하고, 그것을 제공합니다 VR에서이 콘텐츠를 만드는 것이 정말 재미 있습니다 그래서 우리가 끝내기 전에, 나는 너를주고 싶다 AR 코어에 내장 된 것들 중 일부의 맛 [음악 재생] 그래서 이것은 AR의 능력에 대한 회상 여행이었습니다

핵심 및 시작하기 위해 필요한 모든 정보 오늘 우리 웹 사이트에 있습니다 그래서 우리는 AR의 기본에 대해 이야기했습니다 AR을 구축해야하는 옵션에 대해 이야기했습니다 응용 프로그램을 작성하고 콘텐츠를 작성하는 방법에 대해 설명했습니다 이러한 응용 프로그램의 경우 우리는 개발자로부터 피드백을 적극적으로 찾고 있습니다

이 미리보기 단계를 통해 자신과 같은 우리는 GitHub 문제를 모니터링 할 것입니다 및 기타 채널을 면밀히 검토하여 구축하려는 플랫폼에서 작동하는 플랫폼을 구축하십시오 따라서 AR은 다음의 큰 변화를 보여줍니다 모바일 장치에서 가능합니다 오늘 AR Core 미리보기를 시작하십시오

우리는 당신이 무엇을 지어야하는지 정말로 기다릴 수 없습니다 [박수 갈채] [음악 재생]