Poly API: אחזור נכסי תלת מימד עבור אפליקציות ה- Android וה- VR שלך

מְחַבֵּר: Peter Berry
תאריך הבריאה: 14 Lang L: none (month-012) 2021
תאריך עדכון: 4 מאי 2024
Anonim
Poly API: אחזור נכסי תלת מימד עבור אפליקציות ה- Android וה- VR שלך - אפליקציות
Poly API: אחזור נכסי תלת מימד עבור אפליקציות ה- Android וה- VR שלך - אפליקציות

תוֹכֶן


יש לך רעיון נהדר לאפליקציית מובייל של מציאות מדומה (VR) או Augmented Reality (AR), אבל אין לך מושג איך להחיות את החזון שלך לחיים?

אלא אם כן אתה מפתח אנדרואיד שגם הוא אמן תלת מימד מנוסה, ואז יצירת כל הנכסים הנדרשים כדי לספק חוויה ענקית של 360 מעלות, יכולה להיות תהליך מפחיד.

רק מכיוון שאין לך את הזמן, המשאבים או הניסיון הדרושים ליצירת דגמי תלת מימד, לא כלומר אינך יכול לבנות אפליקציה סלולרית נהדרת ל- VR או AR! יש מגוון עצום של משאבי תלת מימד הזמינים בחינם באינטרנט, בנוסף לכל ממשקי ה- API, המסגרות והספריות שאתה צריך כדי להוריד ולהעביר נכסים אלה ביישומי Android שלך.

קרא את הבא: עכשיו אתה יכול לבקר בכל אתר אינטרנט באמצעות Daydream VR. אפילו זה.

במאמר זה נבחן את פולי, מאגר מקוון ו- API שמציב אלפי נכסי תלת מימד בהישג ידך. בסוף מאמר זה, תיצור אפליקציה המאחזרת נכס פולי תלת ממדי בזמן ההפעלה ואז תביא אותו באמצעות ספריית Processing for Android הפופולרית.

הצגת נכסי תלת מימד עם פולי

אם אי פעם הצלחת להתמודד עם פיתוח יוניטי, מאגר הפולי דומה לחנות הנכסים של יוניטי - פרט לכך שהכל בפולי בחינם!


רבים מהדגמים התלת מימדיים של פולי מתפרסמים תחת רישיון Creative Commons, כך שאתה חופשי להשתמש, לשנות ולערוך מחדש נכסים אלה, כל עוד אתה נותן ליוצר אשראי מתאים.

כל דגמי התלת מימד של פולי נועדו להיות תואמים לפלטפורמות ה- VR וה- AR של גוגל, כמו Daydream ו- ARCore, אך תוכלו להשתמש בהן בכל מקום ובכל דרך שתרצו - פוטנציאל, תוכלו אפילו להשתמש בהן עם ARKit של אפל!

כשמדובר באחזור והצגת נכסי פולי, עומדות בפניך שתי אפשרויות. ראשית, אתה יכול להוריד את הנכסים למחשב שלך ואז לייבא אותם ל- Android Studio, כך שהם ישלחו עם האפליקציה שלך ותורמים לגודל ה- APK שלה, או שתוכלו לאחזר נכסים אלה בזמן ריצה באמצעות ה- API של Poly.

הפלטפורמה הבסיסית, המבוססת על REST, מבוססת REST מספקת גישה פרוגרמטית לקריאה בלבד לקולקציית הדגמים התלת מימדיים של פולי. זה מסובך יותר מאשר לצרף נכסים עם ה- APK שלך, אך ישנם כמה יתרונות בהשגת נכסי פולי בזמן ריצה, והבולט שבהם זה עוזר לשמור על שליטת APK שלך תחת שליטה, מה שיכול להשפיע על כמה אנשים מורידים את היישום שלך.

אתה יכול גם להשתמש בממשק ה- API של ה- Poly כדי לתת למשתמשים שלך יותר אפשרות בחירה, למשל אם אתה מפתח משחק סלולרי אתה יכול לאפשר למשתמשים שלך לבחור מבין מגוון דגמי תווים.


