Створіть додаток Android з додатковою реальністю за допомогою Google ARCore

Автор: Laura McKinney
Дата Створення: 7 Lang L: none (month-011) 2021
Дата Оновлення: 1 Липня 2024
Anonim
Створіть додаток Android з додатковою реальністю за допомогою Google ARCore - Додатки
Створіть додаток Android з додатковою реальністю за допомогою Google ARCore - Додатки

Зміст


Імпорт 3D-моделей із плагіном Sceneform

Зазвичай, робота з 3D-моделями вимагає знань спеціалістів, але з випуском плагіна Sceneform Google дозволив рендерувати 3D-моделі за допомогою Java - і без потрібно вивчити OpenGL.

Плагін Sceneform надає API високого рівня, який можна використовувати для створення Renderdables із стандартних віджетів, форм або матеріалів Android або з 3D-ресурсів, таких як файли .OBJ або .FBX.

У нашому проекті ми будемо використовувати плагін Sceneform для імпорту файлу .OBJ в Android Studio. Щоразу, коли ви імпортуєте файл за допомогою Sceneform, цей плагін автоматично:

  • Перетворіть файл активу у файл .sfb. Це оптимізований для виконання сценарій бінарний формат сценарію (.sfb), який додається до APK та завантажується під час виконання. Ми будемо використовувати цей .sfb-файл для створення Renderable, який складається з сіток, матеріалів та текстур, і його можна розмістити в будь-якому місці вдосконаленої сцени.
  • Створення файлу .sfa. Це файл опису ресурсів, який представляє собою текстовий файл, що містить зрозумілий для людини опис файлу .sfb. Залежно від моделі, ви зможете змінити зовнішній вигляд, відредагувавши текст у файлі .sfa.


Просто пам’ятайте, що на момент написання плагін Sceneform все ще знаходився в бета-версії, тому при використанні цього плагіна ви можете зіткнутися з помилками, помилками чи іншою дивною поведінкою.

Встановлення плагіна Sceneform

Для плагіна Sceneform потрібна Android Studio 3.1 або новішої версії. Якщо ви не впевнені, яку версію Android Studio використовуєте, виберіть на панелі інструментів "Android Studio> Про Android Studio". Наступне спливаюче вікно містить деяку основну інформацію про вашу установку Android Studio, включаючи номер її версії.

Щоб встановити плагін Sceneform:

  • Якщо ви перебуваєте на комп'ютері Mac, виберіть "Android Studio> Налаштування ..." на панелі інструментів Android Studio, а потім виберіть "Додатки" у лівому меню. Якщо ви перебуваєте на комп'ютері з Windows, виберіть "Файл> Налаштування> Плагіни> Огляд сховищ".
  • Шукайте "Сценаформ". Коли з'являється "Інструменти Google Sceneform", виберіть "Встановити".
  • Після запиту перезапустіть Android Studio, і ваш плагін буде готовий до використання.


Sceneform UX та Java 8: оновлення залежностей вашого проекту

Почнемо з додавання залежностей, якими ми будемо користуватися протягом цього проекту. Відкрийте файл build.gradle на рівні модуля та додайте UX-бібліотеку Sceneform, яка містить ArFragment, який ми будемо використовувати у нашому макеті:

залежності: {file fileTree (реж .: libs, включають:) реалізація androidx.appcompat: appcompat: 1.0.2 реалізація androidx.constraintlayout: constraintlayout: 1.1.3 testImplication junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1 // Sceneform UX забезпечує UX ресурси, включаючи ArFragment // реалізація "com.google.ar.sceneform.ux: sceneform-ux: 1.7.0" реалізація "ком. android.support:appcompat-v7:28.0.0 "}

Sceneform використовує мовні конструкції з Java 8, тому нам також потрібно оновити сумісність джерела та цільову сумісність нашого проекту до Java 8:

compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}

Нарешті, нам потрібно застосувати плагін Sceneform:

застосувати плагін: com.google.ar.sceneform.plugin

Ваш завершений файл build.gradle повинен виглядати приблизно так:

