Poly-sovellusliittymä: 3D-omaisuuden hakeminen VR- ja AR-Android-sovelluksillesi

Kirjoittaja: Peter Berry
Luomispäivä: 14 Elokuu 2021
Päivityspäivä: 8 Saattaa 2024
Anonim
Poly-sovellusliittymä: 3D-omaisuuden hakeminen VR- ja AR-Android-sovelluksillesi - Sovellukset
Poly-sovellusliittymä: 3D-omaisuuden hakeminen VR- ja AR-Android-sovelluksillesi - Sovellukset

Sisältö


Onko sinulla hieno idea virtuaalitodellisuuden (VR) tai Augmented Reality (AR) mobiilisovellukselle, mutta et tiedä miten visiosi herättää?

Ellet ole Android-kehittäjä, joka myös tapahtuu kokeneena 3D-taiteilijana, silloin, kun luet kaikki 360 asteen kokemuksen tarjoamiseen tarvittavat resurssit, voi olla haastava prosessi.

Vain koska sinulla ei ole aikaa, resursseja tai kokemusta 3D-mallien luomiseen, ei tarkoittaa, että et voi rakentaa hienoa VR- tai AR-mobiilisovellusta! WWW-verkossa on vapaasti saatavana valtava joukko 3D-resursseja, samoin kuin kaikki sovellusliittymät, kehykset ja kirjastot, joita tarvitset näiden tiedostojen lataamiseen ja palauttamiseen Android-sovelluksiin.

Lue seuraavaksi: Voit nyt käydä millä tahansa verkkosivustolla Daydream VR: n avulla. Jopa tuo.

Tässä artikkelissa tarkastellaan Poly: tä, online-arkistoa ja sovellusliittymää, joka asettaa tuhansia 3D-sisältöä hyppysissäsi. Tämän artikkelin loppuun mennessä olet luonut sovelluksen, joka hakee 3D Poly -sisällön suoritusaikana ja sitten tuottaa sen käyttämällä suosittua Processing for Android -kirjastoa.


3D-omaisuuden näyttäminen Poly: lla

Jos olet koskaan sekoittanut Unity-kehitykseen, niin Poly-arkisto on samanlainen kuin Unity-omaisuudenmyymälä - paitsi että kaikki Poly-ohjelmassa on ilmaista!

Monet Polyin 3D-malleista julkaistaan ​​Creative Commons -lisenssillä, joten voit vapaasti käyttää, muokata ja sekoittaa näitä aineistoja, kunhan annat tekijälle asianmukaisen hyvityksen.

Kaikki Poly: n 3D-mallit on suunniteltu yhteensopiviksi Googlen VR- ja AR-alustojen, kuten Daydream ja ARCore, kanssa, mutta voit käyttää niitä missä ja milloin haluat - potentiaalisesti, voit jopa käyttää niitä Applen ARKit-sovelluksen kanssa!

Poly-omaisuuden noutamisessa ja näyttämisessä on kaksi vaihtoehtoa. Ensinnäkin, voit ladata aineistot tietokoneellesi ja sitten tuoda ne Android Studio -sovellukseen, jotta ne toimitetaan sovelluksen mukana ja lisäävät sen APK-kokoa. Voit myös hakea nämä varat runtimeen Poly API: n avulla.


Alustat ylittävä, REST-pohjainen Poly API tarjoaa ohjelmoidun, vain luku -tyyppisen pääsyn Polyin valtavaan 3D-mallistoon. Tämä on monimutkaisempaa kuin APK: n omaisuuden niputtaminen, mutta poly-omaisuuden noutamiseen runtimeen liittyy useita etuja, etenkin se, että se auttaa pitämään APK-koon hallinnassa, mikä voi vaikuttaa siihen, kuinka moni henkilö lataa sovelluksesi.

Voit myös käyttää Poly API -sovellusta antaaksesi käyttäjillesi enemmän valinnanvaraa, esimerkiksi jos kehität mobiilipeliä, voit antaa käyttäjien valita monista merkimalleista.

