„Poly API“: 3D išteklių gavimas jūsų VR ir AR „Android“ programoms

Autorius: Peter Berry
Kūrybos Data: 14 Rugpjūtis 2021
Atnaujinimo Data: 8 Gegužė 2024
Anonim
I Made Squid Game, But it’s a Multiplayer Game
Video.: I Made Squid Game, But it’s a Multiplayer Game

Turinys


Ar turite puikią virtualios realybės (VR) ar papildytos realybės (AR) mobiliųjų programų idėją, bet net neįsivaizduojate, kaip atgaivinti savo viziją?

Jei nesate „Android“ kūrėjas, kuris taip pat yra patyręs 3D menininkas, sukūrimas visų išteklių, kurių reikia norint įsitraukti į 360 laipsnių patirtį, gali būti bauginantis procesas.

Tiesiog todėl, kad neturite laiko, išteklių ar patirties, reikalingų 3D modeliams kurti, nėra reiškia, kad negalite sukurti puikios VR ar AR programos mobiliesiems! Yra daugybė 3D išteklių, laisvai pasiekiamų žiniatinklyje, taip pat visos API, sistemos ir bibliotekos, kurių jums reikia atsisiųsti ir pateikti šiuos išteklius „Android“ programose.

Skaitykite toliau: Dabar galite apsilankyti bet kurioje svetainėje naudodami „Daydream VR“. Net tą.

Šiame straipsnyje apžvelgsime internetinę saugyklą „Poly“ ir API, kuri po ranka suteikia tūkstančius 3D išteklių. Pasibaigus šiam straipsniui, būsite sukūrę programą, kuri paleidžia 3D poliklinikos išteklius veikimo metu, o tada pateikia jį naudodama populiariąją duomenų apdorojimo „Android“ biblioteką.


3D turto rodymas naudojant „Poly“

Jei kada nors mėgote kurti „Unity“, tai „Poly“ saugykla yra panaši į „Unity“ turto parduotuvę - išskyrus tai, kad viskas „Poly“ yra nemokama!

Daugelis „3D“ 3D modelių yra publikuoti pagal „Creative Commons“ licenciją, todėl jūs galite laisvai naudoti, modifikuoti ir remiksuoti šį turtą, jei tik suteikiate kūrėjui tinkamą kreditą.

Visi „3D“ 3D modeliai yra sukurti taip, kad būtų suderinami su „Google“ VR ir AR platformomis, tokiomis kaip „Daydream“ ir „ARCore“, tačiau juos galite naudoti kur ir kaip norite - potencialiai galėtumėte juos naudoti net su „Apple ARKit“!

Kai reikia nuskaityti ir parodyti daugialypius išteklius, turite dvi galimybes. Pirmiausia galite atsisiųsti išteklius į savo kompiuterį ir importuoti juos į „Android Studio“, kad jie būtų atsiųsti kartu su jūsų programa ir prisideda prie jos APK dydžio. Arba galite nuskaityti šį turtą vykdydami „Poly API“.

Kelių platformų REST pagrindu sukurta „Poly API“ suteikia programinę prieigą prie tik skaitomos „Poly“ 3D modelių kolekcijos. Tai sudėtingesnė nei APK turinio susiejimas, tačiau norint gauti daugialypės terpės naudojimą vykdymo metu yra keletas pranašumų, ypač tai, kad tai padeda išlaikyti jūsų APK dydžio kontrolę, o tai gali paveikti, kiek žmonių atsisiunčia jūsų programą.


Taip pat galite naudoti „Poly API“, kad suteiktumėte vartotojams daugiau pasirinkimo galimybių, pavyzdžiui, jei kuriate mobilųjį žaidimą, tada galėtumėte leisti vartotojams pasirinkti iš daugybės simbolių modelių.

Kadangi jūs galite laisvai modifikuoti „Poly“ modelius, galėtumėte leisti vartotojams patikslinti pasirinktą charakterį, pavyzdžiui, pakeisdami plaukų ar akių spalvą arba derindami juos su kitomis „Poly“ prekėmis, tokiomis kaip skirtingi ginklai ir šarvai. Tokiu būdu „Poly API“ gali padėti jums pateikti įspūdingą 3D išteklių asortimentą, kuriame yra daug galimybių pritaikyti patirtį ir palyginti mažai darbo. Jūsų vartotojai bus įsitikinę, kad praleidote labai daug laiko, kruopščiai išmanydami visus šiuos 3D modelius!

3D modeliavimo projekto sukūrimas

