הוספת נתונים מותאמים אישית בזמן הצילום ב-Android NDK

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

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

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

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

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

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

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

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

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

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

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

יצירת הקלטה של הסשן עם נתונים בהתאמה אישית.

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

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

  1. מקבלים ArRecordingConfig.
  2. יוצרים ArTrack חדש עם UUID בהתאמה אישית. כל הנתונים בהתאמה אישית יישמרו כאן.
  3. מוסיפים את ArTrack ל-ArRecordingConfig שיצרתם במהלך הגדרת הסשן.
// 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.
ArTrack* track = NULL;
ArTrack_create(ar_session, &track);
// String from UUID generator: de5ec7a4-09ec-4c48-b2c3-a98b66e71893
uint8_t uuid_byte_array[16] = {0xde, 0x5e, 0xc7, 0xa4, 0x09, 0xec,
                               0x4c, 0x48, 0xb2, 0xc3, 0xa9, 0x8b,
                               0x66, 0xe7, 0x18, 0x93};
ArTrack_setId(ar_session, track, uuid_byte_array);

// Add the ArTrack to the recording_config.
// recording_config must already be configured.
ArRecordingConfig_addTrack(ar_session, recording_config, track);
ArTrack_destroy(track);

כל הטראקים החדשים נחשבים כהקלטות נפרדות, ולכל טראק מוקלט יש מזהה ייחודי אוניברסלי (UUID) משלו.

אופציונלי: מגדירים את המסלול עם נתונים נוספים

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

// Set additional data on this track.
// For example, describe where you recorded the session.
uint8_t metadata_size = 4;
uint8_t metadata[5] = "HOME";
ArTrack_setMetadata(ar_session, track, metadata, metadata_size);

אופציונלי: הגדרת הטראק באמצעות סוג MIME

אם האפליקציה שלכם צריכה להיות תואמת לכלים חיצוניים, ניתן להגדיר טראק עם סוג MIME שמתאר את סוג הנתונים שתועדו במסלול. אם לא מציינים סוג, הנתונים יסווגו בתור application/text. ARCore מתעלם מסוג MIME בעת קריאת נתונים.

// Set a MIME type for compatibility with external tools.
ArTrack_setMimeType(ar_session, track, "text/csv");

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

כל נתוני המסלולים המותאמים אישית מתועדים ב-ArFrames. בסשנים ב-AR נעשה שימוש ב-ArSession_update() כדי לקבל מסגרת. שעת תיעוד הנתונים לפריים זהה למועד שבו הנתונים יוחזרו במהלך ההפעלה. לדוגמה, אם תקראו ל-ArFrame_recordTrackData() עם הערך "A" ב-00:07:02, תקבלו את "A" בחזרה בסימן 00:07:02 כשהטראק יופעל.

כדי להקליט מסלול נתונים בהתאמה אישית, מתקשרים אל ArFrame_recordTrackData().

// Place an AR lamp in a room.
if (place_lamp_button_was_pressed) {
  uint8_t lamp_data[1] = {lamp_id};
  ArFrame_recordTrackData(ar_session, frame, uuid_byte_array, lamp_data,
                          /*payload_size=*/1);
}

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

חילוץ נתונים מותאמים אישית מהקלטת סשן במהלך הפעלה.

התחלת הפעלה

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

החזרת נתונים מותאמים אישית

אפשר להתקשר אל ArFrame_getUpdatedTrackData() כדי לאחזר את הנתונים המותאמים אישית שתועדו במכשיר ArFrame. ניתן לאחזר נתוני מסלולים מרובים מאותה מסגרת. לדוגמה: אם התקשרתם ל-ArFrame_recordTrackData() פעמיים באותה פריים במהלך ההקלטה, תקבלו חזרה שני מופעים של ArTrackData במהלך ההפעלה.

// Create the container to hold the track data retrieved from the frame.
ArTrackDataList* fetched_track_data_list;
ArTrackDataList_create(ar_session, &fetched_track_data_list);

// Fetch the track data from the frame into the created container.
ArFrame_getUpdatedTrackData(ar_session, frame, uuid_byte_array,
                            fetched_track_data_list);

אחרי שה-ArTrackData נמצא באובייקט מאגר, מחלצים את הבייטים של הנתונים המותאמים אישית.

// Fetch the size of the track data list.
int32_t fetched_track_data_list_size;
ArTrackDataList_getSize(ar_session, fetched_track_data_list,
                        &fetched_track_data_list_size);

// Iterate through the list.
for (int i = 0; i < fetched_track_data_list_size; i++) {
  ArTrackData* fetched_track_data;
  ArTrackDataList_acquireItem(ar_session, fetched_track_data_list, i,
                              &fetched_track_data);
  // Process "fetched_track_data->sample" as desired
  ArTrackData_release(fetched_track_data);
}
ArTrackDataList_destroy(fetched_track_data_list);

מה השלב הבא?

  • ב-Codelab מוסבר איך ליצור אפליקציה משלכם באמצעות 'הקלטה והפעלה'.