Koska voit muokata Poly-malleja, voit jopa antaa käyttäjien säätää valittua merkkiä esimerkiksi muuttamalla hiuksen tai silmien väriä tai yhdistämällä sen muihin Poly-omaisuuksiin, kuten erilaisiin aseisiin ja panssaroihin. Tällä tavoin Poly API voi auttaa sinua toimittamaan vaikuttavan valikoiman 3D-omaisuutta, jolla on paljon tilaa henkilökohtaisten kokemusten mukauttamiseen - ja kaikki suhteellisen pieneen työhön. Käyttäjäsi ovat vakuuttuneita siitä, että olet viettänyt tonnin aikaa suunnitelleen huolellisesti kaikki nämä 3D-mallit!

3D-mallinnusprojektin luominen

Aiomme luoda sovelluksen, joka hakee tietyn poly-sisällön, kun sovellus käynnistetään ensimmäistä kertaa, ja näyttää sen sitten koko näytön tilassa käyttäjän pyynnöstä.

Autan meitä hakemaan tätä omaisuutta, käytän Fuelia, joka on HTTP-verkkokirjasto Kotlinille ja Androidille. Aloita luomalla uusi projekti valitsemillasi asetuksilla, mutta kun sinua kehotetaan valitsemaan ”Sisällytä Kotlin-tuki”.

Kaikissa Poly API -sovelluksissa soitettaviin puheluihin on sisällytettävä API-avain, jota käytetään sovelluksen tunnistamiseen ja käyttörajojen varmistamiseen. Kehityksen ja testauksen aikana käytät usein rajoittamatonta API-avainta, mutta jos aiot julkaista tämän sovelluksen, sinun on käytettävä Android-rajoitettua API-avainta.

Rajoitetun avaimen luomiseksi sinun on tiedettävä projektisi SHA-1-allekirjoitusvarmenne, joten saamme nämä tiedot nyt:

  • Valitse Android Studion Gradle-välilehti (missä kohdistin on seuraavassa kuvakaappauksessa). Tämä avaa Gradle projekti -paneelin.

  • Kaksoisnapsauta Gradle-projektit -paneelissa laajentaaksesi projektisi juuria ja valitsemalla sitten ”Tehtävät> Android> Allekirjoitusraportti.” Tämä avaa uuden paneelin Android Studio -ikkunan alaosaan.
  • Valitse 'Vaihda tehtävien suorittaminen / tekstitila' -painike (kohdistin on seuraavassa kuvakaappauksessa).

Suorita-paneeli päivittyy nyt näyttämään paljon tietoa projektistasi, mukaan lukien sen SHA-1-sormenjälki.

Luo Google Cloud Platform -tili

Tarvitset API-avaimen hankkimiseen tarvitset Google Cloud Platform (GPC) -tilin.

Jos sinulla ei ole tiliä, voit rekisteröidä 12 kuukauden ilmaisen kokeilujakson siirtymällä ilmaiseksi Try Cloud Platform -sivulle ja seuraamalla ohjeita. Huomaa, että vaaditaan luottokortti tai pankkikortti, mutta Usein kysytyt kysymykset -sivun mukaan sitä käytetään vain henkilöllisyytesi tarkistamiseen ja "sinua ei veloiteta tai laskute ilmaisen kokeilujakson aikana".

Hanki Poly API-avain

