באמצעות Recording & Playback API אפשר להקליט סשן ולהשתמש בו במקום בפיד מצלמה בזמן אמת. עם זאת, ההקלטות האלה מכילות רק נתוני וידאו ונתוני חיישנים. אפשר גם להוסיף נתונים מותאמים אישית להקלטה של סשן, והנתונים יוחזרו אליכם במהלך ההפעלה, כאילו הם חלק מתמונה של מצלמה.
ARCore לא כולל באופן אוטומטי נתונים מותאמים אישית בהקלטות. במקום זאת, הוא מאפשר לכם להוסיף נתונים מותאמים אישית לפריים של ARCore במהלך הצילום, ולאחזר את אותם נתונים מהפריים במהלך ההפעלה. אתם אחראים לתכנת את האפליקציה כך שהמשתמשים יקבלו בחזרה את הנתונים שהם מצפים לקבל כשהם מפעילים מחדש את הסשן.
תרחישים לדוגמה לנתונים מותאמים אישית
הוספת נתונים מותאמים אישית להקלטות מרחיבה את האפשרויות של אפליקציות ה-AR. בהמשך מפורטים כמה תרחישים לדוגמה.
שימוש ב-AR בדרכים
בעבר, המשתמשים יכלו לגשת לחוויות AR רק במקום הנכון ובזמן הנכון. אם הם רצו למקם מנורת AR בסלון, הם היו צריכים לעמוד פיזית במיקום כדי לראות איך המנורה נראית שם. בעזרת טראקים מותאמים אישית, הם יכולים לצלם את הסלון שלהם פעם אחת ולהוסיף ריהוט וירטואלי לסצנה מתי שרוצים.
יצירת חוויות AR בשיתוף
בלי דרישה לפעילות בשידור חי, למשתמשים יש הרבה יותר אפשרויות לעריכת AR, ומאפשרות להם ליצור תוכן AR ייחודי ולגשת אליו בכל מקום ובכל זמן. לדוגמה, הם יכולים לצלם סביבה מסוימת, להוסיף לה אפקטים של מציאות רבודה ולשתף אותם עם חברים.
דרישות מוקדמות
לפני שממשיכים, חשוב להבין את המושגים הבסיסיים של AR ואת האופן שבו מגדירים סשן ARCore.
איך מפעילים הקלטה עם נתונים מותאמים אישית
כדי לאתחל הקלטה עם נתונים מותאמים אישית, פועלים לפי השלבים הבאים: במאמר הקלטה והפעלה של סשן AR מוסבר איך מתחילים, מפסיקים ובודקים סשן הקלטה.
- מקבלים
ARCoreRecordingConfig
. - יוצרים
Track
חדש עם מזהה UUID מותאם אישית. כל הנתונים המותאמים אישית יישמרו כאן. - מוסיפים את
Track
ל-ARCoreRecordingConfig
שיצרתם במהלך הגדרת הסשן.
// Initialize a new track with a custom UUID.
// Make sure to save the UUID because it is the ID that you will use
// to get your data back during playback.
var track = new Track {
Id = Guid.Parse("de5ec7a4-09ec-4c48-b2c3-a98b66e71893") // from UUID generator
};
// Add the Track to the recordingConfig.
// recordingConfig must already be configured.
List<Track> tracks = new List<Track>();
tracks.Add(track);
recordingConfig.Tracks = tracks;
המערכת מתייחסת לכל טראקים חדשים כאל הקלטות נפרדות, וכל טראק מוקלט מקבל מזהה UUID משלו.
הגדרת הטראק עם נתונים נוספים
מגדירים את הטראק עם נתונים נוספים שמתארים את ההקלטה של הסשן. לדוגמה, אפשר 'לתייג' טראק על ידי הוספת הערה שמתארת את המיקום ואת השעה שבהם הקלטתם את הסשן: 'הסשן הזה הוקלט בקניון בשעות אחר הצהריים'.
// Set additional data on this track.
// For example, describe where you recorded the session.
byte[] metadata = ...
track.Metadata = metadata;
הגדרת הטראק עם סוג MIME
מגדירים טראק עם סוג MIME שמתאר את סוג הנתונים שתועדו בטראק, כדי לשמור על תאימות לכלים חיצוניים.
אם לא מציינים סוג, הנתונים יסווגו בתור application/text
. כשקוראים נתונים, המערכת של ARCore מתעלמת מסוג ה-MIME.
// Set a MIME type for compatibility with external tools.
track.MimeType = "text/csv";
הקלטת נתיבי נתונים בהתאמה אישית
כל נתוני הטראק בהתאמה אישית מתועדים בפריימים. הזמן שבו מתועדים נתונים בפריים הוא אותו זמן שבו הנתונים יחזרו במהלך ההפעלה. לדוגמה, אם קוראים לפונקציה RecordTrackData()
עם הערך 'A' ב-00:07:02
, הערך 'A' יוחזר בסימן 00:07:02
כשהטראק יושמע.
כדי להקליט טראק נתונים בהתאמה אישית, מפעילים את הפקודה RecordTrackData()
.
// Place an AR lamp in a room.
if (placeLampButtonWasPressed) {
// Convert the lamp data into a byte array.
var lampData = new byte[] { (byte) Lamp.FLOOR }; // a floor lamp
recordingManager.RecordTrackData(trackGuid, lampData);
}
הפעלה של נתיבי נתונים בהתאמה אישית
חילוץ נתונים מותאמים אישית מהקלטת סשן במהלך ההפעלה.
איך מפעילים את ההפעלה
איפוס ההפעלה עם נתונים מותאמים אישית זהה לאיפוס ההפעלה של הקלטה רגילה של סשן.
החזרת נתונים בהתאמה אישית
קוראים לפונקציה GetUpdatedTrackData()
כדי לאחזר את הנתונים המותאמים אישית שתועדו בפריים. אפשר לאחזר כמה נתוני טראקים מאותו פריים. לדוגמה, אם תפעילו את הפונקציה RecordTrackData()
פעמיים באותו פריים במהלך ההקלטה, תקבלו שני מופעים של TrackData
במהלך ההפעלה.
// Fetch the data recorded on a select frame and place it in a
// container object.
var trackDataList = recordingManager.GetUpdatedTrackData(trackGuid);
אחרי ש-TrackData
נמצא באובייקט מאגר, מחלצים את הבייטים של הנתונים המותאמים אישית.
// Extract the bytes of custom data from the list of track data.
foreach (TrackData trackData in trackDataList) {
var data = trackData.Data;
Lamp lamp = Lamp.fromByte(data[0]); // This is the lamp!
}
מה השלב הבא?
- בcodelab של הקלטה והפעלה מוסבר איך ליצור אפליקציה משלכם באמצעות הקלטה והפעלה.