застосувати плагін: com.android.application андроїд {compileSdkVersion 28 defaultConfig {ApplicationID "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 VersionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"} compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8} buildTypes {release {minifyEnabled false proguardFiles getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} залежності {виконання fileTree (dir: libs, включають:) реалізація androidx.appcompat: appcompat .2 реалізація androidx.constraintlayout: constraintlayout: 1.1.3 testImplication junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTestImplementation androidx.test.espresso: espresso-core: 3.1.1 реалізація "com.google. ar.sceneform.ux: sceneform-ux: 1.7.0 "реалізація" com.android.support:appcompat-v7:28.0.0 "} застосувати плагін: com.google.ar .sceneform.plugin

Запит дозволів за допомогою ArFragment

Наш додаток використовує камеру пристрою для аналізу його оточення та розміщення 3D-моделей у реальному світі. Перш ніж наша програма може отримати доступ до камери, вона потребує дозволу камери, тому відкрийте Маніфест свого проекту та додайте наступне:

Android 6.0 надав користувачам можливість надавати, забороняти та відкликати дозволи на основі дозволу за дозволом. Хоча це покращило користувацький досвід, розробникам Android тепер доводиться вручну вимагати дозволів під час виконання та обробляти відповідь користувача. Хороша новина полягає в тому, що під час роботи Google ARCore реалізується процес запиту дозволу на камеру та обробки відповіді користувача. автоматично.

Компонент ArFragment автоматично перевіряє, чи має ваш додаток дозвіл на камеру, а потім, якщо потрібно, запитує його перед створенням сеансу AR. Оскільки ми будемо використовувати ArFragment у нашому додатку, нам не потрібно писати код, щоб запитувати дозвіл камери.

Потрібна або необов'язкова?

Існує два типи програм, які використовують функціональність AR:

1. Необхідна AR

Якщо ваша програма покладається на Google ARCore для того, щоб забезпечити хороший досвід роботи користувачів, вам потрібно переконатися, що вона завантажується лише на пристрої, що підтримують ARCore. Якщо ви позначаєте додаток як "AR Required", воно відображатиметься лише в магазині Google Play, якщо пристрій підтримує ARCore.

З моменту нашої програми робить вимагають ARCore, відкрийте Manifest і додайте наступне:

Також є ймовірність, що ваша програма може бути завантажена на пристрій, який теоретично підтримує ARCore, але насправді не встановлено ARCore. Щойно ми позначимо наш додаток як "необхідний для AR", Google Play автоматично завантажить і встановить ARCore поряд із вашим додатком, якщо він ще не присутній на цільовому пристрої.

Просто майте на увазі, що навіть якщо ваш додаток андроїд: потрібно = "вірно", ви будете ще потрібно перевірити наявність ARCore під час виконання, оскільки є ймовірність, що користувач може видалити ARCore після завантаження вашого додатка, або що їх версія ARCore застаріла.

Хороша новина полягає в тому, що ми використовуємо ArFragment, який автоматично перевіряє встановлення та оновлення ARCore перед створенням кожен AR-сеанс - тому ще раз, це нам не доведеться реалізовувати вручну.

2. АР необов'язково

Якщо у вашому додатку є функції AR, які є приємними, але не мають важливого значення для забезпечення його основної функціональності, тоді ви можете позначити цю програму як "необов’язковий для AR". Потім ваша програма може перевірити, чи є Google ARCore під час виконання, і відключити її Особливості AR на пристроях, які не підтримують ARCore.

Якщо ви створили додаток "AR необов’язково", ARCore зробить це ні автоматично встановлюється поряд із вашим додатком, навіть якщо на пристрої є все обладнання та програмне забезпечення, необхідне для підтримки ARCore. Після цього у вашому додатку «AR необов’язково» потрібно перевірити, чи є ARCore присутній та оновлений, та завантажити останню версію як і коли потрібно.

Якщо ARCore не має вирішального значення для вашої програми, ви можете додати до Manifest таке:

Хоча у мене відкритий Manifest, я також додаю android: configChanges та android: screenOrientation, щоб гарантувати, що орієнтація ручок MainActivity витончено змінюється.

Додавши все це до свого Manifest, готовий файл повинен виглядати приблизно так:

Додайте ArFragment у свій макет

Я буду використовувати ArFragment ARCore, оскільки він автоматично обробляє ряд ключових завдань ARCore на початку кожного сеансу AR. Найголовніше, що ArFragment перевіряє, чи встановлена ​​на пристрої сумісна версія ARCore і що програма зараз має дозвіл на камеру.

Після того, як ArFragment перевірить, що пристрій може підтримувати функції AR вашого додатка, він створює сесію ArSceneView ARCore, і досвід AR-програми вашої програми готовий до роботи!

Ви можете додати фрагмент ArFragment до файлу макета, як і звичайний фрагмент Android, тому відкрийте файл Activity_main.xml і додайте компонент "com.google.ar.sceneform.ux.ArFragment".

Завантаження 3D-моделей за допомогою Google Poly

Існує кілька різних способів створення Renderables, але в цій статті ми будемо використовувати файл об’єктів 3D.

Sceneform підтримує тривимірні активи у форматах .OBJ, .glTF та .FBX, з анімацією або без неї. Є багато місць, де можна придбати тривимірні моделі в одному з таких підтримуваних форматів, але в цьому підручнику я буду використовувати .OBJ файл, завантажений із сховища Poly в Google.

Перейдіть на веб-сайт Poly і завантажте об’єкт, який ви хочете використовувати, у форматі .OBJ (я використовую цю модель T-Rex).

  • Розпакуйте папку, яка повинна містити файл вихідного ресурсу вашої моделі (.OBJ, .FBX або .glTF). Залежно від моделі, ця папка може також містити деякі залежності моделі, такі як файли у форматах .mtl, .bin, .png або .jpeg.

Імпорт 3D-моделей в Android Studio

Отримавши ваш актив, вам потрібно імпортувати його в Android Studio за допомогою плагіна Sceneform. Це багатоетапний процес, який вимагає:

  • Створіть папку "sampledata". Sampledata - це новий тип папки для зразкових даних про час проектування, які не включатимуться у ваш APK, але будуть доступні в редакторі Android Studio.
  • Перетягніть оригінальний файл ресурсу .OBJ у папку "sampledata".
  • Виконайте імпорт та конвертацію Sceneform у файлі .OBJ, який створить файли .sfa та .sfb.

Хоча це може здатися більш простим, не перетягніть файл .OBJ безпосередньо в каталог "res" вашого проекту, оскільки це призведе до необхідності включення моделі у ваш APK.

Проекти Android Studio не містять папки "sampledata" за замовчуванням, тому вам потрібно створити її вручну:

  • Натисніть папку "додаток" вашого проекту, натисніть клавішу управління.
  • Виберіть "Нове> Зразок каталогу даних" та створіть папку з назвою "sampledata".
  • Перейдіть до файлів 3D-моделі, які ви завантажили раніше. Знайдіть файл вихідного ресурсу (.OBJ, .FBX або .glTF), а потім перетягніть його в каталог "sampledata".
  • Перевірте, чи має ваша модель залежність (наприклад, файли у форматах .mtl, .bin, .png або .jpeg). Якщо ви знайдете будь-який з цих файлів, перетягніть їх у папку "sampledata".
  • У студії Android натисніть клавішу Control у вихідному файлі 3D-моделі (.OBJ, .FBX або .glTF), а потім виберіть "Імпортувати сценарій активів".

  • Наступне вікно відображає деяку інформацію про файли, які збирається сценарій, включаючи те, де отриманий файл .sfa буде зберігатися у вашому проекті; Я буду використовувати каталог "raw".
  • Коли ви задоволені введеною вами інформацією, натисніть "Готово".

Цей імпорт вносить кілька змін у ваш проект. Якщо ви відкриєте файл build.gradle, ви побачите, що плагін Sceneform додано як залежність від проекту:

залежності {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: плагін: 1.7.0 // ПРИМІТКА: Не розміщуйте сюди залежність своїх програм; вони належать // в окремих модулях файлів build.gradle}}

Відкрийте файл build.gradle на рівні модуля, і ви знайдете нову запис sceneform.asset () для імпортованої 3D-моделі:

застосувати плагін: com.google.ar.sceneform.plugin // "Шлях джерела активів", який ви вказали під час імпорту // sceneform.asset (sampledata / dinosaur.obj, // "Матеріальний шлях", який ви вказали під час імпорту // За замовчуванням , // "Sfa Output Path", який ви вказали під час імпорту // sampledata / dinosaur.sfa, // ".sfb вихідний шлях", який ви вказали під час імпорту // src / main / properties / dinosaur)

Якщо ви подивитеся на свої "sampledata" та "raw" папки, то побачите, що вони містять нові .sfa та .sfb файли відповідно.

Ви можете переглянути .sfa файл у новій програмі перегляду сцени Android Studio:

  • Виберіть "Перегляд> Інструменти Windows> Переглядач" на панелі меню Android Studio.
  • У меню зліва виберіть файл .sfa. Ваша 3D-модель тепер повинна з’явитися у вікні перегляду.

Покажіть свою 3D-модель

Наступним нашим завданням є створення сеансу AR, який розуміє його оточення та дозволяє користувачеві розміщувати 3D-моделі в доповненій сцені.

Це вимагає від нас:

1. Створіть змінну члена ArFragment

ArFragment виконує значну частину важкої атлетики, яка бере участь у створенні сеансу AR, тому ми будемо посилатися на цей фрагмент у нашому класі MainActivity.

У наступному фрагменті я створюю змінну члена для ArFragment і потім ініціалізую її методом onCreate ():

приватний ArFragment arCoreFragment; @Override захищений недійсним onCreate (пакет збереженихInstanceState) {super.onCreate (збереженийInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Знайди фрагмент, використовуючи диспетчер фрагментів // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. Створіть ModelRenderable

Тепер нам потрібно перетворити наш .sfb файл в ModelRenderable, який з часом візуалізує наш 3D-об’єкт.

Тут я створюю ModelRenderable з файлу res / raw / dinosaur .sfb мого проекту:

приватний ModelRenderable dinoRenderable; ... ... ... ModelRenderable.builder () .setSource (це, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable) .execeptionly (передавальний -> {Log.e ( TAG, "Неможливо завантажити передавальний файл"); return null;}); }

3. Відповідь на введення користувача

ArFragment має вбудовану підтримку для жестів натискання, перетягування, притискання та перекручування.

У нашому додатку користувач додасть 3D-модель до площини ARCore, давши цю площину краном.

Щоб забезпечити цю функціональність, нам потрібно зареєструвати зворотний дзвінок, на який буде викликано кожен раз, коли натискається літак:

arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Площина літака, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;}

4. Прив’яжіть свою модель

На цьому кроці ми збираємося отримати ArSceneView і приєднати його до AnchorNode, який буде служити батьківським вузлом сцени.

ArSceneView відповідає за виконання декількох важливих завдань ARCore, включаючи надання зображень на камеру пристрою та показ анімації Sceneform UX, яка демонструє, як користувач повинен утримувати та переміщувати свій пристрій, щоб розпочати досвід AR. ArSceneView також виділить будь-які площини, які він виявляє, готові користувачеві розмістити свої 3D-моделі в межах сцени.

Компонент ARSceneView приєднаний до нього Сцена, яка є структурою даних батько-дочір, що містить усі Вузли, які потрібно візуалізувати.

Почнемо зі створення вузла типу AnchorNode, який буде виконувати роль батьківського вузла ArSceneView.

Усі анкерні вузли залишаються в одній реальній світовій позиції, тому, створюючи прив'язний вузол, ми гарантуємо, що наші 3D-моделі залишаться нерухомими на місці в межах доповненої сцени.

Створимо наш якірний вузол:

AnchorNode anchorNode = новий AnchorNode (прив’язка);

Потім ми можемо отримати ArSceneView, використовуючи getArSceneView (), і приєднати його до AnchorNode:

anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ());

5. Додайте підтримку для переміщення, масштабування та обертання

Далі я збираюся створити вузол типу TransformableNode. TransformableNode відповідає за переміщення, масштабування та обертання вузлів на основі жестів користувача.

Щойно ви створили TransformableNode, ви зможете прикріпити його Renderable, що надасть моделі можливість масштабування та переміщення на основі взаємодії з користувачем. Нарешті, вам потрібно підключити TransformableNode до AnchorNode, у взаємозв'язку дитина-батько, що забезпечує TransformableNode і Відображення залишаються закріпленими на місці в рамках доповненої сцени.

TransformableNode transformableNode = новий TransformableNode (arCoreFragment.getTransformationSystem ()); // Підключити transformableNode до anchorNode // transformableNode.setParent (anchorNode); transformableNode.setRenderable (dinoRenderable); // Виберіть вузол // transformableNode.select (); }); }

Виконана MainActivity

Виконавши все вищезазначене, ваш MainActivity повинен виглядати приблизно так:

імпорт android.app.Activity; імпортувати android.app.ActivityManager; імпортувати androidx.appcompat.app.AppCompatActivity; імпорт android.content.Context; імпорт android.net.Uri; імпорт android.os.Build; імпортувати android.os.Build.VERSION_CODES; імпортувати android.os.Bundle; імпорт android.util.Log; імпорт android.view.MotionEvent; імпорт androidx.annotation.RequiresApi; імпортувати com.google.ar.core.Anchor; імпортувати com.google.ar.core.HitResult; імпортувати com.google.ar.core.Plane; імпортувати com.google.ar.sceneform.AnchorNode; імпортувати com.google.ar.sceneform.rendering.ModelRenderable; імпортувати com.google.ar.sceneform.ux.ArFragment; імпортувати com.google.ar.sceneform.ux.TransformableNode; загальнодоступний клас MainActivity розширює AppCompatActivity {приватний статичний остаточний рядок TAG = MainActivity.class.getSimpleName (); приватний статичний кінцевий подвійний MIN_OPENGL_VERSION = 3.0; // Створіть змінну члена для ModelRenderable // private ModelRenderable dinoRenderable; // Створення змінної члена для ArFragment // приватний ArFragment arCoreFragment; @RequiresApi (api = VERSION_CODES.N) @ Захищений недійсний параметр onCreate (пакет збереженихInstanceState) {super.onCreate (збереженийInstanceState); if (! checkDevice ((this))) {return; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // Знайдіть фрагмент, використовуючи диспетчер фрагментів // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); if (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// Збірка ModelRenderable // ModelRenderable.builder () .setSource (this, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable ). виключно (// Якщо виникає помилка ... // кидаюча -> {//..., тоді надрукуйте наступне в Logcat // Log.e (TAG, "Неможливо завантажити видатний"); return null;} ); } // Прослухати події onTap // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, Площина площини, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} Anchor anchor = hitResult.createAnchor (); // Побудувати вузол типу AnchorNode // AnchorNode anchorNode = новий AnchorNode (anchor); // Підключити AnchorNode до сцени // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); // Побудувати вузол типу TransformableNode // TransformableNode transformableNode = новий TransformableNode (arCoreFragment.getTransformationSystem ()); // Підключення TransformableNode до AnchorNode // transformableNode.setParent (anchorNode); // Приєднати перетворюваний // transformableNode.setRenderable (dinoRenderable); / transformableNode.select ();}); } загальнодоступна статична булева перевірка пристрою (остаточна активність) {// Якщо на пристрої працює Android Marshmallow або раніше ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//...друкуйте наступне на Logcat // Log.e (TAG, "Сценаформа вимагає Android N або вище"); Activity.finish (); повернути помилкове; } Рядок openGlVersionString = ((ActivityManager) Activity.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // Перевірте версію OpenGL ES // .getGlEsVersion (); // Якщо на пристрої працює що-небудь менше, ніж OpenGL ES 3.0 ... // if (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {//...друкуйте наступне в Logcat // Log.e (TAG, " Потрібен OpenGL ES 3.0 або вище "); Activity.finish (); повернути помилкове; } повернути правду; }}

Ви можете завантажити завершений проект з GitHub.

Тестування додатка розширеної реальності Google ARCore

Тепер ви готові протестувати свою програму на фізичному підтримуваному пристрої Android. Якщо у вас немає пристрою, який підтримує ARCore, можна протестувати додаток AR в емуляторі Android (з додатковою конфігурацією, про яку ми розповімо в наступному розділі).

Щоб протестувати свій проект на фізичні Пристрій Android:

  • Встановіть свою програму на цільовому пристрої.
  • Коли з’явиться запит, надайте програмі доступ до камери вашого пристрою.
  • Якщо вам буде запропоновано встановити або оновити додаток ARCore, натисніть «Продовжити», а потім завершіть діалог, щоб переконатися, що у вас запущена остання і найкраща версія ARCore.
  • Тепер вам слід побачити вигляд камери, доповнений анімацією руки, яка тримає пристрій. Наведіть камеру на рівну поверхню і рухайте пристрій круговим рухом, як це демонструє анімація. Через кілька моментів повинна з’явитися серія крапок, що свідчить про виявлення літака.

  • Після того, як ви будете задоволені положенням цих крапок, дайте їм крана - ваша 3D-модель тепер повинна з’явитися у вибраній вами площині!

  • Спробуйте фізично пересуватися по моделі; залежно від вашого оточення, ви можете зробити цілих 360 градусів навколо нього. Також слід перевірити, чи об’єкт кидає тінь, що відповідає реальним джерелам світла.

Тестування ARCore на віртуальному пристрої Android

Для тестування додатків ARCore на віртуальному пристрої Android (AVD) вам знадобиться Android Emulator версії 27.2.9 або новішої версії. Ви також повинні бути увійшли до магазину Google Play на AVD та увімкнути OpenGL ES 3.0 або новішу версію.

Щоб перевірити, чи увімкнено OpenGL ES 3.0 або новішої версії на вашому AVD:

  • Запустіть AVD, як звичайно.
  • Відкрийте нове вікно терміналу (Mac) або командний рядок (Windows).
  • Змініть каталог ("cd"), щоб термінальний / командний рядок вказував на розташування програми "adb" для вашої Android SDK, наприклад, моя команда виглядає так:

Cd / Користувачі / jessicathornsby / Бібліотека / Android / sdk / платформа-інструменти

  • Натисніть клавішу «Enter» на клавіатурі.
  • Скопіюйте / вставте наступну команду в термінал, а потім натисніть клавішу “Enter”:

./adb logcat | grep eglMakeCurrent

Якщо термінал повертає "ver 3 0" або вище, тоді OpenGL ES налаштований правильно. Якщо в терміналі або командному рядку відображається щось раніше, ніж 3.0, вам потрібно буде включити OpenGL ES 3.0:

  • Переключіться назад на AVD.
  • Знайдіть смужку кнопок "Extended Control", яка плаває поруч з Android Emulator, а потім виберіть "Settings> Advanced".
  • Перейдіть до “Рівень API API OpenGL> Максимум рендерінга (до OpenGL ES 3.1).”
  • Перезавантажте емулятор.

У вікні Термінал / Командний рядок скопіюйте та вставте наступну команду, а потім натисніть клавішу «Enter».

./adb logcat | grep eglMakeCurrent

Тепер ви повинні отримати результат "ver 3 0" або вище, що означає, що OpenGL ES налаштований правильно.

Нарешті, переконайтеся, що на вашому AVD працює сама остання версія ARCore:

  • Перейдіть на сторінку GitHub ARCore і завантажте останню версію ARCore для емулятора. Наприклад, на момент написання останнього випуску було "ARCore_1.7.0.x86_for_emulator.apk"
  • Перетягніть APK на свій запущений AVD.

Щоб протестувати свій проект на AVD, встановіть свою програму та надайте їй доступ до "камери" AVD, коли буде запропоновано.

Тепер вам слід побачити фотоапарат з імітованої кімнати. Щоб перевірити свою програму, перемістіться по цьому віртуальному простору, знайдіть змодельовану плоску поверхню та натисніть, щоб розмістити модель на цій поверхні.

Ви можете переміщати віртуальну камеру навколо віртуальної кімнати, натискаючи та утримуючи клавіші “Option” (macOS) або “Alt” (Linux або Windows), а потім скористатися будь-яким із наведених нижче комбінацій клавіш:

  • Перемістіться вліво або вправо. Натисніть A або D.
  • Переміщення вниз або вгору. Натисніть Q або E.
  • Рухайтеся вперед або назад. Натисніть W або S.

Ви також можете "переміщатися" по віртуальній сцені, натискаючи "Option" або "Alt", а потім за допомогою миші. Спочатку це може здатися трохи незграбним, але з практикою ви повинні мати можливість успішно досліджувати віртуальний простір. Знайшовши імітовану площину, клацніть білі точки, щоб розмістити свою 3D-модель на цій поверхні.

Підведенню

У цій статті ми створили простий додаток додаткової реальності, використовуючи ARCore та плагін Sceneform.

Якщо ви вирішили використовувати Google ARCore у власних проектах, то обов'язково поділіться своїми творами в коментарях нижче!

У цифрову епоху багато робочих місць стали менш затребуваними, а інші зросли попитом. Аналітик інформаційної безпеки - це роль, яка швидко зростає і не виявляє ознак уповільнення. Якщо аналітик кіберб...

Останнім часом Google наполегливо працює над тим, щоб підтримувати зовнішній вигляд екосистеми додатків сучасним та сучасним. Останні програми G uite, які отримують оновлення - це Документи, Листи та ...

Для Вас