Kun olet rekisteröitynyt kaikki, voit ottaa käyttöön Poly API: n ja luoda avaimen:

  • Siirry GCP-konsolin päälle.
  • Valitse vasemmassa yläkulmassa oleva vuorattu kuvake ja valitse ”Sovellusliittymät ja palvelut> Hallintapaneeli”.
  • Valitse ”Ota sovellusliittymät ja palvelut käyttöön”.
  • Valitse vasemmanpuoleisesta valikosta ”Muu”.
  • Valitse ”Poly API” -kortti.
  • Napsauta ”Ota käyttöön” -painiketta.
  • Muutaman hetken kuluttua sinut viedään uudelle näytölle; avaa sivuvalikko ja valitse ”Sovellusliittymät ja palvelut> Tunnistetiedot”.

  • Valitse seuraavassa ponnahdusikkunassa “Rajoita avain”.
  • Anna avaimelle erottuva nimi.
  • Valitse Sovellusrajoitukset -kohdassa Android-sovellukset.
  • Valitse Lisää paketin nimi ja sormenjälki.
  • Kopioi / liitä projektisi SHA-1-sormenjälki ”Allekirjoitusvarmenteen sormenjälki” -kenttään.
  • Kirjoita projektisi paketin nimi (se näkyy manifestissa ja jokaisen luokkatiedoston yläosassa).
  • Napsauta Tallenna.

Sinut siirretään nyt projektisi “Käyttöoikeustiedot” -näyttöön, joka sisältää luettelon kaikista sovellusliittymäavaimistasi - mukaan lukien juuri luomasi poly-käytössä oleva API-avain

Projektiriippuvuudet: Polttoaine-, P3D- ja Kotlin-laajennukset

Jotta voisimme hakea ja näyttää moniosaisia ​​sisältöjä, tarvitsemme apua muutamista lisäkirjastoista:

  • Polttoainetta. Poly-yhtiöllä ei tällä hetkellä ole virallista Android-työkalupakettia, joten sinun on työskenneltävä sovellusliittymän kanssa suoraan REST-käyttöliittymän avulla. Tämän prosessin yksinkertaistamiseksi käytän Fuel HTTP -verkkokirjastoa.
  • Käsitellään Androidille. Käytän tämän kirjaston P3D-renderoijaa moniosaisen sisällön näyttämiseen.

Avaa projektisi build.gradle-tiedosto ja lisää nämä kaksi kirjastoa projektiriippuvuuksiksi:

