Poly API: 3D eszközök beolvasása a VR és AR Android alkalmazásokhoz

Szerző: Peter Berry
A Teremtés Dátuma: 14 Lang L: none (month-012) 2021
Frissítés Dátuma: 4 Lehet 2024
Anonim
Poly API: 3D eszközök beolvasása a VR és AR Android alkalmazásokhoz - Alkalmazások
Poly API: 3D eszközök beolvasása a VR és AR Android alkalmazásokhoz - Alkalmazások

Tartalom


Van egy nagyszerű ötlet a virtuális valóság (VR) vagy a kiterjesztett valóság (AR) mobilalkalmazására, de fogalma sincs, hogyan hozza életre látása?

Hacsak nem Android-fejlesztő vagy, aki szintén tapasztalt 3D művész, akkor ijesztő folyamat lehet az összes eszköz létrehozása, amely ahhoz szükséges, hogy elkerülje a 360 fokos élményt.

Csak azért, mert nincs ideje, erőforrásai vagy tapasztalata a 3D modellek létrehozásához, nem azt jelenti, hogy nem építhet nagyszerű VR vagy AR mobilalkalmazást! A világhálón szabadon elérhető 3D-s erőforrások széles választéka, valamint az összes API, keretrendszer és könyvtár, amelyre ezeknek az eszközöknek az letöltéséhez és megjelenítéséhez szüksége van az Android-alkalmazásokban.


Olvassa tovább: Mostantól bármilyen webhelyet meglátogathat a Daydream VR segítségével. Még azt is.

Ebben a cikkben a Poly-ra, egy online lerakatra és API-ra fogunk térni, amely 3D-s eszközök több ezerét kéznél van. A cikk végére elkészített egy alkalmazást, amely lekérdezi a 3D Poly eszközt futás közben, majd a népszerű Android Processing for Android könyvtár használatával teszi elérhetővé.

3D eszközök megjelenítése a Poly segítségével

Ha valaha is bajlódott a Unity fejlesztésében, akkor a Poly lerakat hasonló a Unity Asset Store-hoz - kivéve, hogy a Polyban minden ingyenes!

Sok Poly 3D-s modelljét a Creative Commons licenc alatt közzéteszik, így szabadon használhatja, módosíthatja és újrakeverheti ezeket az eszközöket, feltéve, hogy megfelelő alkotói jóváhagyást nyújtanak az alkotónak.


A Poly összes 3D modelljét úgy tervezték, hogy kompatibilis legyen a Google VR és AR platformjaival, mint például a Daydream és az ARCore, de bárhol és bármikor felhasználhatja őket - potenciálisan akár az Apple ARKit segítségével is felhasználhatja őket!

A Poly eszközök lekérdezésének és megjelenítésének két lehetősége van. Először letöltheti az eszközöket a számítógépére, majd importálhatja azokat az Android Studio alkalmazásba, így elküldik azokat az alkalmazásával, és hozzájárulnak az APK méretéhez, vagy ezeket az eszközöket futási időben is lekérheti a Poly API segítségével.

A platformok közötti, REST-alapú Poly API programozott, csak olvasható hozzáférést biztosít a Poly hatalmas 3D modellek gyűjteményéhez. Ez sokkal bonyolultabb, mint az eszközök kötegelése az APK-val, de számos előnye van a Poly eszközök lekérdezésének futtatáskor, nevezetesen az, hogy elősegíti az APK méretének ellenőrzés alatt tartását, ami befolyásolhatja azt, hogy hány ember töltse le az alkalmazását.

A Poly API-t arra is használhatja, hogy a felhasználók számára több választási lehetőséget biztosítson, például ha mobil játékot fejlesztett, akkor lehetővé teheti a felhasználók számára, hogy válasszanak számos karaktermodell közül.

Mivel szabadon módosíthatja a Poly modelleket, akkor megengedheti a felhasználóinak, hogy megváltoztassák a választott karakterüket, például a haj vagy a szem színének megváltoztatásával, vagy más Poly eszközökkel kombinálásával, például a különböző fegyverekkel és páncélokkal. Ily módon a Poly API segít Önnek 3D-s eszközök lenyűgöző sorozatának biztosításában, sok teret biztosítva az élmény testreszabásához - és mindezt viszonylag kevés munka elvégzéséhez. A felhasználók meg lesznek győződve arról, hogy egy tonna időt töltöttek, és aprólékosan elkészítették ezeket a 3D modelleket!

