בנה אפליקציית אנדרואיד מוגברת עם אנדרואיד באמצעות Google ARCore

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 7 Lang L: none (month-011) 2021
תאריך עדכון: 1 יולי 2024
Anonim
בנה אפליקציית אנדרואיד מוגברת עם אנדרואיד באמצעות Google ARCore - אפליקציות
בנה אפליקציית אנדרואיד מוגברת עם אנדרואיד באמצעות Google ARCore - אפליקציות

תוֹכֶן


ייבוא ​​דגמי תלת מימד, עם התוסף Sceneform

לרוב, עבודה עם דגמי תלת מימד מצריכה ידע מומחה, אך עם שחרורו של התוסף Sceneform גוגל אפשרה לדגמן דגמי תלת מימד באמצעות Java - ו- בלי צריך ללמוד OpenGL.

התוסף Sceneform מספק ממשק API ברמה גבוהה שתוכלו להשתמש בו כדי ליצור Renderdables החל ווידג'טים, צורות או חומרים אנדרואיד סטנדרטיים, או מנכסי 3D, כמו קבצי .OBJ או .FBX.

בפרויקט שלנו אנו נשתמש בתוסף Sceneform כדי לייבא קובץ .OBJ ל- Android Studio. בכל פעם שאתה מייבא קובץ באמצעות Sceneform, תוסף זה באופן אוטומטי:

  • המר את קובץ הנכס לקובץ .sfb. זהו פורמט אופטימלי של Sceneform Binary (.sfb) המותאם למשך ריצה שנוסף ל- APK שלך ואז נטען בזמן ריצה. אנו משתמשים בקובץ ה- .sfb הזה כדי ליצור Renderable, המורכב מרשתות, חומרים ומרקמים, וניתן למקם אותו בכל מקום בסצינה המוגברת.
  • צור קובץ .sfa. זהו קובץ תיאור נכסים, שהוא קובץ טקסט המכיל תיאור קריא לבני אדם של קובץ ה- .sfb. בהתאם לדגם, יתכן שתוכל לשנות את המראה שלה על ידי עריכת הטקסט בתוך קובץ ה- .fa.


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

התקנת התוסף Sceneform

התוסף Sceneform דורש Android Studio 3.1 ומעלה. אם אינך בטוח באיזו גרסה של Android Studio אתה משתמש, בחר "Android Studio> About Android Studio" מסרגל הכלים. הקופץ שלאחר מכן מכיל מידע בסיסי על התקנת Android Studio שלך, כולל מספר הגרסה שלו.

להתקנת התוסף Sceneform:

  • אם אתה נמצא במחשב Mac, בחר "Android Studio> העדפות ..." מסרגל הכלים של Android Studio ואז בחר "Plugins" מהתפריט הימני. אם אתה נמצא במחשב Windows, בחר "קובץ> הגדרות> תוספים> עיין במאגרים."
  • חפש את "צורת התצורה". כאשר מופיע "כלים לתצורת התצורה של גוגל", בחר "התקן."
  • הפעל מחדש את Android Studio כשתתבקש, והתוסף שלך יהיה מוכן לשימוש.


Sceneform UX ו- Java 8: עדכון תלות הפרוייקט שלך

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

תלות {יישום fileTree (dir: libs, כולל:) יישום androidx.appcompat: appcompat: 1.0.2 יישום androidx.constraintlayout: constraintlayout: 1.1.3 testImplementation junit: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTest Implementation androidx.test.espresso: espresso-core: 3.1.1 // Sceneform UX מספק משאבי UX, כולל ArFragment // יישום "com.google.ar.sceneform.ux: sceneform-ux: 1.7.0" יישום "com. android.support:appcompat-v7:28.0.0 "}

צורה מקוונת משתמשת במבנים של שפות מג'אווה 8, כך שנצטרך גם לעדכן את תאימות המקור ותאימות היעד של הפרוייקט ל- Java 8:

compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 target תאימות JavaVersion.VERSION_1_8}

לבסוף, עלינו להחיל את התוסף Sceneform:

החל תוסף: com.google.ar.sceneform.plugin

