...
🤳 Блог Android новостей, посвященный советам экспертов, новостям, обзорам, телефонам Android, приложениям, инструкциям, планшетам и мобильным телефонам.

Poly API: получение 3D-ресурсов для приложений Android VR и AR

591

У вас есть отличная идея для мобильного приложения виртуальной реальности (VR) или дополненной реальности (AR), но вы не знаете, как воплотить свое видение в жизнь?

Если вы не Android-разработчик, который к тому же является опытным 3D-художником, создание всех ресурсов, необходимых для обеспечения полного погружения в процесс, может оказаться непростым процессом.

То, что у вас нет времени, ресурсов или опыта, необходимых для создания 3D-моделей, не означает, что вы не можете создать отличное мобильное приложение для виртуальной или дополненной реальности! Огромный спектр 3D-ресурсов, свободно доступных во всемирной паутине, плюс все API, фреймворки и библиотеки, необходимые для загрузки и рендеринга этих ресурсов в ваших приложениях Android.

Читать далее: теперь вы можете посетить любой веб-сайт с помощью Daydream VR. Даже тот.

В этой статье мы рассмотрим Poly, онлайн-репозиторий и API, которые предоставляют вам тысячи трехмерных ресурсов. К концу этой статьи вы создадите приложение, которое извлекает ресурс 3D Poly во время выполнения, а затем отображает его с помощью популярной библиотеки Processing для Android.

Отображение 3D-ресурсов с помощью Poly

Если вы когда-либо занимались разработкой Unity, то репозиторий Poly похож на Unity Asset Store – за исключением того, что в Poly все бесплатно!

Многие из 3D-моделей Poly публикуются под лицензией Creative Commons, поэтому вы можете свободно использовать, изменять и ремикшировать эти активы, если вы предоставите создателю соответствующую отметку.

Все 3D-модели Poly разработаны для совместимости с платформами Google VR и AR, такими как Daydream и ARCore, но вы можете использовать их где угодно и как угодно – потенциально вы даже можете использовать их с ARKit от Apple!

Когда дело доходит до извлечения и отображения ресурсов Poly, у вас есть два варианта. Во-первых, вы можете загрузить активы на свой компьютер, а затем импортировать их в Android Studio, чтобы они поставлялись вместе с вашим приложением и вносили свой вклад в его размер APK, или вы можете получить эти активы во время выполнения с помощью Poly API.

Кроссплатформенный API Poly на основе REST обеспечивает программный доступ только для чтения к огромной коллекции 3D-моделей Poly. Это сложнее, чем объединение ресурсов с вашим APK, но получение ресурсов Poly во время выполнения дает несколько преимуществ, в первую очередь то, что это помогает держать размер APK под контролем, что может повлиять на количество людей, загружающих ваше приложение.

Вы также можете использовать Poly API, чтобы предоставить своим пользователям больший выбор, например, если вы разрабатываете мобильную игру, вы можете позволить своим пользователям выбирать из ряда моделей персонажей.

Поскольку вы можете изменять модели Poly, вы даже можете позволить своим пользователям настраивать выбранного персонажа, например, изменяя цвет волос или глаз или комбинируя его с другими активами Poly, такими как различное оружие и доспехи. Таким образом, Poly API может помочь вам предоставить впечатляющий набор 3D-ресурсов с широкими возможностями для персонализации опыта – и все это при сравнительно небольшой работе. Ваши пользователи будут уверены, что вы потратили уйму времени, тщательно создавая все эти 3D-модели!

Создание проекта 3D-моделирования

Мы собираемся создать приложение, которое извлекает конкретный актив Poly при первом запуске приложения, а затем отображает этот актив в полноэкранном режиме по запросу пользователя.

Чтобы помочь нам получить этот ресурс, я буду использовать Fuel, сетевую библиотеку HTTP для Kotlin и Android. Начните с создания нового проекта с настройками по вашему выбору, но при появлении запроса выберите «Включить поддержку Kotlin».

Все вызовы, которые вы делаете в Poly API, должны включать ключ API, который используется для идентификации вашего приложения и обеспечения ограничений на использование. Во время разработки и тестирования вы часто будете использовать неограниченный ключ API, но если у вас есть какие-либо планы по выпуску этого приложения, вы должны использовать ключ API, ограниченный Android.

Чтобы создать ограниченный ключ, вам необходимо знать сертификат подписи SHA-1 вашего проекта, поэтому давайте сейчас получим эту информацию:

  • Выберите вкладку «Gradle» в Android Studio (где находится курсор на следующем снимке экрана). Откроется панель «Gradle projects».

Poly API: получение 3D-ресурсов для приложений Android VR и AR

  • На панели «Проекты Gradle» дважды щелкните, чтобы развернуть «корень» проекта, а затем выберите «Задачи> Android> Отчет о подписи». Это открывает новую панель в нижней части окна Android Studio.
  • Нажмите кнопку «Переключить выполнение задач / текстовый режим» (где находится курсор на следующем снимке экрана).