3D modellező projekt létrehozása

Olyan alkalmazást fogunk létrehozni, amely lekér egy adott Poly eszközt az alkalmazás első indításakor, majd a felhasználó kérésére teljes képernyős módban jeleníti meg azt.

Annak érdekében, hogy megszerezzük ezt az eszközt, az Fuel-et fogom használni, amely egy HTTP hálózati könyvtár a Kotlin és az Android számára. Kezdje egy új projekt létrehozásával a választott beállításokkal, de amikor a rendszer kéri, válassza a “Kotlin támogatást is” lehetőséget.

Minden, a Poly API-hoz kezdeményezett hívásnak tartalmaznia kell egy API-kulcsot, amelyet az alkalmazás azonosításához és a használati korlátozások érvényesítéséhez használnak. A fejlesztés és a tesztelés során gyakran használ egy korlátozás nélküli API-kulcsot, de ha tervei vannak ennek az alkalmazásnak a kiadására, akkor Android-korlátozott API-kulcsot kell használnia.

Korlátozott kulcs létrehozásához meg kell ismernie a projekt SHA-1 aláíró tanúsítványát, így most kapjuk meg ezeket az információkat:

  • Válassza az Android Studio „Gradle” fület (ahol a kurzor az alábbi képernyőképen van elhelyezve). Ez megnyitja a „Gradle projektek” panelt.

  • A „Gradle projektek” panelen kattintson duplán a projekt „gyökérjének” kibontására, majd válassza a „Feladatok> Android> Jelentés aláírása” elemet. Ez megnyit egy új panelt az Android Studio ablak alján.
  • Válassza a „Feladatok végrehajtásának / szöveges mód váltása” gombot (ahol a kurzor a következő képernyőképen van elhelyezve).

A „Futtatás” panel most frissül, hogy sok információt jelenítsen meg a projektjéről, ideértve a SHA-1 ujjlenyomatát is.

Hozzon létre egy Google Cloud Platform-fiókot

A szükséges API-kulcs megszerzéséhez szüksége lesz egy Google Cloud Platform (GPC) fiókra.

Ha még nem rendelkezik fiókkal, akkor regisztrálhat egy 12 hónapos ingyenes próbaverzióra, ha eljut a Try Cloud Platform ingyen oldalra, és követi az utasításokat. Vegye figyelembe, hogy hitelkártyára vagy bankkártyára van szükség, de a Gyakran Ismételt Kérdések oldal szerint ezt csak arra használják fel, hogy igazolja személyazonosságát, és „az ingyenes próbaidőszak alatt nem számítanak fel számlát vagy számlát.”

Szerezze be Poly API-kulcsát

Miután mindenki feliratkozott, engedélyezheti a Poly API-t, és létrehozhatja a kulcsot:

  • Menjen tovább a GCP konzolhoz.
  • Válassza a sorakozott ikont a bal felső sarokban, majd válassza az „API-k és szolgáltatások> Irányítópult” lehetőséget.
  • Válassza az „API-k és szolgáltatások engedélyezése” lehetőséget.
  • A bal oldali menüben válassza az „Egyéb” lehetőséget.
  • Válassza ki a „Poly API” kártyát.
  • Kattintson az „Engedélyezés” gombra.
  • Néhány pillanat után új képernyőre kerül; nyissa meg az oldalmenüt, és válassza az „API-k és szolgáltatások> Hitelesítő adatok” lehetőséget.

  • A következő felbukkanó ablakban válassza a „Korlátozás kulcs” lehetőséget.
  • Adja meg kulcsának megkülönböztető nevét.
  • Az „Alkalmazáskorlátozások” alatt válassza az „Android-alkalmazások” lehetőséget.
  • Válassza a „Csomagnév és ujjlenyomat hozzáadása” lehetőséget.
  • Másolja / illessze be a projekt SHA-1 ujjlenyomatát az „Aláíró tanúsítvány ujjlenyomata” mezőbe.
  • Írja be a projekt csomagnevét (ez megjelenik a manifesztben és minden osztályfájl tetején).
  • Kattintson a „Mentés” gombra.

Most eljut a projekt „Hitelesítő adatok” képernyőjére, amely tartalmazza az összes API-kulcsot - ideértve az éppen létrehozott többfunkciós API-kulcsot is -.

