הצמדת תוכן למיקומים בעולם האמיתי

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

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

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

איך מוצאים את קווי הרוחב והאורך של מיקום מסוים

אם יש לכם נקודת עניין ספציפית, אתם יכולים להשתמש במפות Google כדי לקבוע את קו הרוחב וקו האורך שלה:

  1. נכנסים למפות Google במחשב.
  2. עוברים אל שכבות > עוד.

    כפתור השכבות במפות Google

    הלחצן "עוד" במפות Google

  3. משנים את סוג המפה ללוויין ומבטלים את הסימון בתיבה תצוגת כדור הארץ בפינה הימנית התחתונה של המסך.

    האפשרויות של סוגי המפות במפות Google

    כך נכפה מבט דו-ממדי ונמנעות שגיאות אפשריות שעלולות לנבוע מתצוגה תלת-ממדית בזווית.

  4. לוחצים לחיצה ימנית על המיקום במפה ובוחרים את קו האורך וקו הרוחב כדי להעתיק אותם ללוח.

המרת מיקום באזור של המשתמש לעוגן גיאו-מרחבי

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

מיקום תוכן בנקודת עיגון גיאו-מרחבית

עוגנים גיאו-מרחביים דורשים ערך גובה, שהוא יחסי לאליפסואיד WGS84 או יחסי לפני השטח או לגג.

  • כדי לקבל ערכי גובה ביחס לאליפסואיד WGS84, משתמשים ב-Geospatial.createAnchor:

    val createAnchorResult = geospatial.createAnchor(
        latitude,
        longitude,
        altitude,
        Quaternion.Identity,
    )

  • כדי לציין ערכי גובה ביחס לפני השטח או לגג, משתמשים ב-Geospatial.createAnchorOnSurface, וב-GeospatialSurface.TERRAIN ו-GeospatialSurface.ROOFTOP בהתאמה, כדי לציין איך לפרש את הגובה הסופי:

    val createAnchorResult = geospatial.createAnchorOnSurface(
        latitude,
        longitude,
        altitude,
        Quaternion.Identity,
        GeospatialSurface.TERRAIN,
    )

    כשמשתמשים ב-GeospatialSurface.ROOFTOP, הגובה שמוגדר כברירת מחדל הוא הגובה של פני השטח, אם לא ממקמים את המצלמה על מבנה.

לאחר מכן, בודקים את התוצאה של קריאת היצירה:

when (createAnchorResult) {
    is AnchorCreateSuccess -> {
        // Use anchorCreateResult.anchor to render content at the result.
    }

    else -> {
        // Anchor create failed.
        // See AnchorCreateResult for possible failure reasons.
    }
}

לבסוף, משתמשים בעוגן כדי למקם את התוכן התלת-ממדי:

Compose XR

Subspace(FollowTarget.anchor(anchorCreateResult.anchor)) {
    SpatialPanel {
        GeospatialContent()
    }
}

SceneCore

val anchorSpace = AnchorSpace.create(session, anchorCreateResult.anchor)
val contentEntity = createGeospatialContentEntity(context, session)
anchorSpace.addChild(contentEntity)