Mes sukursime programą, kuri nuskaitys tam tikrą daugialypį išteklių, kai programa bus paleista pirmą kartą, o tada naudotojui paprašius parodys tą išteklių viso ekrano režimu.

Kad padėtume mums susigrąžinti šį turtą, naudosiu „Fuel“, kuris yra „HTTP Kotlin“ ir „Android“ tinklo biblioteka. Pradėkite nuo naujo projekto sukūrimo pasirinktais parametrais, tačiau paraginti pasirinkti „Įtraukite Kotlin palaikymą“.

Visuose jūsų skambučiuose į „Poly API“ turi būti API raktas, kuris naudojamas jūsų programai identifikuoti ir naudojimo apribojimams užtikrinti. Kurdami ir bandydami dažnai naudosite neribojamą API raktą, tačiau jei planuojate išleisti šią programą, turite naudoti „Android“ apribotą API raktą.

Norėdami sukurti ribotą raktą, turėsite žinoti savo projekto SHA-1 pasirašymo pažymėjimą, todėl dabar gausime šią informaciją:

  • Pasirinkite „Android Studio“ skirtuką „Gradle“ (kur žymeklis išdėstytas šioje ekrano kopijoje). Atidaroma „Gradle projekti“ panelė.

  • Skydelyje „Gradle projektai“ dukart spustelėkite, kad išplėstumėte projekto „šaknį“, tada pasirinkite „Užduotys>„ Android “> Pasirašymo ataskaita“. Tai atveria naują skydą „Android Studio“ lango apačioje.
  • Pasirinkite mygtuką „Perjungti užduočių vykdymą / teksto režimą“ (kur žymeklis išdėstytas šioje ekrano kopijoje).

Skydas „Vykdyti“ dabar bus atnaujintas, kad būtų parodyta daug informacijos apie jūsų projektą, įskaitant jo SHA-1 pirštų atspaudus.

Sukurkite „Google Cloud Platform“ paskyrą

Norėdami įsigyti reikiamą API raktą, jums reikės „Google Cloud Platform“ (GPC) paskyros.

Jei neturite paskyros, tuomet galite prisiregistruoti 12 mėnesių nemokamam bandomajam laikotarpiui, eidami į nemokamą „Try Cloud Platform“ puslapį ir vykdydami instrukcijas. Atminkite, kad reikalinga kreditinė ar debeto kortelė, tačiau, remiantis Dažnai užduodamų klausimų puslapiu, tai tik naudojama jūsų tapatybei patvirtinti ir „nemokama bandomoji versija nebus apmokestinta ar apmokestinta“.

Gaukite „Poly API“ raktą

Kai būsite visi prisijungę, galėsite įgalinti „Poly API“ ir susikurti savo raktą:

  • Eikite į GSP konsolę.
  • Viršutiniame kairiajame kampe pasirinkite pamušalo piktogramą ir pasirinkite „API ir paslaugos> Informacijos suvestinė“.
  • Pasirinkite „Įgalinti API ir paslaugas“.
  • Kairiajame meniu pasirinkite „Kita“.
  • Pasirinkite „Poly API“ kortelę.
  • Spustelėkite mygtuką „Įgalinti“.
  • Po kelių akimirkų būsite nukreipti į naują ekraną; atidarykite šoninį meniu ir pasirinkite „API ir paslaugos> kredencialai“.

  • Kitame iššokančiame lange pasirinkite „Apriboti raktą“.
  • Duokite savo raktą skiriamąjį vardą.
  • Skiltyje „Taikymo apribojimai“ pasirinkite „Android“ programos “.
  • Pasirinkite „Pridėti paketo pavadinimą ir pirštų atspaudus“.
  • Nukopijuokite / įklijuokite projekto SHA-1 pirštų atspaudus į lauką „Pasirašymo pažymėjimo pirštų atspaudas“.
  • Įveskite projekto paketo pavadinimą (jis rodomas manifeste ir kiekvieno klasės failo viršuje).
  • Spustelėkite „Išsaugoti“.

Dabar būsite nukreipti į projekto ekraną „Kredencialai“, kuriame yra visų jūsų API raktų sąrašas, įskaitant ką tik sukurtą daugiafunkcinį API raktą.

Projekto priklausomybės: Kuro, P3D ir Kotlin plėtiniai