Projektfüggőségek: Fuel, P3D és Kotlin kiterjesztések

A Poly eszközök lekérdezéséhez és megjelenítéséhez segítségre van szükségünk néhány további könyvtárból:

  • Üzemanyag. A Poly-nak jelenleg nincs hivatalos Android-eszközkészlete, ezért közvetlenül az REST felülettel kell működnie az API-val. A folyamat egyszerűbbé tétele érdekében az Fuel HTTP hálózati könyvtárat fogom használni.
  • Feldolgozás Androidra. A könyvtár P3D megjelenítőjét fogom használni a Poly eszköz megjelenítéséhez.

Nyissa meg a projekt build.gradle fájlját, és adja hozzá a két könyvtárat projektfüggőségekként:

függőségek {végrehajtási fájlTree (tartalmazza:, dir: libs) implementáció "org.jetbrains.kotlin: kotlin-stdlib-jre7: $ kotlin_version" implementáció com.android.support:appcompat-v7:27.1.1 // Az Üzemanyag könyvtár hozzáadása / / implementáció com.github.kittinunf.fuel: üzemanyag-android: 1.13.0 // Adja hozzá a Processing for Android motor // végrehajtás org.p5android: feldolgozás-core: 4.0.1}

A kód pontosabbá tétele érdekében a Kotlin Android kiterjesztéseit is használom, tehát add hozzá ezt a bővítményt, amíg nyitva tartjuk a build.gradle fájlt:

plugin alkalmazása: kotlin-android-kiterjesztések

Végül, mivel az eszközt az internetről töltjük le, alkalmazásunknak internetes engedélyre van szüksége. Nyissa meg a manifesztot, és adja hozzá a következőket:

API-kulcs hozzáadása

Minden alkalommal, amikor alkalmazásunk egy tartalmat kér a Poly-tól, érvényes API-kulcsot kell tartalmaznia. Helyőrző szöveget használok, de te kell cserélje le ezt a helyőrzőt a saját API-kulcsával, ha az alkalmazás valaha működni fog.

Hozzáteszem egy csekk, így az alkalmazás figyelmeztetést jelenít meg, ha elfelejti cserélni az „INSERT-YOUR-API-KEY” szöveget:

import android.os.Bundle import android.support.v7.app.AppCompatActivity osztály MainActivity: AppCompatActivity () {társobjektum {const val APIKey = "INSERT-YOUR-API-KEY"} felülbírálja az onCreate szórakoztatást (SaveInstanceState: Bundle?) { super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) // Ha az API kulcs „INSERT” betűvel kezdődik ... // ha (APIKey.startsWith („INSERT”)) {//, akkor jelenítse meg a következő pirítós… .// Toast.makeText (ez: "Nem frissítette az API-kulcsot", Toast.LENGTH_SHORT) .show ()} else {... ... ...

Az eszköz beolvasása

Bármelyik elemet választhat a Google Poly webhelyén, de én ezt a Föld bolygó modelljét fogom használni.

Az eszközt az azonosítójának használatával tölti le, amely az URL-cím végén jelenik meg (az előző képernyőképen kiemelve). Kombináljuk ezt az eszköz-azonosítót a Poly API gazdagéppel, amely „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 com.github.kittinunf.fuel .httpDownload import com.github.kittinunf.fuel.httpGet import kotlinx.android.synthetic.main.activity_main. * import java.io.File osztály MainActivity: AppCompatActivity () {társobjektum {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} felülírja a móka onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith ("INSERT")) {Toast.makeText (ez: "Nem frissítette az API-kulcsot", Toast.LENGTH_SHORT) .show ()} else {

Ezután GET-kérést kell készítenünk az eszköz URL-jére, a httpGet () módszer használatával. Azt is meghatározom, hogy a válasz típusának JSON-nek kell lennie:

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 osztály MainActivity: AppCompatActivity () {társobjektum {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} felülírja a móka onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith ("INSERT")) {Toast.makeText (ez: "Nem frissítette az API-kulcsot", Toast.LENGTH_SHORT) .show ()} else {// Készítsen szerverhívást, majd továbbítsa az adatokat a „ListOf” módszer // assetURL.httpGet (listOf („kulcs” az APIKey-hez)). ResponseJson {kérés, válasz, eredmény -> // Csinálj valamit a válasz // eredmény.fold ({val as set = it.obj ()

Az eszköznek lehet több formátuma, például OBJ, GLTF és FBX. Meg kell határoznunk, hogy az eszköz OBJ formátumban van-e.

Ebben a lépésben lekérjük az összes letöltött fájl nevét és URL-jét,
beleértve az eszköz elsődleges fájlját („gyökér”), valamint minden kapcsolódó anyag- és textúrafájlt („erőforrások”).

Ha alkalmazásunk nem tudja megfelelően megszerezni az eszközt, akkor megjelenik a felhasználó tájékoztatására szolgáló pirítós.

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 osztály MainActivity: AppCompatActivity () {társobjektum {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} felülírja a móka onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith ("INSERT")) {Toast.makeText (ez: "Nem frissítette az API-kulcsot", Toast.LENGTH_SHORT) .show ()} else {// Készítsen GET kérést az eszköz URL-jére // assetURL. httpGet (listOf ("kulcs" az APIKey-hez)). responseJson {kérés, válasz, eredmény -> // Tegyen valamit a válasz // eredmény.fold ({val eszköz = it.obj () var objectURL: karakterlánc?) = null var materialLibraryName: Karakterlánc? = null var materialLibraryURL: Karakterlánc? = null // Ellenőrizze az eszköz formátumát a „formátumok” tömb segítségével // val assetFormats = asset.getJSONArray („formátumok”) // Húzza át az összes formátumot // számára (i-ben 0-ig, az assetFormats.length () -ig) { val currentFormat = assetFormats.getJSONObject (i) // Az formatType használatával azonosítsa az erőforrás formátumtípusát. Ha a formátum OBJ ... .//, ha (currentFormat.getString ("formatType") == "OBJ") {//...kezelje le az erőforrás gyökérfájlját, azaz az OBJ fájlt // objectURL = currentFormat. getJSONObject ("root") .getString ("url") // Az összes gyökérfájl-függőség lekérése // materialLibraryName = currentFormat.getJSONArray ("források") .getJSONObject (0) .getString ("reliaPath") materialLibraryURL = currentFormat.getJSON ("források") .getJSONObject (0) .getString ("url) break}} objectURL !!. httpDownload (). rendeltetési hely {_, _ -> Fájl (filesDir," globeAsset.obj ")} .response {_ , _, eredmény -> result.fold ({}, {// Ha nem sikerült megtalálni vagy letölteni az OBJ fájlt, akkor jelenítsen meg egy hibát // Toast.makeText (ez: "Nem sikerült letölteni az erőforrást", Toast.LENGTH_SHORT ) .show ()})} materialLibraryURL !!. httpDownload (). rendeltetési hely {_, _ -> File (filesDir, materialLibraryName)} .response {_, _, eredmény -> result.fold ({}, {Toast. makeText (ez "Nem sikerült letölteni az erőforrást", Toast.LENGTH_SHORT) .show ()})}}, { Toast.makeText (ez: "Nem sikerült letölteni az erőforrást", Toast.LENGTH_SHORT) .show ()})}}}}

Ha ezen a ponton telepíti a projektet Android okostelefonjára vagy táblagépére, vagy az Android virtuális eszközre (AVD), akkor az eszköz sikeresen letöltődik, de az alkalmazás valójában nem jeleníti meg azt. Javítsuk meg most!

Második képernyő létrehozása: Navigáció hozzáadása

Az eszközt teljes képernyős módban fogjuk megjeleníteni, ezért frissítsük a main_activity.xml fájlt, hogy tartalmazzon egy gombot, amely megérintésével elindítja a teljes képernyős tevékenységet.

Most hozzáadjuk az onClickListener-et a MainActivity.kt fájl végéhez:

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 osztály MainActivity: AppCompatActivity () {társobjektum {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} felülírja a móka onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_main) if ( APIKey.startsWith ("INSERT")) {Toast.makeText (ez: "Nem frissítette az API-kulcsot", Toast.LENGTH_SHORT) .show ()} else {assetURL.httpGet (listOf ("kulcs" APIKey-hez)). responseJson {kérés, válasz, eredmény -> result.fold ({val asset = it.obj () var objectURL: String? = null var materialLibraryName: String? = null var materialLibraryURL: Str ing? = null val assetFormats = asset.getJSONArray ("formátumok") for (i-ben 0-ban az assetFormats.length () -ig) {val currentFormat = assetFormats.getJSONObject (i) if (currentFormat.getString ("formatType") == "OBJ" ) {objectURL = currentFormat.getJSONObject ("root") .getString ("url") materialLibraryName = currentFormat.getJSONArray ("források") .getJSONObject (0) .getString ("reliaPath") materialLibraryURL = currentFormat.getJSONArray ) .getJSONObject (0) .getString ("url" break}} objectURL !!. httpDownload (). rendeltetési hely {_, _ -> Fájl (filesDir, "globeAsset.obj")} .response {_, _, eredmény -> result.fold ({}, {Toast.makeText (ez: "Az erőforrás nem tölthető le, Toast.LENGTH_SHORT) .show ()})} materialLibraryURL !!. httpDownload (). rendeltetési hely {_, _ -> fájl (filesDir, materialLibraryName)} .response {_, _, eredmény -> result.fold ({}, {Toast.makeText (ez: "Nem sikerült letölteni az erőforrást", Toast.LENGTH_SHORT) .show ()})}}, {Toast.makeText (ez: "Nem sikerült letölteni az erőforrást", Toast.LENGTH_SHORT) .sh ow ()})} // Gomb végrehajtása // displayButton.setOnClickListener {val intent = Intent (ez, SecondActivity :: class.java) startActivity (szándék); }}}

3D-s vászon felépítése

Hozzunk létre egy tevékenységet, ahol teljes képernyős módban mutatjuk be eszközünket:

  • Kattintson a vezérlőgombra a projekt MainActivity.kt fájljára, és válassza az „Új> Kotlin fájl / osztály” lehetőséget.
  • Nyissa meg a „Kedves” legördülő menüt és válassza az „Osztály” lehetőséget.
  • Adja az osztálynak a „SecondActivity” nevet, majd kattintson az „OK” gombra.

3D-s objektum rajzolásához 3D-s vászonra van szükségünk! A Processing for Android könyvtárának P3D megjelenítőjét fogom használni, azaz a PApplet osztály kibővítését, a beállítások () módszer felülbírálását, majd a P3D érvként történő továbbítását a teljes képernyő () módszerre. Olyan tulajdonságot kell létrehoznunk, amely a Poly eszközt PShape objektumként reprezentálja.

privát szórakoztató displayAsset () {val canvas3D = object: PApplet () {var polyAsset: PShape? = null felülbírálja a szórakoztató beállításokat () {fullScreen (PConstants.P3D)}

Ezután inicializálnunk kell a PShape objektumot úgy, hogy felülbíráljuk a setup () metódust, meghívjuk a loadShape () metódust, majd átadjuk a .obj fájl abszolút útvonalát:

felülírja a szórakoztató beállítást () {polyAsset = loadShape (Fájl (filesDir, "globeAsset.obj"). AbsolutPath)}

Rajz a P3D vászonjára

A 3D-s vászonra történő rajzoláshoz felül kell vennünk a draw () módszert:

felülírja a szórakoztató rajzot () {háttér (0) alak (polyAsset)}}

Alapértelmezés szerint sok, a Poly API-ból beolvasott eszköz kisebb oldalán található, tehát ha most futtatja ezt a kódot, akkor a képernyő konfigurációjától függően előfordulhat, hogy még az eszközt sem látja. 3D-s jelenetek létrehozásakor általában egyedi kamerát készít, így a felhasználó felfedezheti a jelenetet, és a teljes 3D-s fokon megnézheti 3D-s eszközeit. Ez azonban e cikk hatályán kívül esik, ezért manuálisan megváltoztatom az eszköz méretét és helyzetét, hogy megbizonyosodhasson arról, hogy az kényelmesen illeszkedik-e a képernyőn.

Az eszköz méretét növelheti, ha egy negatív értéket átad a skála () módszernek:

skála (-10f)

Az eszköz helyzetét a virtuális 3D-s térben módosíthatja a fordítás () módszer és a következő koordináták használatával:

  • X. Az eszköz a vízszintes tengely mentén helyezkedik el.
  • Y. Az eszköz a függőleges tengely mentén helyezkedik el.
  • Z. Ez a „mélység / magasság” tengely, amely a 2D objektumot 3D objektummá alakítja. A pozitív értékek azt a benyomást keltik, hogy a tárgy felé fordul, míg a negatív értékek azt a benyomást keltik, hogy az objektum távolodik tőled.

Vegye figyelembe, hogy az átalakulások halmozódnak, tehát minden, ami a függvény után történik, felhalmozza a hatást.

A következőket használom:

lefordítás (-50f, -100f, 10f)

Íme a kitöltött kód:

felülírja a szórakoztató rajzolást () {háttér (0) skála (-10f) fordítás (-50f, -100f) // Rajzolja meg az eszközt a shape () módszer meghívásával // alak (polyAsset)}}

Ezután létre kell hoznunk a megfelelő elrendezési fájlt, ahová a 3D vászonot hozzáadjuk FrameLayout widgetként:

  • Kattintson a vezérlőgombra a projekt „res> elrendezése” mappájára.
  • Válassza az „Elrendezési erőforrás fájl” lehetőséget.
  • Adja meg ennek a fájlnak a „tevékenység_sekund” nevét, majd kattintson az „OK” gombra.

Most megvan az „asset_view” FrameLayout, ezt tudatnunk kell a SecondActivity-vel! Menjen vissza a SecondActivity.kt fájlba, hozzon létre egy új PFragment példányt, és mutasson az „asset_view” widget irányába:

import android.os.Bundle import android.support.v7.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_second. * import feldolgozás.android.PFragment import feldolgozás.core.PApplet import feldolgozás.core.PConstants import feldolgozás.core .Shape importálás java.io.Fájl osztály SecondActivity: AppCompatActivity () {felülírja a fun onCreate (SaveInstanceState: Bundle?) {Super.onCreate (SaveInstanceState) setContentView (R.layout.activity_second) displayAsset ()} privát szórakoztató displayAsset () {val canvas3D = object: PApplet () {var polyAsset: PShape? = null felülírja a szórakoztató beállításokat () {teljes képernyő (PConstants.P3D)} felülírja a szórakoztató beállításokat () {polyAsset = loadShape (Fájl (filesDir, "globeAsset.obj"). AbsolutPath)} felülírja a szórakoztató rajzot () {háttér (0) skála (-10f) lefordítása (-50f, -100f) alakzat (polyAsset)}} // A következő szöveg hozzáadása: // val assetView = PFragment (canvas3D) assetView.setView (asset_view, this)}}

Az utolsó lépés a SecondActivity hozzáadása a manifesztumhoz:

// Adja hozzá a következőt //

A projekt tesztelése

Készen állunk a kész projekt tesztelésére! Telepítse Android-eszközére vagy AVD-jére, és ellenőrizze, hogy van-e aktív internetkapcsolat. Amint az alkalmazás elindul, letöltődik az eszköz, és megnézheti azt, ha megérinti a „Megjelenítés eszköz” gombot.

Ezt a teljes projektet letöltheti a GitHubból.

Csomagolás

Ebben a cikkben megvizsgáltuk, hogyan lehet használni a Poly API-t 3D-eszköz lekéréséhez futásidejüket, és hogyan jeleníthetjük meg azt az Processing for Android könyvtár segítségével. Gondolod-e, hogy a Poly API lehetővé teszi, hogy a VR és AR fejlesztések több ember számára hozzáférhetővé váljanak? Tudassa velünk az alábbi megjegyzésekben!

Összefüggő

  • A Google 2018-ban az AR alkalmazásokat hozza elérhetővé „több millió millió” Android-eszközön
  • A Google ingyen tanítja az AI-t és a gépi tanulást
  • 15 legjobb VR játék a Google Cardboard számára
  • 10 legjobb VR alkalmazás a Google Cardboard számára
  • Mi a Google Fuchsia? Ez az új Android?
  • Mi a Google Duplex? - Jellemzők, kiadási dátum és így tovább
  • Hogyan hozhat létre VR-alkalmazást Androidra mindössze 7 perc alatt
  • Mobil VR headsetek - mi a legjobb lehetőség?

Elég nagy év volt a KaiO zámára, mivel a platform több jelentő finanzírozái fordulót kapott több cégtől (beleértve a TCL-t é a Google-t). Ug...

Friíté, 2019. zeptember 9 (15:39 EDT): Ken Paxton, a texai főügyéz ma bejelentette a monopóliumellene nyomozát a Google ellen, CNET jelentették ma. 48 máik ...

Érdekes