Raw Depth API מספק נתוני עומק לתמונה ממצלמה עם דיוק גבוה יותר מנתוני Depth API מלאים, אבל לא תמיד מכסה את כל הפיקסלים. אפשר גם לעבד תמונות עומק גולמיות, יחד עם תמונות מהימנות של ההתאמה שלהן, כדי לאפשר לאפליקציות להשתמש רק בנתוני העומק שיש להם דיוק מספיק לצורכי השימוש הספציפיים שלהן.
אין לי מכשיר תואם
עומק נתונים גולמי זמין בכל המכשירים שתומכים ב-Depth API. כמו ב-Depth API המלא, גם ב-Raw Depth API לא נדרש חיישן עומק חומרה נתמך, כמו חיישן זמן תעופה (ToF). עם זאת, גם Raw Depth API וגם Depth API המלא משתמשים בכל חיישני החומרה הנתמכים שקיימים במכשיר.
Raw Depth API לעומת Depth API מלא
Raw Depth API מספק אומדני עומק ברמת דיוק גבוהה יותר, אבל יכול להיות שתמונות עומק גולמי לא יכללו אומדני עומק לכל הפיקסלים בתמונה של המצלמה. לעומת זאת, Depth API המלא מספק עומק משוער לכל פיקסל, אבל נתוני העומק לכל פיקסל עשויים להיות פחות מדויקים בגלל החלקה ואינטרפולציה של אומדני העומק. הפורמט והגודל של תמונות העומק זהים בשני ממשקי ה-API. ההבדל הוא רק בתוכן.
בטבלה הבאה מפורטים ההבדלים בין Raw Depth API לבין Depth API המלא באמצעות תמונה של כיסא ושולחן במטבח.
API | החזרות | תמונת המצלמה | תמונה עם עומק | תמונה של רמת הסמך |
---|---|---|---|---|
Raw Depth API |
|
|||
Full Depth API |
|
לא רלוונטי |
תמונות של רמת סמך
בתמונות האמינות שמוחזרות על ידי Raw Depth API, לפיקסלים בהירים יותר יש ערכי אמינות גבוהים יותר, כאשר פיקסלים לבנים מייצגים אמינות מלאה ופיקסלים שחורים מייצגים חוסר אמינות. באופן כללי, באזורים בתמונה מהמצלמה שיש בהם יותר טקסטורה, כמו עץ, רמת האמינות של עומק הגלם תהיה גבוהה יותר מאשר באזורים ללא טקסטורה, כמו קיר ריק. בדרך כלל, משטחים ללא טקסטורה מניבים רמת ביטחון אפס.
אם במכשיר היעד יש חיישן עומק חומרה נתמך, סביר להניח שהרמת האמינות תהיה גבוהה יותר באזורים של התמונה שנמצאים קרוב מספיק למצלמה, גם על משטחים ללא מרקם.
עלות מחשוב
עלות המחשוב של Raw Depth API היא כמחצית מעלות המחשוב של Depth API המלא.
תרחישים לדוגמה
באמצעות Raw Depth API אפשר לקבל תמונות עומק שמספקות ייצוג מפורט יותר של הגיאומטריה של האובייקטים בסצנה. נתוני עומק גולמיים יכולים להיות שימושיים כשיוצרים חוויות AR שבהן נדרשת דיוק ועומק מוגברים לצורך משימות של הבנת גיאומטריה. תרחישים לדוגמה:
- שחזור תלת-ממד
- מדידה
- זיהוי צורות
דרישות מוקדמות
לפני שממשיכים, חשוב להבין את המושגים הבסיסיים של AR ואת האופן שבו מגדירים סשן ARCore.
הפעלת עומק
בסשן ARCore חדש, בודקים אם המכשיר של המשתמש תומך בתכונה 'עומק'. לא כל המכשירים התואמים ל-ARCore תומכים ב-Depth API בגלל מגבלות של כוח עיבוד. כדי לחסוך במשאבים, התכונה 'עומק' מושבתת כברירת מחדל ב-ARCore. מפעילים את מצב העומק כדי שהאפליקציה תשתמש ב-Depth API.
var occlusionManager = // Typically acquired from the Camera game object.
// Check whether the user's device supports the Depth API.
if (occlusionManager.descriptor?.supportsEnvironmentDepthImage)
{
// If depth mode is available on the user's device, perform
// the steps you want here.
}
קבלת תמונת העומק הגולמית העדכנית ביותר
קוראים ל-AROcclusionManager.TryAcquireEnvironmentDepthCpuImage()
ומשתמשים ב-AROcclusionManager.environmentDepthTemporalSmoothingRequested
כדי לקבל את תמונת העומק הגולמית העדכנית ביותר ב-CPU.
קבלת התמונה האחרונה של עומק משוער גולמי
קוראים ל-AROcclusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage()
ומשתמשים ב-AROcclusionManager.environmentDepthTemporalSmoothingRequested
כדי לקבל את תמונת האמון ב-CPU.
// Attempt to get the latest environment depth image.
if (occlusionManager && occlusionManager.TryAcquireEnvironmentDepthConfidenceCpuImage(out XRCpuImage image))
{
using (image)
{
UpdateRawImage(m_RawEnvironmentDepthConfidenceImage, image);
}
}
else
{
m_RawEnvironmentDepthConfidenceImage.enabled = false;
}