Norėdami nuskaityti ir parodyti daugialypius išteklius, mums reikės pagalbos rankos iš kai kurių papildomų bibliotekų:

  • Kuras. Šiuo metu „Poly“ neturi oficialaus „Android“ priemonių rinkinio, todėl turėsite dirbti su API tiesiogiai naudodami jos REST sąsają. Kad šis procesas būtų paprastesnis, naudosiu „Fuel HTTP“ tinklo biblioteką.
  • Apdorojama „Android“. Naudosiu šios bibliotekos P3D teikiklį, norėdamas parodyti daugialypį turtą.

Atidarykite projekto „build.gradle“ failą ir pridėkite šias dvi bibliotekas kaip projekto priklausomybes:

priklausomybės {diegimo failasTrečia (įskaitant:, ved: libs) diegimas "org.jetbrains.kotlin: kotlin-stdlib-jre7: $ kotlin_version" diegimas com.android.support:appcompat-v7:27.1.1 // Pridėti kuro biblioteką / / diegimas com.github.kittinunf.fuel: Android android: 1.13.0 // Pridėti apdorojimą „Android“ varikliui // įgyvendinimas org.p5android: apdorojimo šerdis: 4.0.1}

Kad mūsų kodas būtų glaudesnis, aš taip pat naudosiu „Kotlin“ „Android“ plėtinius, todėl pridėkime šį papildinį, kol atidarysime „build.gradle“ failą:

taikyti papildinį: „kotlin-android“ plėtiniai

Galiausiai, kadangi ieškome iš interneto turinio, mūsų programai reikia interneto leidimo. Atidarykite manifestą ir pridėkite:

Pridedame savo API raktą

Kiekvieną kartą, kai mūsų programa reikalauja iš „Poly“ išteklių, joje turi būti galiojantis API raktas. Aš naudoju vietos žymeklio tekstą, bet jūs privalo pakeiskite šią vietos žymiklį savo API raktu, jei programa kada nors veiks.

Aš taip pat pridedu čekį, kad programoje būtų rodomas įspėjimas, jei pamiršite pakeisti tekstą „INSERT-YOUR-API-KEY“:

import android.os.Bundle import android.support.v7.app.AppCompatActivity klasė MainActivity: AppCompatActivity () {papildomas objektas {const val APIKey = "INSERT-YOUR-API-KEY"} nepaisyti linksmybių onCreate (savedInstanceState: Bundle?) { super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) // Jei API raktas prasideda „INSERT“ ... // jei (APIKey.startsWith („INSERT“)) {// tada parodykite šį skrudinta duona ... .// „Toast.makeText“ (tai „„ Neatnaujinote savo API rakto “,„ Toast.LENGTH_SHORT “) .show ()} else {... ... ...

Turto atgavimas

„Google Poly“ svetainėje galite pasirinkti bet kurį išteklius, tačiau aš naudosiu šį Žemės planetos modelį.

Jūs išgaunate turtą naudodamiesi jo ID, kuris pasirodo URL šliuzo pabaigoje (paryškintas ankstesnėje ekrano kopijoje). Mes deriname šį išteklių ID su „Poly API“ pagrindiniu kompiuteriu, kuris yra „https://poly.googleapis.com/v1“.

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 comcomithith.kittinunf.fuel .httpDownload import com.github.kittinunf.fuel.httpGet importuoti kotlinx.android.synthetic.main.activity_main. * import java.io.Failo klasė MainActivity: AppCompatActivity () {papildomas objektas {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} nepaisyti linksmybių onCreate (SaveInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith („INSERT“)) {Toast.makeText (tai „Neatnaujinote savo API rakto“, Toast.LENGTH_SHORT) .show ()} else {

Tada mes turime pateikti GET užklausą į ištekliaus URL naudodami metodą „httpGet ()“. Taip pat patikslinu, kad atsakymo tipas turi būti 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 comcomithith.kittinunf.fuel .httpDownload import com.github.kittinunf.fuel.httpGet importuoti kotlinx.android.synthetic.main.activity_main. * import java.io.Failo klasė MainActivity: AppCompatActivity () {papildomas objektas {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} nepaisyti linksmybių onCreate (SaveInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith („INSERT“)) {Toast.makeText (tai „Neatnaujinote savo API rakto“, „Toast.LENGTH_SHORT“) .show ()} else {// Skambinkite į serverį ir perduokite duomenis naudodami Metodas „listOf“ // assetURL.httpGet (listOf („raktas“ į APIKey)). ResponseJson {užklausa, atsakymas, rezultatas -> // Padarykite ką nors su atsakymu // rezultatas.sulaikykite ({val as nustatyti = it.obj ()

Turtas gali būti kelių formatų, tokių kaip OBJ, GLTF ir FBX. Turime nustatyti, ar turtas yra OBJ formato.

Atlikdamas šį veiksmą taip pat gaunu visų failų, kuriuos turime atsisiųsti, pavadinimą ir URL,
įskaitant pirminį ištekliaus failą („root“) ir visus susijusius medžiagos ir tekstūros failus („šaltiniai“).

Jei mūsų programa negali tinkamai nuskaityti turinio, tada bus rodoma skrudinta duona, informuojanti vartotoją.

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 comcomithith.kittinunf.fuel .httpDownload import com.github.kittinunf.fuel.httpGet importuoti kotlinx.android.synthetic.main.activity_main. * import java.io.Failo klasė MainActivity: AppCompatActivity () {papildomas objektas {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} nepaisyti linksmybių onCreate (SaveInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith („INSERT“)) {Toast.makeText (tai „Neatnaujinote savo API rakto“, „Toast.LENGTH_SHORT“) .show ()} else {// Pateikite GET užklausą į ištekliaus URL // assetURL. „httpGet“ („listOf“ („raktas“ „APIKey“)). responseJson {užklausa, atsakymas, rezultatas -> // Padarykite ką nors su atsakymu // rezultatas.sulankstytas ({val. turtas = it.obj () var objectURL: eilutė? = null var materialLibraryName: eilutė? = null var materialLibraryURL: eilutė? = nulis // Patikrinkite turto formatą naudodamiesi „formatų“ masyvu // val assetFormats = turtas.getJSONArray („formatai“) // Peržiūrėkite visus formatus // for („i“ 0, kol „assetFormats.length ()“) { val currentFormat = assetFormats.getJSONObject (i) // Naudokite formatType, kad nustatytumėte šio šaltinio formato tipą. Jei formatas yra OBJ… .// if (currentFormat.getString („formatType“) == „OBJ“) {//... tada nuskaitykite šio ištekliaus „šakninį“ failą, ty OBJ failą // objectURL = currentFormat. „getJSONObject“ („root“) .getString („url“) // Gaukite visas šakninio failo priklausomybes // materialLibraryName = currentFormat.getJSONArray („ištekliai“) .getJSONObject (0) .getString („reliaPath“) materialLibraryURL = currentFormat.getJSON („ištekliai“) .getJSONObject (0) .getString („url“) break}} objectURL !!. httpDownload (). target {_, _ -> File (filesDir, „globeAsset.obj“)} .response {_ , _, rezultatas -> Rezultatas.sulankstytas ({}, {// Jei negalite rasti ar atsisiųsti OBJ failo, tada parodykite klaidą // Toast.makeText (tai „Neįmanoma atsisiųsti išteklių“, „Toast.LENGTH_SHORT“). ) .show ()})} materialLibraryURL !!. httpDownload (). Destination {_, _ -> File (filesDir, materialLibraryName)} .response {_, _, rezultatas -> result.fold ({}, {Toast. makeText (tai „Neįmanoma atsisiųsti išteklių“, „Toast.LENGTH_SHORT“ .show ()})}}, { „Toast.makeText“ (tai „Neįmanoma atsisiųsti išteklių“, „Toast.LENGTH_SHORT“ .show ()})}}}}

Jei įdiegsite projektą „Android“ išmaniajame telefone ar planšetiniame kompiuteryje arba „Android Virtual Virtual Device“ (AVD), tada turtas bus sėkmingai atsisiųstas, tačiau programa jo iš tikrųjų nerodys. Pataisykime tai dabar!

Antro ekrano sukūrimas: naršymo pridėjimas

Mes rodysime turtą viso ekrano režimu, todėl atnaujinkime failą main_activity.xml, kad jame būtų mygtukas, kuris palietus paleis viso ekrano veiklą.

Dabar pridėkime „onClickListener“ prie MainActivity.kt failo pabaigos:

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 comcomithith.kittinunf.fuel .httpDownload import com.github.kittinunf.fuel.httpGet importuoti kotlinx.android.synthetic.main.activity_main. * import java.io.Failo klasė MainActivity: AppCompatActivity () {papildomas objektas {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} nepaisyti linksmybių onCreate (SaveInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith („INSERT“)) {Toast.makeText (tai „Neatnaujinote savo API rakto“, „Toast.LENGTH_SHORT“) .show ()} else {assetURL.httpGet (listOf („APIKey“ raktas))). responseJson {užklausa, atsakymas, rezultatas -> result.fold ({val asset = it.obj () var objectURL: String? = null var materialLibraryName: String? = null var materialLibraryURL: Str Ing? = null val assetFormats = asset.getJSONArray ("formats") for (i in 0 iki assetFormats.length ()) {val currentFormat = assetFormats.getJSONObject (i) if (currentFormat.getString ("formatType") == "OBJ" ) {objectURL = currentFormat.getJSONObject ("root") .getString ("url") materialLibraryName = currentFormat.getJSONArray ("ištekliai") .getJSONObject (0) .getString ("reliaPath") materialLibraryURL = currentFormat.getJSONArray ) .getJSONObject (0) .getString ("url") break}} objectURL !!. httpDownload (). Destination {_, _ -> File (filesDir, "globeAsset.obj")} .response {_, _, rezultatas -> Rezultatas.sulankstytas ({}, {Toast.makeText (šis, „Neįmanoma atsisiųsti išteklių“, „Toast.LENGTH_SHORT“ .show ()})} materialLibraryURL !!. httpDownload (). Destination {_, _ -> File (filesDir, materialLibraryName)} .atsakyti {_, _, rezultatas -> Rezultatas.lankas ({}, {Toast.makeText "(tai„ Neįmanoma atsisiųsti išteklių “,„ Toast.LENGTH_SHORT “.show ()})}}, {Toast.makeText (tai „Neįmanoma atsisiųsti išteklių“, Toast.LENGTH_SHORT) .sh ow ()})} // Įjunkite mygtuką // displayButton.setOnClickListener {val intent = Intent (this, SecondActivity :: class.java) startActivity (ketinimas); }}}

3D drobės kūrimas

Dabar sukurkime veiklą, kurioje parodysime savo turtą viso ekrano režimu:

  • Valdiklyje spustelėkite projekto MainActivity.kt failą ir pasirinkite „Naujas> Kotlin failas / klasė“.
  • Atidarykite išskleidžiamąjį meniu „Kind“ ir pasirinkite „Class“.
  • Duokite šiai klasei pavadinimą „SecondActivity“, tada spustelėkite „Gerai“.

Norėdami piešti 3D objektą, mums reikia 3D drobės! Aš ketinu naudoti „Processing for Android“ bibliotekos P3D teikėją, tai reiškia išplėsti „PApplet“ klasę, nepaisyti nustatymų () metodo ir perduoti P3D kaip argumentą „viso ekrano“ () metodui. Taip pat turime sukurti nuosavybę, kuri vaizduoja „Poly“ turtą kaip „PShape“ objektą.

privatus įdomus displayAsset () {val canvas3D = objektas: PApplet () {var polyAsset: PShape? = niekiniai nepaisyti linksmybių nustatymų () {visas ekranas (PConstants.P3D)}

Tada mes turime inicijuoti „PShape“ objektą, nepaisydami nustatymo () metodo, iškviesdami „loadShape ()“ metodą ir perėję absoliutų .obj failo kelią:

nepaisyti linksmo sąrankos () {polyAsset = loadShape (Failas (filesDir, „globeAsset.obj"). AbsoliutusPath)}

Piešimas ant P3D drobės

Norėdami piešti ant šios 3D drobės, turime nepaisyti piešimo () metodo:

nepaisyti linksmo piešimo () {fono (0) formos („polyAsset“)}}

Pagal numatytuosius nustatymus daugelis iš „Poly API“ gauto turto yra mažesniojoje pusėje, taigi, jei paleisite šį kodą dabar, priklausomai nuo ekrano konfigūracijos, jūs net negalėsite jo pamatyti. Kurdami 3D scenas, paprastai sukurkite pasirinktinį fotoaparatą, kad vartotojas galėtų tyrinėti sceną ir peržiūrėti jūsų 3D išteklius visu 360 laipsnių kampu. Tačiau tai nepatenka į šio straipsnio taikymo sritį, todėl aš pakeisiu turto dydį ir vietą rankiniu būdu, kad įsitikinčiau, jog jis patogiai tinka ekrane.

Galite padidinti turto dydį pervesdami neigiamą reikšmę į skalės () metodą:

skalė (-10f)

Galite koreguoti turto vietą virtualioje 3D erdvėje naudodami vertimo () metodą ir šias koordinates:

  • X. Turtas išdėstomas išilgai horizontalios ašies.
  • Y. Turtas išdėstomas vertikalioje ašyje.
  • Z. Tai yra „gylio / aukščio“ ašis, kuri 2D objektą paverčia 3D objektu. Teigiamos vertės sukuria įspūdį, kad objektas artėja prie jūsų, o neigiamos vertės sukuria įspūdį, kad objektas tolsta nuo jūsų.

Atminkite, kad transformacijos yra kaupiamosios, todėl viskas, kas vyksta po funkcijos, kaupia efektą.

Aš naudoju šiuos dalykus:

versti (-50f, -100f, 10f)

Štai baigtas kodas:

nepaisyti linksmo piešimo () {fono (0) skalės (-10f) versti (-50f, -100f) // Nupieškite turtą iškvietę figūros () metodą // formos (polyAsset)}}

Tada mes turime sukurti atitinkamą išdėstymo failą, kuriame pridėsime 3D drobę kaip „FrameLayout“ valdiklį:

  • Valdymo klavišu spustelėkite projekto aplanką „res> išdėstymas“.
  • Pasirinkite „Išdėstymo šaltinio failas“.
  • Suteikite šiam failui pavadinimą „activity_second“ ir spustelėkite „OK“.

Dabar turime savo „asset_view“ „FrameLayout“, turime pranešti apie tai „SecondActivity“! Grįžkite į „SecondActivity.kt“ failą, sukurkite naują „PFragment“ egzempliorių ir nukreipkite jį valdiklio „asset_view“ kryptimi:

import android.os.Bundle import android.support.v7.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_second. * import processing.android.PFragment import import processing.core.PApplet import import processing.core.PConstants import processing_core. . „Shape import“ java.io.Failo klasė „SecondActivity“: „AppCompatActivity“ () {nepaisyti linksmybės onCreate (savedInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_second) displayAsset ()} privatus įdomus ekranasAsset () {val. canvas3D = objektas: PApplet () {var polyAsset: PShape? = null nepaisyti linksmybių nustatymų () {fullScreen (PConstants.P3D)} nepaisyti linksmybių sąrankos () {polyAsset = loadShape (File (filesDir, "globeAsset.obj"). AbsoliutusPath)} nepaisyti linksmybių nustatymo () {fonas (0) skalė (-10f) išverskite (-50f, -100f) figūrą („polyAsset“)}} // Įrašykite šią informaciją:

Paskutinis žingsnis yra „SecondActivity“ įtraukimas į jūsų manifestą:

// Įrašykite taip //

Savo projekto išbandymas

Dabar esame pasirengę išbandyti baigtą projektą! Įdiekite jį „Android“ įrenginyje arba AVD ir įsitikinkite, kad turite aktyvų interneto ryšį. Kai tik programa paleis, ji atsisiųs išteklių ir galėsite juos peržiūrėti spustelėdami mygtuką „Rodyti rodymo pagrindą“.

Galite atsisiųsti visą projektą iš „GitHub“.

Apvyniojimas

Šiame straipsnyje mes apžvelgėme, kaip naudoti „Poly API“, norint nuskaityti 3D turtą vykdymo metu, ir kaip parodyti tą turtą naudojant „Processing for Android“ biblioteką. Ar manote, kad „Poly API“ gali padaryti VR ir AR plėtrą prieinamą daugiau žmonių? Praneškite mums toliau pateiktuose komentaruose!

Susijęs

  • „Google“ pristatys AR programas „šimtams milijonų“ „Android“ įrenginių 2018 m
  • „Google“ nemokamai išmokys jus apie AI ir mašinų mokymąsi
  • 15 geriausių VR žaidimų, skirtų „Google Cardboard“
  • 10 geriausių „VR Card“ programų, skirtų „Google Cardboard“
  • Kas yra „Google Fuchsia“? Ar tai yra naujasis „Android“?
  • Kas yra „Google Duplex“? - savybės, išleidimo data ir dar daugiau
  • Kaip sukurti „VR“ programą „Android“ vos per 7 minutes
  • Mobiliosios VR ausinės - kokie yra geriausi variantai?

„potify“ gyvena dešimty milijonų dainų. Didžiulė muziko tranliacijo palaugo biblioteka padeda užtikrinti, kad kiekvieno muzikini koni būtų kažka. Vi dėlto ne vii šie takeliai yra tinkami jaunom auim, ...

Galbūt patebėjote ką nor naujo, kai apžiūrėjote dabar žaidžiantį ekraną „potify“ programoje mobilieiem. Panašu, kad muziko tranliacijo tarnyba išbando dinamine vaizdo įrašų ekrano užklanda ir albumo i...

Populiarūs Leidiniai