מכיוון שאתה חופשי לשנות את דגמי הפולי, אתה יכול אפילו לאפשר למשתמשים שלך לצבוט את הדמות שנבחרה, למשל על ידי שינוי צבע השיער או העין, או על ידי שילוב זה עם נכסי פולי אחרים, כמו כלי נשק ושריון שונים. באופן זה, ממשק ה- API של פולי יכול לעזור לכם לספק מגוון מרשים של נכסי תלת מימד, עם הרבה מרחב להתאמה אישית של החוויה - והכל לצורך עבודה מועט יחסית. המשתמשים שלך ישתכנעו שביליתם טון זמן, ותכננו בקפדנות את כל דגמי התלת מימד האלה!

יצירת פרויקט דוגמנות תלת מימד

אנו ניצור יישום המאחזר נכס פולי מסוים כאשר האפליקציה מושקת לראשונה ואז מציג נכס זה במצב מסך מלא, על פי בקשת המשתמש.

כדי לעזור לנו להשיג את הנכס הזה, אני משתמש בדלק, שהיא ספריית רשת HTTP עבור קוטלין ואנדרואיד. התחל ביצירת פרויקט חדש עם ההגדרות שבחרת, אך כשתתבקש בחר "לכלול תמיכה בקוטלין."

כל השיחות שאתה מבצע לממשק ה- API חייבים לכלול מפתח API המשמש לזיהוי האפליקציה שלך ולאכיפת מגבלות השימוש. במהלך פיתוח ובדיקה, תשתמש לרוב במפתח API בלתי מוגבל, אך אם יש לך תוכניות לשחרר אפליקציה זו, עליך להשתמש במפתח API מוגבל אנדרואיד.

כדי ליצור מפתח מוגבל, עליך לדעת את אישור חתימת ה- SHA-1 של הפרויקט שלך, אז בואו נקבל את המידע הזה עכשיו:

  • בחר בכרטיסייה "Gradle" של Android Studio (שם הסמן ממוקם בתמונת המסך הבאה). זה פותח פאנל "פרויקטים של Gradle".

  • בחלונית "פרויקטים של Gradle", לחץ פעמיים כדי להרחיב את 'שורש הפרויקט' שלך, ואז בחר "משימות> אנדרואיד> חתימת דוח." פעולה זו פותחת חלונית חדשה בתחתית חלון הסטודיו של Android.
  • בחר בלחצן 'החלף ביצוע פעולות / מצב טקסט' (במקום בו הסמן ממוקם בתמונה הבאה).

החלונית 'הפעלה' תתעדכן כעת כדי להציג מידע רב על הפרויקט שלך, כולל טביעת האצבע שלו SHA-1.

צור חשבון Google Cloud Platform

כדי לרכוש את מפתח ה- API הדרוש, תזדקק לחשבון Google Cloud Platform (GPC).

אם אין לך חשבון, תוכל להירשם לתקופת ניסיון בחינם למשך 12 חודשים על ידי מעבר אל הדף נסה פלטפורמת ענן בחינם, ופעל לפי ההוראות. שים לב כי יש צורך בכרטיס אשראי או בכרטיס חיוב, אך לפי דף השאלות הנפוצות הדבר משמש אך ורק לאימות זהותך ו"לא תחויב או תחויב במהלך תקופת הניסיון החינמית שלך. "

השג את מפתח ה- API שלך

לאחר שנרשמתם כולם, תוכלו לאפשר את ממשק ה- API של Poly וליצור את המפתח שלכם:

  • עבור אל קונסולת ה- GCP.
  • בחר בסמל המרופד בפינה השמאלית העליונה ובחר "APIs ושירותים> לוח מחוונים."
  • בחר באפשרות "אפשר APIs ושירותים."
  • בתפריט השמאלי, בחר באפשרות "אחר".
  • בחר בכרטיס ה- "Poly API".
  • לחץ על כפתור "הפעל".
  • לאחר מספר רגעים תועבר למסך חדש; פתח את התפריט הצדדי ובחר "APIs ושירותים> אישורים."

  • בקפיצה הבאה בחר "הגבלת מקש."
  • תן למפתח שלך שם מיוחד.
  • תחת "מגבלות אפליקציה" בחר "אפליקציות אנדרואיד."
  • בחר "הוסף שם חבילה וטביעת אצבע."
  • העתק / הדבק את טביעת האצבע SHA-1 של הפרויקט שלך בשדה "טביעת אצבע של חתימה".
  • הזן את שם החבילה של הפרויקט שלך (הוא מופיע במניפסט שלך ובראש כל קובץ כיתה).
  • לחץ על 'שמור'.