קובץ ה- build.gradle שהושלם אמור להיראות כך:

להחיל את התוסף: com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 versionCode 1 גרסהName "1.0" testInstrumentationRunner "androidx.test.runner.RoogleVideo_Version_ile_Conversion_Version_Version} JavaVersion.VERSION_1_8} buildTypes {release {minifyEnabled false proguardFiles getDefaultProguardFile (proguard-android-optimize.txt), proguard-rules.pro}}} תלות {File fileTree (dir: libs, כולל:) יישום androidx.appcompat: appcompat: 1.0 .2 יישום androidx.constraintlayout: constraintlayout: 1.1.3 testImplementation test: junit: 4.12 androidTestImplementation androidx.test.ext: junit: 1.1.0 androidTest Implementation androidx.test.espresso: espresso-core: 3.1.1 יישום "com.google. ar.sceneform.ux: sceneform-ux: 1.7.0 "יישום" com.android.support:appcompat-v7:28.0.0 "} החל את התוסף: com.google.ar .sceneform.plugin

בקשת הרשאות באמצעות ArFragment

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

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

רכיב ArFragment בודק אוטומטית אם לאפליקציה שלך יש את הרשאת המצלמה ואז מבקש אותה, במידת הצורך, לפני יצירת הפעלת AR. מכיוון שאנו משתמשים ב- ArFragment באפליקציה שלנו, איננו צריכים לכתוב קוד כלשהו כדי לבקש אישור למצלמה.

AR חובה או אופציונלי?

ישנם שני סוגים של יישומים המשתמשים בפונקציונליות AR:

1. נדרש AR

אם היישום שלך מסתמך על Google ARCore כדי לספק חווית משתמש טובה, עליך להבטיח שהיא יורדת רק אי פעם למכשירים התומכים ב- ARCore. אם אתה מסמן את האפליקציה שלך כ- "AR Required", היא תופיע רק בחנות Google Play, אם המכשיר תומך ב- ARCore.

מאז היישום שלנו עושה דרוש ARCore, פתח את המניפסט והוסף את הדברים הבאים:

יש גם סיכוי שהיישום שלך יורד להתקן התומך ב- ARCore בתיאוריה, אך ARCore לא מותקן בפועל. לאחר שאנו מסמנים את האפליקציה שלנו כ- "AR חובה", Google Play יוריד ומתקין אוטומטית את ARCore לצד האפליקציה שלך, אם היא לא קיימת כבר במכשיר היעד.

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

החדשות הטובות הן שאנחנו משתמשים ב- ArFragment, שבודק אוטומטית כי ARCore מותקן ומעודכן לפני היצירה כל אחד מפגש AR - אז שוב, זה דבר שאנחנו לא צריכים ליישם ידנית.

2. AR אופציונלי

אם האפליקציה שלך כוללת תכונות AR שנחמדות אך לא חיוניות להעברת פונקציונליות הליבה שלה, תוכל לסמן יישום זה כ- "AR אופציונלי." האפליקציה שלך יכולה לבדוק אם Google ARCore נוכחת בזמן ריצה, ולהשבית אותה תכונות AR במכשירים שאינם תומכים ב- ARCore.

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

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

אמנם יש לי את המניפסט פתוח, אבל אני מוסיף גם אנדרואיד: configChanges ו- Android: screenOrientation, כדי להבטיח ש- MainActivity מטפל בשינויי אוריינטציה בחינניות.

לאחר הוספת כל זה למניפסט שלך, הקובץ שהושלם אמור להיראות כך:

הוסף ArFragment לפריסה שלך

אני אשתמש ב- ArFragment של ARCore, מכיוון שהוא מטפל אוטומטית במספר משימות מרכזיות של ARCore בתחילת כל מפגש AR. הבולטת ביותר, ArFragment בודקת כי מותקנת גירסה תואמת של ARCore במכשיר, וכי לאפליקציה יש כרגע הרשאת מצלמה.

לאחר ש- ArFragment יוודא כי המכשיר יכול לתמוך בתכונות ה- AR של האפליקציה שלך, הוא יוצר הפעלת ARSceneView ARCore, וחוויית ה- AR של האפליקציה שלך מוכנה לשימוש!

