Tartalom
- 3D eszközök megjelenítése a Poly segítségével
- 3D modellező projekt létrehozása
- Hozzon létre egy Google Cloud Platform-fiókot
- Szerezze be Poly API-kulcsát
- Projektfüggőségek: Fuel, P3D és Kotlin kiterjesztések
- API-kulcs hozzáadása
- Az eszköz beolvasása
- Második képernyő létrehozása: Navigáció hozzáadása
- 3D-s vászon felépítése
- Rajz a P3D vászonjára
- A projekt tesztelése
- Csomagolás
- Összefüggő
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:
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?