כעת תועבר למסך "האישורים" של הפרויקט שלך, המכיל רשימה של כל מפתחות ה- API שלך - כולל מפתח ה- API המותאם-פולי שיצרת זה עתה.

תלות בפרוייקט: הרחבות דלק, P3D וקוטלין

כדי לאחזר ולהציג נכסי פולי, אנו זקוקים ליד עזרה מספריות נוספות:

  • לתדלק. ל- Poly אין כרגע ערכת כלים אנדרואיד, כך שתצטרך לעבוד עם ממשק ה- API ישירות באמצעות ממשק ה- REST שלה. כדי להפוך את התהליך לפשוט יותר, אשתמש בספריית הרשת Fuel HTTP.
  • מעבד ל- Android. אני אשתמש בממיר P3D בספריה זו כדי להציג את נכס ה- Poly.

פתח את קובץ build.gradle של הפרויקט שלך, והוסף את שתי הספריות הללו כתלות בפרוייקט:

תלות {יישום fileTree (כולל:, dir: libs) יישום "org.jetbrains.kotlin: kotlin-stdlib-jre7: $ kotlin_version" יישום com.android.support:appcompat-v7:27.1.1 // הוסף את ספריית הדלק / / יישום com.github.kittinunf.fuel: דלק-אנדרואיד: 1.13.0 // הוסף את מנוע העיבוד עבור אנדרואיד // יישום org.p5android: עיבוד-ליבה: 4.0.1}

בכדי להפוך את הקוד לתמצית יותר, אני אשתמש גם בתוספי אנדרואיד של קוטלין, אז בואו להוסיף את התוסף הזה בזמן שיש לנו את קובץ build.gradle פתוח:

החל תוסף: הרחבות קוטלין ואנדרואיד

לבסוף, מכיוון שאנו משיגים את הנכס מהאינטרנט, האפליקציה שלנו זקוקה להרשאת האינטרנט. פתח את המניפסט שלך והוסף את הדברים הבאים:

הוספת מפתח ה- API שלך

בכל פעם שהאפליקציה שלנו מבקשת נכס של פולי, היא צריכה לכלול מפתח API תקף. אני משתמש בטקסט מציין מיקום, אבל אתה צריך החלף את מציין המיקום הזה במפתח API משלך אם היישום אי פעם יעבוד.

אני גם מוסיף צ'ק, כדי שהיישום יציג אזהרה אם תשכח להחליף את הטקסט "INSERT-YOUR-API-KEY":

יבוא android.os.Bundle יבוא android.support.v7.app.AppCompatActivity כיתה MainActivity: AppCompatActivity () {companion object {const val APIKey = "INSERT-YOUR-API-KEY"} מבטל כיף onCreate (saveInstanceState: Bundle?) { super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) // אם מפתח ה- API מתחיל ב- "INSERT" ... // if (APIKey.startsWith ("INSERT")) {// ואז להציג את הטוסט הבא ... .// Toast.makeText (זה, "אתה לא עידכן את מפתח ה- API שלך", Toast.LENGTH_SHORT). Show ()} אחר {... ... ...

השבת הנכס

אתה יכול לבחור כל נכס באתר Google Poly, אבל אני אשתמש במודל זה של כדור הארץ.

אתה מאחזר נכס באמצעות המזהה שלו, שמופיע בסוף שבלול ה- URL (מודגש בתמונת המסך הקודמת). אנו משלבים את מזהה הנכס הזה, עם מארח ה- API של Poly, שהוא "https://poly.googleapis.com/v1."

יבוא android.content.Intent יבוא android.os.Bundle יבוא android.support.v7.app.AppCompatActivity יבוא android.widget.Toast יבוא com.github.kittinunf.fuel.android.extension.response ג'ונסון יבוא com.github.kittinunf.fuel .httpDownload ייבוא ​​com.github.kittinunf.fuel.http קבל ייבוא ​​kotlinx.android.synthetic.main.activity_main. * יבוא java.io.File class MainActivity: AppCompatActivity () {companion object {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} לעקוף את כיף onCreate (savedInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) אם ( APIKey.startsWith ("INSERT")) {Toast.makeText (זה, "אתה לא עידכן את מפתח ה- API שלך", Toast.LENGTH_SHORT). Show ()} else {

בשלב הבא עלינו לבקש בקשת GET לכתובת האתר של הנכס, בשיטת httpGet (). אני גם מציין שסוג התגובה חייב להיות JSON:

יבוא android.content.Intent יבוא android.os.Bundle יבוא android.support.v7.app.AppCompatActivity יבוא android.widget.Toast יבוא com.github.kittinunf.fuel.android.extension.response ג'ונסון יבוא com.github.kittinunf.fuel .httpDownload ייבוא ​​com.github.kittinunf.fuel.http קבל ייבוא ​​kotlinx.android.synthetic.main.activity_main. * יבוא java.io.File class MainActivity: AppCompatActivity () {companion object {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} לעקוף את כיף onCreate (savedInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) אם ( APIKey.startsWith ("INSERT")) {Toast.makeText (זה, "אתה לא עידכן את מפתח ה- API שלך", Toast.LENGTH_SHORT). Show ()} אחרת {// בצע שיחת שרת ואז העביר את הנתונים באמצעות שיטת "listOf" // assetURL.httpGet (listOf ("מפתח" ל- APIKey)). ResponseJson {בקשה, תגובה, תוצאה -> // עשה משהו עם התגובה // result.fold ({val as set = it.obj ()

לנכס עשויים להיות מספר פורמטים, כגון OBJ, GLTF ו- FBX. עלינו לקבוע כי הנכס הוא בתבנית OBJ.

בשלב זה, אני גם מאחזר את שם וכתובת האתר של כל הקבצים שעלינו להוריד,
כולל הקובץ הראשי של הנכס ("שורש"), בתוספת כל קובצי חומר ומרקם משויכים ("משאבים").

אם היישום שלנו לא מצליח להשיג את הנכס בצורה נכונה, הוא יציג כוסית שמיידעת את המשתמש.

יבוא android.content.Intent יבוא android.os.Bundle יבוא android.support.v7.app.AppCompatActivity יבוא android.widget.Toast יבוא com.github.kittinunf.fuel.android.extension.response ג'ונסון יבוא com.github.kittinunf.fuel .httpDownload ייבוא ​​com.github.kittinunf.fuel.http קבל ייבוא ​​kotlinx.android.synthetic.main.activity_main. * יבוא java.io.File class MainActivity: AppCompatActivity () {companion object {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} לעקוף את כיף onCreate (savedInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) אם ( APIKey.startsWith ("INSERT")) {Toast.makeText (זה, "אתה לא עידכן את מפתח ה- API שלך", Toast.LENGTH_SHORT). Show ()} אחרת {// הגש בקשה GET לכתובת האתר של הנכס // assetURL. httpGet (listOf ("מפתח" ל- APIKey)). responseJson {בקשה, תגובה, תוצאה -> // האם לעשות משהו עם התגובה // result.fold ({val asset = it.obj () var objectURL: מחרוזת? = null var materialLibraryName: מחרוזת? = null var materialLibraryURL: מחרוזת? = null // בדוק את פורמט הנכס, באמצעות מערך ה"פורמטים "// val assetFormats = asset.getJSONArray (" פורמטים ") // עיין בכל הפורמטים // for (i ב 0 עד assetFormats.length ()) { val currentFormat = assetFormats.getJSONObject (i) // השתמשו ב- FormatType כדי לזהות את סוג הפורמט של משאב זה. אם הפורמט הוא OBJ… .// if (currentFormat.getString ("formatType") == "OBJ") {//... ואז לאחזר את קובץ ה- root של המשאב הזה, כלומר קובץ ה- OBJ // objectURL = currentFormat. getJSONObject ("root") .getString ("url") // אחזר את כל התלות של קובץ השורש // materialLibraryName = currentFormat.getJSONArray ("משאבים") .getJSONObject (0) .getString ("relativePath") materialLibraryURL = currentFormat.getJSONArray ("משאבים") .getJSON אובייקט (0). breakGring ("url")}} objectURL !!. httpDownload (). יעד {_, _ -> קובץ (filesDir, "globeAsset.obj")}. תגובה {_ , _, תוצאה -> result.fold ({}, {// אם אינך יכול לאתר או להוריד את קובץ ה- OBJ, צפה שגיאה // Toast.makeText (זה, "לא ניתן להוריד משאב", Toast.LENGTH_SHORT ). show ()})} materialLibraryURL !!. httpDownload (). יעד {_, _ -> קובץ (filesDir, materialLibraryName)}. תגובה {_, _, result -> result.fold ({}, {Toast. makeText (זה, "לא ניתן להוריד משאב", טוסט. LENGTH_SHORT). show ()})}}, { Toast.makeText (זה, "לא ניתן להוריד משאב", Toast.LENGTH_SHORT). Show ()})}}}

בשלב זה, אם תתקין את הפרויקט בסמארטפון או טאבלט אנדרואיד שלך, או מכשיר וירטואלי אנדרואיד (AVD), הנכס יוריד בהצלחה, אך האפליקציה לא תציג אותו בפועל. בואו נתקן את זה עכשיו!

יצירת מסך שני: הוספת ניווט

אנו הולכים להציג את הנכס במצב מסך מלא, אז בואו לעדכן את קובץ main_activity.xml שלנו כך שיכלול כפתור שכאשר הקשה עליו יפעיל את פעילות המסך המלא.

כעת נוסיף את ה- onClickListener לסוף הקובץ MainActivity.kt:

יבוא android.content.Intent יבוא android.os.Bundle יבוא android.support.v7.app.AppCompatActivity יבוא android.widget.Toast יבוא com.github.kittinunf.fuel.android.extension.response ג'ונסון יבוא com.github.kittinunf.fuel .httpDownload ייבוא ​​com.github.kittinunf.fuel.http קבל ייבוא ​​kotlinx.android.synthetic.main.activity_main. * יבוא java.io.File class MainActivity: AppCompatActivity () {companion object {const val APIKey = "INSERT-YOUR-API -KEY "val assetURL =" https://poly.googleapis.com/v1/assets/94XG1XUy10q "} לעקוף את כיף onCreate (savedInstanceState: Bundle?) {Super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) אם ( APIKey.startsWith ("INSERT")) {Toast.makeText (זה, "אתה לא עידכן את מפתח ה- API שלך", Toast.LENGTH_SHORT). Show ()} else {assetURL.httpGet (listOf ("מפתח" ל- APIKey)). responseJson {בקשה, תגובה, תוצאה -> result.fold ({val asset = it.obj () var objectURL: String? = null var materialLibraryName: String? = null var materialLibraryURL: Str ing? = null val assetFormats = asset.getJSONArray ("פורמטים") עבור (i ב 0 עד assetFormats.length ()) {val currentFormat = assetFormats.getJSONObject (i) if (currentFormat.getString ("formatType") == "OBJ" ) {objectURL = currentFormat.getJSONObject ("root") .getString ("url") materialLibraryName = currentFormat.getJSONArray ("משאבים") .getJSONObject (0) .getString ("relativePath") materialLibraryURL = currentFormat.getJSONAray " ) .getJSONObject (0) .getString ("url") break}} objectURL !!. httpDownload (). יעד {_, _ -> קובץ (filesDir, "globeAsset.obj")}. תגובה {_, _, תוצאה -> result.fold ({}, {Toast.makeText (זה, "לא ניתן להוריד משאב", Toast.LENGTH_SHORT). show ()})} materialLibraryURL !!. http הורדה (). יעד {_, _ -> קובץ (filesDir, materialLibraryName)}. תגובה {_, _, result -> result.fold ({}, {Toast.makeText (זה, "לא ניתן להוריד משאב", Toast.LENGTH_SHORT). show ()})}}, {Toast.makeText (זה, "לא ניתן להוריד משאב", Toast.LENGTH_SHORT) .sh ow ()})} // הטמיע כפתור // displayButton.setOnClickListener {val intention = Intent (זה, SecondActivity :: class.java) startActivity (כוונה); }}}

בניית קנבס תלת ממדי

כעת, בואו ניצור את הפעילות בה אנו מציגים את הנכס שלנו במצב מסך מלא:

  • לחץ על הקובץ על קובץ MainActivity.kt של הפרויקט שלך ובחר "חדש> קובץ / מחלקה של Kotlin."
  • פתח את התפריט הנפתח "סוג" ובחר "כיתה".
  • תן לכיתה זו את השם "SecondActivity" ולחץ על "אישור."

בכדי לצייר אובייקט תלת מימד אנו זקוקים לקנבס תלת ממדי! אני מתכוון להשתמש במעבד ה- P3D של עיבוד עבור הספרייה של אנדרואיד, שפירושו להרחיב את מחלקת ה- PApplet, לבטל את שיטת ההגדרות () ואז להעביר את P3D כוויכוח לשיטת FullScreen (). עלינו גם ליצור נכס המייצג את נכס הפולי כאובייקט PShape.

private fun displayAsset () {val canvas3D = object: PApplet () {var polyAsset: PShape? = null לבטל את הגדרות הכיף () {fullScreen (PConstants.P3D)}

בשלב הבא עלינו לאתחל את אובייקט PShape, על ידי עקיפה של שיטת ההתקנה (), קריאה לשיטת loadShape () ואז העברת הנתיב המוחלט של קובץ .obj:

לבטל את הגדרת הכיף () {polyAsset = loadShape (קובץ (filesDir, "globeAsset.obj"). absolutePath)}

רישום על בד P3D

כדי לצייר על בד תלת ממד זה, עלינו לבטל את שיטת השרטוט ():

לבטל את הגרלת הכיף () {רקע (0) הצורה (polyAsset)}}

כברירת מחדל, רבים מהנכסים שהוחזרו מממשק ה- API הם בצד הקטן יותר, כך שאם אתה מפעיל קוד זה כעת, ייתכן שלא תראה אפילו את הנכס, בהתאם לתצורת המסך שלך. בעת יצירת סצינות תלת מימד, תיצור בדרך כלל מצלמה מותאמת אישית כך שהמשתמש יוכל לחקור את הסצינה ולצפות בנכסי התלת מימד שלך מכל 360 מעלות. עם זאת, זה מעבר לתחום של מאמר זה, אז אני אשנה את גודל הנכס ואת מיקומו באופן ידני, כדי לוודא שהוא מתאים בנוחות על המסך.

אתה יכול להגדיל את גודל הנכס, על ידי העברת ערך שלילי לשיטת הסולם ():

קנה מידה (-10f)

אתה יכול להתאים את מיקום הנכס במרחב הווירטואלי התלת-ממדי בשיטת התרגום () ובקואורדינטות הבאות:

  • איקס. מציב את הנכס לאורך הציר האופקי.
  • י. מציב את הנכס לאורך הציר האנכי.
  • ז. זהו ציר "עומק / גובה", שהופך אובייקט דו-ממדי לאובייקט תלת-ממדי. ערכים חיוביים יוצרים את הרושם שהאובייקט מתקרב אליך, וערכים שליליים יוצרים את הרושם שהאובייקט מתרחק ממך.

שימו לב שהטרנספורמציות הן מצטברות, כך שכל מה שקורה לאחר הפונקציה צובר את האפקט.

אני משתמש בדברים הבאים:

לתרגם (-50f, -100f, 10f)

הנה הקוד שהושלם:

לבטל את הגרלת כיף () {רקע (0) סולם (-10f) לתרגם (-50f, -100f) // לצייר את הנכס על ידי קריאה לשיטת הצורה () // צורה (polyAsset)}}

בשלב הבא עלינו ליצור את קובץ הפריסה המתאים, בו נוסיף את בד התלת ממד כווידג'ט של FrameLayout:

  • לחץ על שליטה על תיקיית ה- "res> layout" של הפרויקט שלך.
  • בחר "קובץ משאב לפריסה."
  • תן לקובץ זה את השם "Activity_second" ולחץ על "OK".

כעת יש לנו FrameLayout “asset_view”, עלינו ליידע את ה- SecondActivity שלנו על כך! החלק חזרה לקובץ SecondActivity.kt, צור מופע PFragment חדש והצב אותו בכיוון הווידג'ט "asset_view" שלנו:

ייבוא ​​android.os.Bundle יבוא android.support.v7.app.AppCompatActivity יבוא kotlinx.android.synthetic.main.activity_second. * ייבוא ​​עיבוד.android.P עיבוד יבוא פרגמנט.קורבן עיבוד יבוא יישומון.פרופ.קונסטנטים יבוא עיבוד.קור יבוא צורות java.io. מחלקת הקבצים SecondActivity: AppCompatActivity () {לעקוף כיף onCreate (savedInstanceState: Bundle?) {Super.onCreate (SavedInstanceState) setContentView (R.layout.activity_second) displayAsset ()} הצגת כיף פרטיתAsset () {val canvas3D = object: PApplet () {var polyAsset: PShape? = null לבטל את הגדרות הכיף () {fullScreen (PConstants.P3D)} לבטל את הגדרת הכיף () {polyAsset = loadShape (קובץ (filesDir, "globeAsset.obj"). absolutePath)} לבטל את הגרלת הכיף () {רקע (0) סולם (-10f) לתרגם (-50f, -100f) צורה (polyAsset)}} // הוסף את // val assetView = PFragment (canvas3D) assetView.setView (asset_view, זה)}}

השלב האחרון הוא הוספת ה- SecondActivity למניפסט שלך:

// הוסף את הבא //

בחינת הפרויקט שלך

אנו מוכנים כעת לבדוק את הפרויקט שסיים! התקן אותו במכשיר Android או AVD וודא שיש לך חיבור אינטרנט פעיל. ברגע שהאפליקציה תושק, היא תוריד את הנכס, ואז תוכלו לראות אותו על ידי לחיצה על לחצן "נכס תצוגה".

אתה יכול להוריד את הפרויקט השלם הזה מ- GitHub.

מסיימים

במאמר זה בדקנו כיצד להשתמש בממשק ה- API של Poly כדי להשיג נכס תלת-ממדי בזמן ההפעלה וכיצד להציג נכס זה באמצעות ספריית 'עיבוד לאנדרואיד'. האם אתה חושב שלממשק ה- API יש את הפוטנציאל להנגיש פיתוח VR ו- AR לאנשים רבים יותר? ספר לנו בתגובות למטה!

קשורים

  • גוגל תביא אפליקציות AR ל" מאות מיליונים "של מכשירי אנדרואיד בשנת 2018
  • גוגל תלמד אותך על AI ולמידת מכונה בחינם
  • 15 משחקי VR הטובים ביותר לקרטון גוגל
  • 10 אפליקציות VR הטובות ביותר לקרטון גוגל
  • מה זה גוגל פוקסיה? האם זה האנדרואיד החדש?
  • מה זה גוגל דופלקס? - תכונות, תאריך יציאה ועוד
  • כיצד ליצור אפליקציית VR לאנדרואיד תוך 7 דקות בלבד
  • אוזניות VR ניידות - מהן האפשרויות הטובות ביותר שלך?

אוקיי גוגל, איך אני יכול חסוך כמעט 350 דולר בפיקסלים 3 שלא נעולים? ובכן, אם לא מאחרת לעסוק בעסקה זו, זה יכול להיות יום המזל שלך.פיקסל 3 של גוגל הוא סמארטפון מהשורה הראשונה, עם מצלמה נהדרת, עדכוני תוכנ...

במהלך השבועות האחרונים כולם דיברו על ה- Pixel של גוגל 4. הטלפון הזה בסדר והכל, אבל הוא די יקר. למרבה המזל, יש כמה עסקאות של גוגל פיקסל 3 יכול לחסוך לך עד 350 $ מדגם חדש ולא נעול....

ההמלצה שלנו