אתה יכול להוסיף את השבר ArFragment לקובץ פריסה, ממש כמו שבר אנדרואיד רגיל, אז פתח את קובץ ה- Activity_main.xml והוסף רכיב "com.google.ar.sceneform.ux.ArFragment".

הורדת דגמי תלת מימד, באמצעות הפולי של גוגל

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

Sceneform תומך בנכסי תלת מימד בפורמטים .OBJ, .glTF ו- .FBX, עם או בלי הנפשות. יש המון מקומות שבהם תוכלו לרכוש דגמי תלת מימד באחד מהפורמטים הנתמכים הללו, אך במדריך זה אשתמש בקובץ .OBJ שהורד ממאגר ה- Poly של גוגל.

עבור לאתר האינטרנט של Poly והורד את הנכס שאתה רוצה להשתמש בו, בפורמט .OBJ (אני משתמש במודל T-Rex זה).

  • שחרר את תיקיית התיק, שאמורה להכיל את קובץ הנכס המקורי של הדגם שלך (.OBJ, .BX, או .glTF). בהתאם לדגם, תיקיה זו עשויה לכלול גם תלות מסוימת במודל, כגון קבצים בפורמטים .mtl, .bin, .png או .jpeg.

ייבוא ​​דגמי תלת מימד ל- Android Studio

ברגע שיש לך את הנכס, עליך לייבא אותו ל- Android Studio באמצעות התוסף Sceneform. זהו תהליך רב-שלבי המחייב אותך:

  • צור תיקיית "sampledata". Sampledata הוא סוג תיקיה חדש לנתוני מדגם של זמן עיצוב שלא ייכללו ב- APK שלך, אך יהיו זמינים בעורך Android Studio.
  • גרור ושחרר את קובץ הנכס המקורי .OBJ לתיקיית ה- "sampledata" שלך.
  • בצע את הייבוא ​​וההמרה של Sceneform בקובץ .OBJ, שייצר את קבצי ה- .fa ו- .sfb.

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

פרויקטים של Android Studio אינם מכילים כברירת מחדל תיקיית "sampledata", כך שתצטרך ליצור תיקיה ידנית:

  • לחץ על שליטה על תיקיית "היישום" של הפרויקט שלך.
  • בחר "חדש> מדריך נתונים לדוגמה" וצור תיקיה בשם "sampledata."
  • נווט לקבצי מודל התלת ממד שהורדת קודם לכן. מצא את קובץ הנכס המקורי (.OBJ, .BX, או .glTF) ואז גרור ושחרר אותו לספריית "sampledata".
  • בדוק אם יש לדגם שלך תלות כלשהי (כגון קבצים בפורמטים .mtl, .bin, .png או .jpeg). אם אתה מוצא אחד מהקבצים האלה, גרור ושחרר אותם לתיקיית "sampledata".
  • באנדרואיד סטודיו, לחץ על לחיצה על קובץ המקור של מודל התלת מימד שלך (.OBJ, .BX, או .glTF) ואז בחר "ייבא נכס צורת צורה."

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

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