riippuvuudet {toteutustiedostoTree (sisältää:, dir: libs) toteutus "org.jetbrains.kotlin: kotlin-stdlib-jre7: $ kotlin_version" toteutus com.android.support:appcompat-v7:27.1.1 // Lisää Polttoainekirjasto / / toteutus com.github.kittinunf.fuel: Fuel-android: 1.13.0 // Lisää prosessointi Android-moottorille // toteutus org.p5android: processing-core: 4.0.1}

Jotta koodimme olisi tiiviimpi, käytän myös Kotlin Android-laajennuksia, joten lisäämme tämän laajennuksen, kun build.gradle-tiedosto on avoinna:

käytä laajennusta: kotlin-android-laajennukset

Viimeinkin, koska olemme hakemassa sisältöä Internetistä, sovelluksemme tarvitsee Internet-luvan. Avaa manifesti ja lisää seuraava:

API-avaimen lisääminen

Aina kun sovelluksemme pyytää sisältöä Polyilta, siihen on sisällytettävä kelvollinen API-avain. Käytän paikkamerkkitekstiä, mutta sinä on pakko korvata tämä paikkamerkki omalla API-avaimella, jos sovellus aikoo koskaan toimia.

Lisään myös shekin, jotta sovellus näyttää varoituksen, jos unohdat korvata ”LISÄÄ-SINUN-API-AVAIN” -tekstin:

Tuo android.os.Bundle -tuonti android.support.v7.app.AppCompatActivity-luokka MainActivity: AppCompatActivity () {kumppaniohjelma {const val APIKey = "INSERT-YOUR-API-KEY"} ohittaa hauskanpinnan onCreate (SaveInstanceState: Bundle?) { super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) // Jos API-avain alkaa merkinnällä INSERT ... // if (APIKey.startsWith ("INSERT")) {// näytä seuraava paahtoleipä ... .// Toast.makeText (tämä "Et ole päivittänyt API-avainta", Toast.LENGTH_SHORT) .show ()} else {... ... ...

Omaisuuden nouto

Voit valita minkä tahansa Google Poly -sivuston sisällön, mutta käytän tätä maapallon mallia.

Haet sisällön käyttämällä sen tunnusta, joka näkyy URL-osoitteen lopussa (korostettu edellisessä kuvakaappauksessa). Yhdistämme tämän sisältötunnuksen Poly API -isäntään, joka on “https://poly.googleapis.com/v1”.

Tuo android.content.Intent -tuonti android.os.Bundle -tuonti android.support.v7.app.AppCompatActivity -tuonti android.widget.Toast -tuonti com.github.kittinunf.fuel.android.extension.responseJson-tuonti com.github.kittinunf.fuel .httpLataa tuonti com.github.kittinunf.fuel.httpHanki tuonti kotlinx.android.synthetic.main.activity_main. * Tuo java.io.File-luokka MainActivity: AppCompatActivity () {társobjekti {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} ohittaa hauskaa onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith ("INSERT")) {Toast.makeText (tämä, "Et ole päivittänyt API-avainta", Toast.LENGTH_SHORT) .show ()} else {

Seuraavaksi meidän on tehtävä GET-pyyntö sisällön URL-osoitteeseen käyttämällä httpGet () -menetelmää. Tarkennan myös, että vastaustyypin on oltava JSON:

Tuo android.content.Intent -tuonti android.os.Bundle -tuonti android.support.v7.app.AppCompatActivity -tuonti android.widget.Toast -tuonti com.github.kittinunf.fuel.android.extension.responseJson-tuonti com.github.kittinunf.fuel .httpLataa tuonti com.github.kittinunf.fuel.httpHanki tuonti kotlinx.android.synthetic.main.activity_main. * Tuo java.io.File-luokka MainActivity: AppCompatActivity () {társobjekti {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} ohittaa hauskaa onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith ("INSERT")) {Toast.makeText (tämä "Et ole päivittänyt API-avainta", Toast.LENGTH_SHORT) .show ()} else {// Soita palvelinsoitto ja välitä sitten tiedot käyttämällä ”ListOf” -menetelmä // assetURL.httpGet (listOf ("avain" APIKey: lle)). ResponseJson {pyyntö, vastaus, tulos -> // Tee jotain vastauksen kanssa // result.fold ({val as set = it.obj ()

Sisällöllä voi olla useita muotoja, kuten OBJ, GLTF ja FBX. Meidän on selvitettävä, onko sisältö OBJ-muodossa.

Tässä vaiheessa haen myös kaikkien ladattavien tiedostojen nimen ja URL-osoitteen,
sisältäen sisällön ensisijaisen tiedoston ("root") sekä kaikki siihen liittyvät materiaali- ja tekstuuritiedostot ("resurssit").

Jos sovelluksemme ei pysty hakemaan sisältöä oikein, se näyttää käyttäjälle ilmoittavan paahtolehden.

Tuo android.content.Intent -tuonti android.os.Bundle -tuonti android.support.v7.app.AppCompatActivity -tuonti android.widget.Toast -tuonti com.github.kittinunf.fuel.android.extension.responseJson-tuonti com.github.kittinunf.fuel .httpLataa tuonti com.github.kittinunf.fuel.httpHanki tuonti kotlinx.android.synthetic.main.activity_main. * Tuo java.io.File-luokka MainActivity: AppCompatActivity () {társobjekti {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} ohittaa hauskaa onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith ("INSERT")) {Toast.makeText (tämä "Et ole päivittänyt sovellusliittymäavainta", Toast.LENGTH_SHORT) .show ()} else {// Tee GET-pyyntö resurssin URL-osoitteeseen // assetURL. httpGet (listOf ("avain" APIKey: lle)). responseJson {pyyntö, vastaus, tulos -> // Tee jotain vastauksen kanssa // tulos.lähetetään ({val vara = it.obj () var objectURL: Merkkijono? = null var materialLibraryName: merkkijono? = null var materialLibraryURL: merkkijono? = nolla // Tarkista sisällön muoto käyttämällä "formaatit" -taulukkoa // val assetFormats = asset.getJSONArray ("formats") // Selaa kaikkia muotoja // varten (i on 0, kunnes assetFormats.length ()) { val currentFormat = assetFormats.getJSONObject (i) // Käytä formatType-tunnistettaessa tämän resurssin muotoa. Jos muoto on OBJ… .// if (currentFormat.getString ("formatType") == "OBJ") {//...hae sitten tämän resurssin 'juuritiedosto', eli OBJ-tiedosto // objectURL = currentFormat. getJSONObject ("root") .getString ("url") // Nouda kaikki juuritiedoston riippuvuudet // materialLibraryName = currentFormat.getJSONArray ("Resurssit") .getJSONObject (0) .getString ("reliaPath") materialLibraryURL = currentFormat.getJSON ("resurssit") .getJSONObject (0) .getString ("url") break}} objectURL !!. httpLataa (). kohde {_, _ -> tiedosto (filesDir, "globeAsset.obj")} .vastaus {_ , _, tulos -> tulos.fold ({}, {// Jos et löydä tai lataa OBJ-tiedostoa, näytä virhe // Toast.makeText (tämä, "Resurssin lataus epäonnistui", Toast.LENGTH_SHORT ) .show ()})} materialLibraryURL !!. httpLataa (). kohde {_, _ -> tiedosto (filesDir, materialLibraryName)} .vastaa {_, _, tulos -> tulos.kansi ({}, {paahtoleipä. makeText (tämä "Resurssin lataus epäonnistui", Toast.LENGTH_SHORT) .show ()})}}, { Toast.makeText (tämä, "Resurssin lataus epäonnistui", Toast.LENGTH_SHORT) .show ()})}}}}

Jos asennat projektin tässä vaiheessa Android-älypuhelimeen tai -tablet-laitteeseen tai Android-virtuaaliseen laitteeseen (AVD), sisältö ladataan onnistuneesti, mutta sovellus ei tosiasiallisesti näytä sitä. Korjataan tämä nyt!

Toisen näytön luominen: Navigoinnin lisääminen

Aiomme näyttää aineiston koko näytön tilassa, joten päivitämme main_activity.xml-tiedostomme niin, että siihen sisältyy painike, joka napautettaessa käynnistää koko näytön toiminnan.

Lisäämme nyt onClickListener MainActivity.kt-tiedoston loppuun:

Tuo android.content.Intent -tuonti android.os.Bundle -tuonti android.support.v7.app.AppCompatActivity -tuonti android.widget.Toast -tuonti com.github.kittinunf.fuel.android.extension.responseJson-tuonti com.github.kittinunf.fuel .httpLataa tuonti com.github.kittinunf.fuel.httpHanki tuonti kotlinx.android.synthetic.main.activity_main. * Tuo java.io.File-luokka MainActivity: AppCompatActivity () {társobjekti {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} ohittaa hauskaa onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith ("INSERT")) {Toast.makeText (tämä, "Et ole päivittänyt API-avainta", Toast.LENGTH_SHORT) .show ()} else {assetURL.httpGet (listOf ("avain" APIKey: lle)). responseJson {pyyntö, vastaus, tulos -> tulos.kansio ({val asset = it.obj () var objectURL: String? = null var materialLibraryName: String? = null var materialLibraryURL: Str ING? = nolla arvo assetFormats = asset.getJSONArray ("formaatit") (i: llä 0: een, kunnes assetFormats.length ()) {val currentFormat = assetFormats.getJSONObject (i) if (currentFormat.getString ("formatType") == "OBJ" ) {objectURL = currentFormat.getJSONObject ("root") .getString ("url") materialLibraryName = currentFormat.getJSONArray ("resources") .getJSONObject (0) .getString ("santykPath") materialLibraryURL = currentFormat.getJSONArray ) .getJSONObject (0) .getString ("url") break}} objectURL !!. httpLataa (). kohde {_, _ -> tiedosto (filesDir, "globeAsset.obj")} .vastaus {_, _, tulos -> tulos.kerta ({}, {Toast.makeText (tämä, "Resurssin lataus epäonnistui", Toast.LENGTH_SHORT) .show ()})} materialLibraryURL !!. httpLataa (). kohde {_, _ -> tiedosto (filesDir, materialLibraryName)} .vastaa {_, _, tulos -> tulos.kansi ({}, {Toast.makeText (tämä, "Resurssin lataus epäonnistui", Toast.LENGTH_SHORT) .show ()})}}, {Toast.makeText (tämä, "Resurssin lataus epäonnistui", Toast.LENGTH_SHORT) .sh ow ()})} // Käynnistä painike // displayButton.setOnClickListener {val intent = Intent (this, SecondActivity :: class.java) startActivity (intent); }}}

3D-kankaan rakentaminen

Luokaamme nyt toiminta, jossa näytämme omaisuuden koko näytön tilassa:

  • Napsauta Control-napsauttamalla projektisi MainActivity.kt-tiedostoa ja valitse ”Uusi> Kotlin File / Class”.
  • Avaa avattava "Kind" ja valitse "Class".
  • Anna tälle luokalle nimi "SecondActivity" ja napsauta sitten "OK".

3D-objektin piirtämiseen tarvitaan 3D-kangas! Aion käyttää prosessointia Android-kirjaston P3D-renderöintiin, mikä tarkoittaa PApplet-luokan laajentamista, asetusten () menetelmän ohittamista ja sitten P3D: n siirtämistä argumentiksi koko näytön () menetelmälle. Meidän on myös luotava ominaisuus, joka edustaa Poly-omaisuutta PShape-objektina.

yksityinen hauska displayAsset () {val canvas3D = object: PApplet () {var polyAsset: PShape? = nolla ohitta hausiasetukset () {koko näyttö (PConstants.P3D)}

Seuraavaksi meidän on alustettava PShape-objekti ohittamalla asennusmenetelmä (), kutsumalla loadShape () -menetelmä ja kulkemalla sitten .obj-tiedoston absoluuttinen polku:

ohita hauskat asetukset () {polyAsset = loadShape (Tiedosto (filesDir, "globeAsset.obj"). AbsoluuttinenPath)}

Piirustus P3D: n kankaalle

Jotta voimme piirtää tälle 3D-kankaalle, meidän on ohitettava piirtomenetelmä () -menetelmä:

ohita hauska piirtäminen () {tausta (0) muoto (polyAsset)}}

Oletuksena monet Poly API -sovelluksesta noudetut resurssit ovat pienemmällä puolella, joten jos suoritat tämän koodin nyt, et välttämättä näe sisältöä näytön kokoonpanosta riippuen. Kun luot 3D-kohtauksia, luot yleensä mukautetun kameran, jotta käyttäjä voi tutustua kohtaukseen ja tarkastella 3D-omaisuuttasi koko 360 astetta. Tämä ei kuitenkaan kuulu tämän artikkelin piiriin, joten muutan aineiston kokoa ja sijaintia manuaalisesti varmistaakseni, että se sopii mukavasti näytölle.

Voit lisätä sisällön kokoa siirtämällä negatiivisen arvon mittakaavan () menetelmään:

asteikko (-10f)

Voit säätää resurssin sijaintia virtuaalisessa 3D-tilassa kääntämällä () -menetelmällä ja seuraavilla koordinaateilla:

  • X. Sijoita omaisuus vaaka-akselia pitkin.
  • Y. Sijoita omaisuus pystyakselin suuntaan.
  • Z. Tämä on ”syvyys / korkeus” -akseli, joka muuttaa 2D-kohteen 3D-esineeksi. Positiiviset arvot luovat vaikutelman, että esine tulee kohti sinua, ja negatiiviset arvot luovat vaikutelman, että esine on siirtymässä sinusta.

Huomaa, että muunnokset ovat kumulatiivisia, joten kaikki, joka tapahtuu funktion jälkeen, kerää efektin.

Käytän seuraavaa:

kääntää (-50f, -100f, 10f)

Tässä on valmis koodi:

ohita hauska piirtäminen () {tausta (0) asteikko (-10f) kääntää (-50f, -100f) // Piirrä sisältö kutsumalla muoto () -menetelmää // muoto (polyAsset)}}

Seuraavaksi meidän on luotava vastaava asetustiedosto, johon lisätään 3D-kangas FrameLayout-widgetinä:

  • Napsauta Control-napsauttamalla projektisi “res> layout” -kansiota.
  • Valitse ”Asetteluresurssitiedosto”.
  • Anna tälle tiedostolle nimi ”toiminta_tunnus” ja napsauta sitten ”OK”.

Nyt meillä on ”asset_view” FrameLayout, meidän on ilmoitettava SecondActivity-toiminnomme siitä! Siirry takaisin SecondActivity.kt-tiedostoon, luo uusi PFragment-ilmentymä ja osoita sitä ”asset_view” -widget -sovelluksen suuntaan:

Tuo android.os.Bundle -tuonti android.support.v7.app.AppCompatActivity -tuonti kotlinx.android.synthetic.main.activity_second. * tuonti processing.android.PFragment tuonti processing.core.PApplet tuonti processing.core.PConstants tuonti processing.core. .PSape tuonti java.io.File-luokka SecondActivity: AppCompatActivity () {ohita hauskaa onCreate (SaveInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_second) displayAsset ()} yksityinen hausanäyttöAsset () {val canvas3D = object: PApplet () {var polyAsset: PShape? = null ohita hausasetukset () {koko näyttö (PConstants.P3D)} ohittaa hauskan asetukset () {polyAsset = loadShape (Tiedosto (filesDir, "globeAsset.obj"). AbsoluuttinenPath)} ohittaa hauskan piirtäminen () {tausta (0) -asteikko (-10f) käännä (-50f, -100f) muoto (polyAsset)}} // Lisää seuraava // val assetView = PFragment (canvas3D) assetView.setView (asset_view, this)}}

Viimeinen vaihe on SecondActivity-toiminnon lisääminen manifestiisi:

// Lisää seuraava //

Projektin testaaminen

Olemme nyt valmiita testaamaan valmis projekti! Asenna se Android-laitteeseen tai AVD: hen ja varmista, että sinulla on aktiivinen Internet-yhteys. Heti kun sovellus käynnistyy, se lataa sisällön ja voit tarkastella sitä antamalla Näytä-omaisuus -painikkeen kosketuksen.

Voit ladata tämän kokonaisen projektin GitHubista.

Käärimistä

Tässä artikkelissa tarkasteltiin kuinka Poly API -sovellusta voidaan hakea 3D-sisältö suorituksen aikana ja kuinka kyseinen sisältö voidaan näyttää prosessoimalla Android-kirjastolle. Katsotteko, että Poly API: lla on mahdollisuus tehdä VR- ja AR-kehityksestä entistä useamman ihmisen käytettävissä? Kerro meille alla olevissa kommenteissa!

liittyvä

  • Google tuo AR-sovellukset “satojen miljoonien” Android-laitteisiin vuonna 2018
  • Google opettaa sinulle ilmaiseksi AI: n ja koneoppimisen
  • 15 parasta VR-peliä Google Cardboardille
  • 10 parasta VR-sovellusta Google Cardboardille
  • Mikä on Google Fuchsia? Onko tämä uusi Android?
  • Mikä on Google Duplex? - ominaisuudet, julkaisupäivä ja paljon muuta
  • Kuinka luoda VR-sovellus Androidille vain 7 minuutissa
  • Mobiilit VR-kuulokkeet - mitkä ovat parhaat vaihtoehtosi?

Päivity, 25. huhtikuuta 2019 (klo 10.41 ET):ähköpotilla ooitteelleLG: n edutaja vahviti, että alla käitellyt kaviupeniohuhut ovat totta....

CE 2019: n edeä tammikuua LG ilmoitti kolmeta uudeta äänipalkita: L10YG, L9YG ja L8YG.Kaikki kolme äänipalkkia on kehitetty yhdeä Meridian oundin kana, englantilainen val...

Suosittu Portaalissa