Poly API: получение 3D-ресурсов для приложений Android VR и AR

Панель «Выполнить» теперь обновится, чтобы отобразить много информации о вашем проекте, включая его отпечаток SHA-1.

Создайте учетную запись Google Cloud Platform

Чтобы получить необходимый ключ API, вам понадобится учетная запись Google Cloud Platform (GPC).

Если у вас нет учетной записи, вы можете подписаться на 12-месячную бесплатную пробную версию, перейдя на страницу «Попробуйте Cloud Platform бесплатно» и следуя инструкциям. Обратите внимание, что требуется кредитная или дебетовая карта, но, согласно странице часто задаваемых вопросов, она используется только для проверки вашей личности, и «в течение бесплатного пробного периода вам не будет взиматься плата или выставлен счет».

Получите свой ключ API Poly

Как только вы все зарегистрируетесь, вы можете включить Poly API и создать свой ключ:

  • Зайдем к GCP консоли.
  • Щелкните значок с линиями в верхнем левом углу и выберите «API-интерфейсы и службы> Панель управления».
  • Выберите «Включить API и службы».
  • В меню слева выберите «Другое».
  • Выберите карточку «Poly API».
  • Нажмите кнопку «Включить».
  • Через несколько секунд вы попадете на новый экран; откройте боковое меню и выберите «API и службы> Учетные данные».

Poly API: получение 3D-ресурсов для приложений Android VR и AR

  • В следующем всплывающем окне выберите «Ограничить ключ».
  • Дайте вашему ключу отличительное имя.
  • В разделе «Ограничения приложений» выберите «Приложения для Android».
  • Выберите «Добавить имя пакета и отпечаток пальца».
  • Скопируйте / вставьте отпечаток SHA-1 вашего проекта в поле «Signing-certificate fingerprint».
  • Введите имя пакета вашего проекта (оно отображается в вашем манифесте и вверху каждого файла класса).
  • Нажмите «Сохранить».

Теперь вы попадете на экран «Учетные данные» вашего проекта, который содержит список всех ваших ключей API, включая только что созданный ключ API с поддержкой Poly.

Зависимости проекта: расширения Fuel, P3D и Kotlin

Чтобы получить и отобразить активы Poly, нам понадобится помощь некоторых дополнительных библиотек:

  • Топливо. В настоящее время Poly не имеет официального набора инструментов для Android, поэтому вам придется работать с API напрямую, используя его интерфейс REST. Чтобы упростить этот процесс, я буду использовать сетевую библиотеку Fuel HTTP.
  • Обработка для Android. Я буду использовать средство визуализации P3D этой библиотеки для отображения ресурса Poly.

Откройте файл build.gradle вашего проекта и добавьте эти две библиотеки в качестве зависимостей проекта:

dependencies {
   implementation fileTree(include: ['.jar'], dir: 'libs')
   implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
   implementation 'com.android.support:appcompat-v7:27.1.1'

//Add the Fuel library//

   implementation 'com.github.kittinunf.fuel:fuel-android:1.13.0'

//Add the Processing for Android engine//

   implementation 'org.p5android:processing-core:4.0.1'
}

Чтобы сделать наш код более лаконичным, я также буду использовать расширения Kotlin для Android, поэтому давайте добавим этот плагин, пока у нас открыт файл build.gradle:

apply plugin: 'kotlin-android-extensions'

Наконец, поскольку мы получаем ресурс из Интернета, нашему приложению требуется разрешение в Интернете. Откройте свой манифест и добавьте следующее:

<uses-permission android:name="android.permission.INTERNET"/>

Добавление ключа API

Каждый раз, когда наше приложение запрашивает актив у Poly, оно должно включать действительный ключ API. Я использую текст-заполнитель, но вы должны заменить этот заполнитель своим собственным ключом API, если приложение когда-либо будет работать.

Я также добавляю проверку, чтобы приложение отображало предупреждение, если вы забудете заменить текст «INSERT-YOUR-API-KEY»:

import android.os.Bundle
import android.support.v7.app.AppCompatActivity

Получение актива

Вы можете выбрать любой актив на сайте Google Poly, но я буду использовать эту модель планеты Земля.

Poly API: получение 3D-ресурсов для приложений Android VR и AR

Вы извлекаете актив, используя его идентификатор, который отображается в конце заголовка URL (выделен на предыдущем снимке экрана). Мы объединяем этот идентификатор ресурса с хостом Poly API, который является «https://poly.googleapis.com/v1».

import

Затем нам нужно сделать запрос GET к URL-адресу ресурса, используя метод httpGet(). Я также указываю, что тип ответа должен быть JSON:

import android.content.Intent
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.Toast
import com.github.kittinunf.fuel.android.extension.responseJson
import com.github.kittinunf.fuel.httpDownload
import com.github.kittinunf.fuel.httpGet
import kotlinx.android.synthetic.main.activity_main.*
import java.io.File

