ממשקים של ARCore SDK ל-iOS עם ARKit כדי לספק Cloud עוגן יכולות, שמאפשרות לך לשתף מודעות עוגן בין מכשירי iOS ל-Android אותה סביבה.
בקישורים הבאים תוכלו לקרוא איך משתמשים ב-ARCore Cloud המקובל API או בשירות ARCore Cloud Origin באפליקציות שלכם.
דרישות מוקדמות
- Xcode גרסה 13.0 ואילך
- Cocoapods 1.4.0 ואילך אם משתמשים ב-Cocoapods
- מכשיר Apple תואם ARKit שפועלת בו מערכת iOS 12.0 ואילך (נדרש יעד פריסה של iOS 12.0 ואילך)
אם זו הפעם הראשונה שאתם משתמשים בעוגנים של Cloud:
חשוב לוודא שאתם מבינים את התהליך המשמש לאירוח ולפתרון בעיות בענן עוגן.
מומלץ לקרוא את המדריך למתחילים לקבלת מידע על דרישות המערכת, תהליך ההגדרה והוראות ההתקנה.
הצצה אל אחת מהדוגמאות של Cloud עוגן
הפעלת מודעות עוגן בענן באפליקציה
כדי להשתמש ב-API של Cloud עוגנים, צריך ליצור
GARSessionConfiguration
ומגדירים לו את המאפיין cloudAnchorMode
, כפי שמתואר
צריך להגדיר סשן ARCore ב-iOS. כדאי להשתמש
setConfiguration:error: (GARSession)
כדי לקבוע את ההגדרות האישיות.
צריך להפעיל גם את ARCore API במיוחד עבור האפליקציה שלך.
אירוח ותיקון עוגנים
אפשר לארח מודעות עוגן בענן ולפתור אותן באמצעות ה-ARCore Cloud Origin API. ממשק API כולל שיטות קריאה חוזרת לפעולות שהושלמו, וגם אובייקטים עתידיים שאפשר לדגום.
אירוח עוגן
אירוח של ARAnchor
מציב את העוגן במערכת קואורדינטות משותפת לכל נתון
למרחב הפיזי.
בקשה ממארח שולחת נתונים חזותיים לשרת Google, שממפה אתARAnchor
את המיקום במערכת קואורדינטות שמייצגת את המרחב הפיזי הנוכחי. א'
בקשת מארח שהועברה בהצלחה מחזירה מזהה Cloud ימי עוגן חדש, שאותו אפשר לשתף
ששימשו לזיהוי העוגן מאוחר יותר.
- (void)addAnchorWithTransform:(matrix_float4x4)transform {
self.arAnchor = [[ARAnchor alloc] initWithTransform:transform];
[self.sceneView.session addAnchor:self.arAnchor];
__weak ExampleViewController *weakSelf = self;
self.hostFuture = [self.cloudAnchorManager
hostCloudAnchor:self.arAnchor
completion:^(NSString *anchorId, GARCloudAnchorState cloudState) {
[weakSelf handleHostAnchor:anchorId cloudState:cloudState];
}
error:nil];
[self enterState:HelloARStateHosting];
}
סימון סימון כעוגן
פתרון של ARAnchor
מאפשר למכשירי Android ו-iOS במרחב פיזי נתון
כדי להוסיף עוגנים שמתארחים בעבר לסצנות חדשות.
בקשה לפתרון נשלחת לשרת של Google מזהה עוגן בענן יחד עם נתונים חזותיים מהמסגרת הנוכחית. השרת ינסה להתאים לנתונים החזותיים האלה עם תמונות של המקומות שבהם מתארחות כרגע מודעות עוגן בענן. מתי הפתרון יצליח, עוגן חדש יתווסף לפעילות באתר ויוחזר.
- (void)resolveAnchorWithIdentifier:(NSString *)identifier {
GARResolveCloudAnchorFuture *garFuture =
[self.gSession resolveCloudAnchorWithIdentifier:identifier
completionHandler:completion
error:&error];
}
// Pass the ARFRame to the ARCore session every time there is a frame update.
// This returns a GARFrame that contains a list of updated anchors. If your
// anchor's pose or tracking state changed, your anchor will be in the list.
- (void)cloudAnchorManager:(CloudAnchorManager *)manager didUpdateFrame:(GARFrame *)garFrame {
for (GARAnchor *garAnchor in garFrame.updatedAnchors) {
if ([garAnchor isEqual:self.garAnchor] && self.resolvedAnchorNode) {
self.resolvedAnchorNode.simdTransform = garAnchor.transform;
self.resolvedAnchorNode.hidden = !garAnchor.hasValidTransform;
}
}
}
דפוס אופציונלי של סקר GARSession
אם אתם משתמשים במתכת או שיש לכם אפשרות לקלפי והאפליקציה שלכם פועלת ב
לפחות 30 FPS, צריך להשתמש בתבנית הבאה כדי להעביר ARFrame
s אל
GARSession
:
-(void)myOwnPersonalUpdateMethod {
ARFrame *arFrame = arSession.currentFrame;
NSError *error = nil;
GARFrame *garFrame = [garSession update:arFrame error:&error];
// your update code here
}
מכסות ל-API
ב-ARCore API מוגדרות המכסות הבאות לרוחב הפס של הבקשות:
סוג המכסה | מקסימום | משך | תחולה |
---|---|---|---|
מספר העוגנים | ללא הגבלה | לא רלוונטי | פרויקט |
בקשות של מארח עוגן | 30 | דקה | כתובת IP ופרויקט |
בקשות לעיגון בעוגן | 300 | דקה | כתובת IP ופרויקט |
בעיות מוכרות ופתרונות אפשריים
יש כמה בעיות ידועות בעבודה עם ARCore SDK ל-iOS.
הגדרות ברירת המחדל של סכימת ברירת המחדל גורמות לקריסה זמנית באפליקציה
ההגדרות של GPU Frame Recording ו-Metadata API מופעלות על ידי ברירת מחדל. מצב כזה יכול לגרום לפעמים לאפליקציה לקרוס בתוך ה-SDK.
אבחון קריסה של אפליקציה
אם יש לך חשד לקריסה, כדאי לבדוק את דוח הקריסות.
אם המדד MTLDebugComputeCommandEncoder
מופיע בדוח הקריסות, סביר להניח שהסיבה לכך היא
להגדרות ברירת המחדל של סכמת ברירת המחדל.
פתרון
לעבור אל Product > Scheme > Edit Scheme….
פותחים את הכרטיסייה Run.
כדי לראות את ההגדרות הקיימות לוחצים על Options.
מוודאים שגם GPU Frame Capture וגם Metal API Validation מושבתים.
יצירה והפעלה של האפליקציה.
יש עוד בעיות ידועות ב-Cocoapods CHANGELOG
.
מגבלות
ARCore SDK ל-iOS לא תומך בהפעלת method setWorldOrigin(relativeTransform:)
של ARKit.
שיקולי ביצועים
השימוש ב-ARCore API גדל כשמשתמשים בזיכרון. יש לצפות ל השימוש בסוללה של המכשיר עולה בגלל שימוש גבוה יותר ברשת וניצול גבוה יותר של המעבד (CPU).