הוספת נתונים מותאמים אישית בזמן הצילום ב-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");

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

כל נתוני הטראק בהתאמה אישית מתועדים ב-ArFrame. בסשנים של 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.