Ресурс может иметь несколько форматов, например OBJ, GLTF и FBX. Нам нужно определить, что актив находится в формате OBJ.

На этом этапе я также извлекаю имена и URL-адреса всех файлов, которые нам нужно загрузить,
включая основной файл ресурса («корень»), а также все связанные файлы материалов и текстур («ресурсы»).

Если наше приложение не может правильно получить актив, оно отобразит всплывающее сообщение, информирующее пользователя.

import

На этом этапе, если вы устанавливаете проект на свой смартфон или планшет Android или виртуальное устройство Android (AVD), актив будет успешно загружен, но приложение фактически не отобразит его. Давайте исправим это сейчас!

Создание второго экрана: добавление навигации

Мы собираемся отобразить актив в полноэкранном режиме, поэтому давайте обновим наш файл main_activity.xml, включив в него кнопку, при нажатии которой будет запускаться полноэкранный режим Activity.

<?xml version="1.0" encoding="utf-8"?>

Теперь добавим onClickListener в конец файла MainActivity.kt:

import

Создание 3D-холста

Теперь давайте создадим Activity, в котором мы будем отображать наш актив в полноэкранном режиме:

  • Удерживая нажатой клавишу Control, щелкните файл MainActivity.kt своего проекта и выберите «Создать> Файл / класс Kotlin».
  • Откройте раскрывающийся список «Вид» и выберите «Класс».
  • Дайте этому классу имя «SecondActivity» и нажмите «ОК».

Чтобы нарисовать 3D-объект, нам понадобится 3D-холст! Я собираюсь использовать средство визуализации P3D библиотеки Processing для Android, что означает расширение класса PApplet, переопределение метода settings () и последующую передачу P3D в качестве аргумента методу fullScreen (). Нам также необходимо создать свойство, которое представляет актив Poly как объект PShape.

private fun displayAsset() 

Затем нам нужно инициализировать объект PShape, переопределив метод setup (), вызвав метод loadShape () и затем передав абсолютный путь к файлу .obj:

override fun setup() 

Рисование на холсте P3D

Чтобы рисовать на этом 3D-холсте, нам нужно переопределить метод draw ():

По умолчанию многие активы, полученные из Poly API, имеют меньшую сторону, поэтому, если вы запустите этот код сейчас, вы можете даже не увидеть актив, в зависимости от конфигурации вашего экрана. При создании 3D-сцен вы обычно создаете настраиваемую камеру, чтобы пользователь мог исследовать сцену и просматривать ваши 3D-ресурсы со всех 360 градусов. Однако это выходит за рамки данной статьи, поэтому я буду вручную изменять размер и положение актива, чтобы убедиться, что он удобно размещается на экране.

Вы можете увеличить размер актива, передав отрицательное значение методу scale ():

scale(-

Вы можете настроить положение актива в виртуальном трехмерном пространстве, используя метод translate () и следующие координаты:

  • X. Располагает актив по горизонтальной оси.
  • Y. Располагает актив по вертикальной оси.
  • Z. Это ось «глубина / высота», которая преобразует 2D-объект в 3D-объект. Положительные значения создают впечатление, что объект приближается к вам, а отрицательные значения создают впечатление, что объект удаляется от вас.

Обратите внимание, что преобразования являются кумулятивными, поэтому все, что происходит после функции, накапливает эффект.

Я использую следующее:

translate(-

Вот завершенный код:

Затем нам нужно создать соответствующий файл макета, в который мы добавим трехмерный холст как виджет FrameLayout:

  • Удерживая нажатой клавишу Control, щелкните папку «res> layout» вашего проекта.
  • Выберите «Файл ресурсов макета».
  • Дайте этому файлу имя «activity_second» и нажмите «OK».
<?xml version="1.0" encoding="utf-8"?>

Теперь у нас есть FrameLayout «asset_view», нам нужно сообщить об этом нашему SecondActivity! Вернитесь к файлу SecondActivity.kt, создайте новый экземпляр PFragment и наведите его в направлении нашего виджета «asset_view»:

import

Последний шаг – добавление SecondActivity в ваш манифест:

<?xml version="1.0" encoding="utf-8"?>

Тестирование вашего проекта

Теперь мы готовы протестировать готовый проект! Установите его на свое устройство Android или AVD и убедитесь, что у вас есть активное подключение к Интернету. Как только приложение запустится, оно загрузит актив, и вы сможете просмотреть его, нажав кнопку «Показать актив».

Вы можете скачать этот полный проект с GitHub.

Подведение итогов

В этой статье мы рассмотрели, как использовать Poly API для извлечения 3D-актива во время выполнения и как отобразить этот актив с помощью библиотеки Processing для Android. Считаете ли вы, что Poly API может сделать разработку VR и AR доступной для большего числа людей? Дайте нам знать в комментариях ниже!

Связанный

Источник записи: https://www.androidauthority.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее