הוספת נתונים מותאמים אישית תוך כדי הקלטה ב-AR Foundation עם טירגוט ל-Android

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

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

תרחישים לדוגמה לנתונים מותאמים אישית

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

שימוש ב-AR בדרכים

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

יצירה משותפת של חוויות AR

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

דרישות מוקדמות

לפני שממשיכים, חשוב לוודא שאתם מבינים את המושגים הבסיסיים של AR ואת האופן שבו מגדירים סשן של ARCore.

התחלת הקלטה עם נתונים בהתאמה אישית

כדי להתחיל הקלטה באמצעות נתונים בהתאמה אישית, פועלים לפי השלבים הבאים: כדי להתחיל, להפסיק ולבדוק סשן הקלטה, מומלץ לעיין במאמר הקלטה והפעלה של סשן AR.

  1. מקבלים ARCoreRecordingConfig.
  2. יוצרים Track חדש עם UUID בהתאמה אישית. כל הנתונים בהתאמה אישית יישמרו כאן.
  3. מוסיפים את 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 מוסבר איך ליצור אפליקציה משלכם באמצעות 'הקלטה והפעלה'.