תלות {classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform: plugin: 1.7.0 // הערה: אל תציב כאן את תלות היישום שלך; הם שייכים // בקובץ build.gradle המודול הבודד}}

פתח את קובץ build.gradle ברמת המודול שלך ותמצא רשומת sceneform.asset () חדשה לדגם התלת מימד המיובא שלך:

החל תוסף: com.google.ar.sceneform.plugin // "נתיב נכסי המקור" שציינת במהלך הייבוא ​​// sceneform.asset (sampledata / dinosaur.obj, // "נתיב החומר" שציינת במהלך הייבוא ​​// ברירת מחדל , // "נתיב פלט ה- sfa" שציינת במהלך הייבוא ​​// sampledata / dinosaur.sfa, // "נתיב הפלט .sfb" שציינת במהלך הייבוא ​​// src / main / נכסים / דינוזאור)

אם תסתכל בתיקיות "הסמפדטה" וה"גולמיות "שלך, תראה שהם מכילים קבצי .sfa ו- .bb חדשים בהתאמה.

אתה יכול להציג תצוגה מקדימה של קובץ ה- .fa, במציג Sceneform החדש של Android Studio:

  • בחר "תצוגה> כלים חלונות> מציג" בסרגל התפריטים של סטודיו Android.
  • בתפריט השמאלי, בחר את קובץ ה- .fa. מודל התלת מימד שלך אמור כעת להופיע בחלון Viewer.

הציגו את דגם התלת מימד שלכם

המשימה הבאה שלנו היא יצירת הפעלת AR שמבינה את סביבתה, ומאפשרת למשתמש למקם דגמי תלת מימד בסצנה מוגברת.

זה מחייב אותנו לבצע את הפעולות הבאות:

1. צור משתנה לחבר ArFragment

ה- ArFragment מבצע חלק ניכר מההתרוממות הכבדה הכרוכה ביצירת מושב AR, אז נתייחס לשבר זה לכל אורך ה- MainActivity שלנו.

בקטע הבא, אני יוצר משתנה חבר ל- ArFragment ואז מאתחל אותו בשיטת onCreate ():

ArFragment פרטי arCoreFragment; @Orride חלל מוגן onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); ... ... ...} setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // מצא את השבר, באמצעות מנהל השברים // getSupportFragmentManager (). findFragmentById (R.id.main_fragment);

2. בנה ModelRenderable

כעת עלינו להפוך את קובץ ה- .sfb שלנו ל- ModelRenderable, שבסופו של דבר יהפוך את האובייקט התלת-ממדי שלנו.

הנה, אני יוצר ModelRenderable מקובץ ה- res / raw / dinosaur של הפרויקט שלי.

פרטי פרטי ModelRenderable dinoRenderable; ... ... ... ModelRenderable.builder () .setSource (זה, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable). יוצא מן הכלל (ניתן לזרוק -> {Log.e ( TAG, "לא ניתן לטעון שניתנו"); להחזיר null;}); }

3. השב על קלט המשתמש

ל- ArFragment תמיכה מובנית לתנועות ברז, גרירה, צביטה וסיבוב.

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

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

arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, מטוס מטוס, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;}

4. עוגן את הדגם שלך

בשלב זה אנו הולכים לאחזר ArSceneView ולצרף אותו ל- AnchorNode שישמש כצומת האב של הסצינה.

ArSceneView אחראי על ביצוע מספר משימות ARCore חשובות, כולל הצגת תמונות המצלמה של המכשיר, והצגת אנימציית UX של Sceneform המדגימה כיצד על המשתמש להחזיק ולהעביר את המכשיר שלו כדי להתחיל את חווית ה- AR. ה- ArSceneView ידגיש גם את כל המטוסים שהוא מזהה, מוכנים למשתמש להציב את דגמי התלת מימד שלהם בתוך הסצנה.

לרכיב ARSceneView מצורף אליו סצנה שהיא מבנה נתונים של הורה לילד המכיל את כל הצמתים שצריך לבצע.

נתחיל ביצירת צומת מסוג AnchorNode, אשר ישמש כצומת האב של ArSceneView שלנו.

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

בואו ליצור את צומת העיגון שלנו:

AnchorNode anchorNode = חדש AnchorNode (עוגן);

לאחר מכן נוכל לאחזר ArSceneView, באמצעות getArSceneView () ולצרף אותו ל- AnchorNode:

anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ());

5. הוסף תמיכה להנעה, קנה מידה וסיבוב

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

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

TransformableNode transformableNode = חדש TransformableNode (arCoreFragment.getTransformationSystem ()); // חבר transformableNode ל- anchorNode // transformableNode.setParent (anchorNode); transformableNode.setRenderable (dinoRenderable); // בחר את הצומת // transformableNode.select (); }); }

MainActivity הושלם

לאחר ביצוע כל האמור לעיל, MainActivity שלך אמור להיראות כך:

יבוא android.app.Activity; יבוא android.app.ActivityManager; יבוא androidx.appcompat.app.AppCompatActivity; יבוא android.content.Context; יבוא android.net.Uri; יבוא android.os. בנייה; יבוא android.os.Build.VERSION_CODES; יבוא android.os.Bundle; יבוא android.util.Log; יבוא android.view.MotionEvent; יבוא androidx.annotation.RequiresApi; יבוא com.google.ar.core.Anchor; יבוא com.google.ar.core.HitResult; יבוא com.google.ar.core.Plane; יבוא com.google.ar.sceneform.AnchorNode; יבוא com.google.ar.sceneform.rendering.Model Renderable; יבוא com.google.ar.sceneform.ux.ArFragment; יבוא com.google.ar.sceneform.ux.TransformableNode; המעמד הציבורי MainActivity מרחיב את AppCompatActivity {סטטי מחרוזת סופית פרטית TAG = MainActivity.class.getSimpleName (); סטטי פרטי סופי כפול MIN_OPENGL_VERSION = 3.0; // צור משתנה חבר עבור ModelRenderable // ModelRenderable פרטי dinoRenderable; // צור משתנה חבר עבור ArFragment // ArFragment פרטי arCoreFragment; @RequiresApi (api = VERSION_CODES.N) @ חלל חלל מוגן onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); אם (! checkDevice ((זה))) {להחזיר; } setContentView (R.layout.activity_main); arCoreFragment = (ArFragment) // מצא את השבר, באמצעות מנהל השברים // getSupportFragmentManager (). findFragmentById (R.id.main_fragment); אם (Build.VERSION.SDK_INT> = VERSION_CODES.N) {// Build the ModelRenderable // ModelRenderable.builder () .setSource (זה, R.raw.dinosaur) .build () .thenAccept (renderable -> dinoRenderable = renderable) ). יוצא דופן (// אם מתרחשת שגיאה ... // ניתן לזרוק -> {//... ואז הדפיס את הדברים הבאים ל- Logcat // Log.e (TAG, "לא ניתן לטעון שניתנו"); החזר null;} ); } // האזינו לאירועי onTap // arCoreFragment.setOnTapArPlaneListener ((HitResult hitResult, מטוס מטוס, MotionEvent motionEvent) -> {if (dinoRenderable == null) {return;} עוגן עוגן = hitResult.createAnchor (); // Build a עוגן צומת מסוג AnchorNode // AnchorNode anchorNode = חדש AnchorNode (עוגן); // חבר את AnchorNode לסצנה // anchorNode.setParent (arCoreFragment.getArSceneView (). getScene ()); // בניית צומת מסוג TransformableNode // TransformableNode transformableNode = חדש TransformableNode (arCoreFragment.getTransformationSystem ()); // חבר את TransformableNode ל- AnchorNode // transformableNode.setParent (עוגן נקודה); // חבר את ה- Renderable // transformableNode.setRenderable (dinoRenderable); // קבע את הצומת / / transformableNode.select ();}); } CheckDevice סטטי ציבורי בוליאני (פעילות פעילות אחרונה) {// אם המכשיר מפעיל אנדרואיד מרשמלו או קודם לכן ... // if (Build.VERSION.SDK_INT <VERSION_CODES.N) {//... ואז הדפיס את הדברים הבאים ל Logcat // Log.e (TAG, "צורת סצינה דורשת אנדרואיד N ומעלה"); Activity.finish (); להחזיר שקר; } מחרוזת openGlVersionString = ((ActivityManager) Activity.getSystemService (Context.ACTIVITY_SERVICE)) .getDeviceConfigurationInfo () // בדוק את הגרסה של OpenGL ES // .getGlEsVersion (); // אם המכשיר פועל פחות מ- OpenGL ES 3.0 ... // if (Double.parseDouble (openGlVersionString) <MIN_OPENGL_VERSION) {//... ואז הדפיס את הדברים הבאים ל- Logcat // Log.e (TAG, " דורש OpenGL ES 3.0 ומעלה "); Activity.finish (); להחזיר שקר; } החזר אמיתי; }}

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

בדיקת אפליקציית הריאליטי המשופרת שלך ב- Google ARCore

אתה מוכן כעת לבדוק את היישום שלך במכשיר אנדרואיד נתמך פיזית. אם אין ברשותך מכשיר התומך ב- ARCore, אפשר לבדוק את אפליקציית ה- AR שלך באמולטור אנדרואיד (עם מעט תצורה נוספת, אותה נסקור בסעיף הבא).

כדי לבדוק את הפרויקט שלך על פיזית מכשיר אנדרואיד:

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

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

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

בדיקת ARCore במכשיר וירטואלי אנדרואיד

כדי לבדוק את אפליקציות ה- ARCore שלך ​​במכשיר וירטואלי אנדרואיד (AVD), תזדקק לגרסת 27.2.9 של Android Emulator ומעלה. עליך להיות מחובר לחנות Google Play ב- AVD שלך ולהפעיל את OpenGL ES 3.0 ומעלה.

כדי לבדוק אם OpenGL ES 3.0 ומעלה מופעל כעת ב- AVD שלך:

  • הפעל את ה- AVD שלך, כרגיל.
  • פתח חלון מסוף חדש (Mac) או שורת פקודה (Windows).
  • שנה את הספרייה ("cd") כך שורת המסוף / הפקודה מצביעה על מיקום התוכנית "adb" של Android SDK שלך, למשל הפקודה שלי נראית כך:

תקליטורים / משתמשים / jessicathornsby / ספריה / אנדרואיד / sdk / פלטפורמת כלים

  • לחץ על מקש "Enter" במקלדת.
  • העתק / הדבק את הפקודה הבאה בטרמינל ולחץ על מקש "Enter":

./adb logcat | grep eglMakeCurrent

אם הטרמינל מחזיר את "ver 3 0" ומעלה, OpenGL ES מוגדר כהלכה. אם המסוף או שורת הפקודה מציגים משהו מוקדם יותר מ- 3.0, יהיה עליכם להפעיל את OpenGL ES 3.0:

  • עבור חזרה ל AVD שלך.
  • מצא את רצועת הכפתורים "שליטה מורחבת" שצפים לצד אמולטור אנדרואיד, ובחר "הגדרות> מתקדם."
  • נווט אל "רמת API של OpenGL ES> מרבי נותן (עד OpenGL ES 3.1)."
  • הפעל מחדש את האמולטור.

בחלון שורת מסוף / פקודה, העתק / הדבק את הפקודה הבאה ולחץ על מקש "Enter"

./adb logcat | grep eglMakeCurrent

כעת עליך לקבל תוצאה של "ver 3 0" ומעלה, כלומר OpenGL ES מוגדר כהלכה.

לבסוף, וודא שה- AVD שלך מריץ את הגרסה האחרונה של ARCore:

  • עבור לדף GitHub של ARCore, והורד את המהדורה האחרונה של ARCore עבור האמולטור. לדוגמה, בעת כתיבת המהדורה האחרונה הייתה "ARCore_1.7.0.x86_for_emulator.apk"
  • גרור ושחרר את ה- APK אל ה- AVD שלך.

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

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

אתה יכול להזיז את המצלמה הווירטואלית בחדר הווירטואלי, על ידי לחיצה ממושכת על מקשי "Option" (macOS) או "Alt" (Linux או Windows) ואז באמצעות אחד מקיצורי המקשים הבאים:

  • העבר שמאלה או ימינה. לחץ על א או על ד.
  • זוז למטה או למעלה. לחץ על Q או E.
  • התקדמו קדימה או אחורה. לחץ על W או S.

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

מסיימים

במאמר זה יצרנו אפליקציית מציאות מוגברת פשוטה, באמצעות ARCore והתוסף Sceneform.

אם תחליט להשתמש ב- Google ARCore בפרויקטים שלך, הקפד לשתף את היצירות שלך בתגובות למטה!

נמצא במקום קצת מביך. היא מאתרת בין ההצעות הפשוטות יותר של גוגל בהקיץ וגוגל קרטון, אבל לא ממש החוויה המגוחכת ביותר של Oculu Rift ו- HTC Vive. עם זאת, זהו מכשיר מצוין למתחילים לחוויית VR. רוב האפליקציו...

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

מאמרים בשבילך