تتيح لك واجهة برمجة التطبيقات للتسجيل والتشغيل تسجيل جلسة واستخدامها بدلاً من خلاصة الكاميرا في الوقت الفعلي. ومع ذلك، لا تحتوي هذه التسجيلات إلا على بيانات الفيديو وبيانات أجهزة الاستشعار. يمكنك أيضًا إضافة بيانات مخصّصة إلى تسجيل جلسة وعرض البيانات أثناء التشغيل، كما لو كانت جزءًا من صورة كاميرا.
لا يُدرِج ARCore تلقائيًا أي بيانات مخصّصة في التسجيلات. بدلاً من ذلك، تتيح لك إضافة بيانات مخصّصة إلى إطار ARCore أثناء التسجيل واسترداد هذه البيانات نفسها من الإطار أثناء التشغيل. يعود إليك اختيار برمجة التطبيق بطريقة تسمح للمستخدم باستعادة البيانات التي يتوقّعها عند إعادة تشغيل جلسته.
حالات استخدام البيانات المخصّصة
تؤدي إضافة بيانات مخصّصة إلى التسجيلات إلى توسيع نطاق إمكانيات تطبيقات الواقع المعزّز. في ما يلي بعض حالات الاستخدام المحدّدة.
استخدام "الواقع المعزّز" أثناء التنقّل
في السابق، كان بإمكان المستخدمين الوصول إلى تجارب الواقع المعزّز فقط في المكان والوقت المناسبَين. إذا أرادوا وضع مصباح الواقع المعزّز في غرفة المعيشة، كان عليهم الوقوف في المكان الذي يريدون وضع المصباح فيه لمعرفة شكله. وباستخدام المقاطع الصوتية المخصّصة، يمكنهم تسجيل محتوى غرفة المعيشة مرة واحدة وإضافة أثاث افتراضي إلى المشهد متى شاؤوا.
إنشاء تجارب الواقع المعزّز بشكلٍ مشترَك
بدون الحاجة إلى جلسة مباشرة، تتوفّر للمستخدمين خيارات إضافية كثيرة لتعديل المحتوى المعزّز بالواقع، ما يتيح لهم إنشاء محتوى فريد باستخدام ميزة الواقع المعزّز والوصول إليه في أي مكان ووقت. على سبيل المثال، يمكنهم تسجيل بيئة معيّنة وإضافة تأثيرات الواقع المعزّز ومشاركتها مع الأصدقاء.
المتطلبات الأساسية
احرص على فهم مفاهيم الواقع المعزّز الأساسية وكيفية ضبط جلسة ARCore قبل المتابعة.
بدء تسجيل باستخدام بيانات مخصّصة
اتّبِع الخطوات التالية لبدء تسجيل باستخدام بيانات مخصّصة. لبدء جلسة تسجيل وإيقافها والاطّلاع عليها، يُرجى الاطّلاع على مقالة تسجيل جلسة الواقع المعزّز وتشغيلها.
- الحصول على
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()
بالقيمة "أ" عند 00:07:02
، ستحصل على "أ" مرة أخرى عند علامة 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!
}
الخطوات التالية
- تعرَّف على كيفية إنشاء تطبيقك باستخدام ميزتَي "التسجيل" و"إعادة التشغيل" من خلال الاطّلاع على الدرس التطبيقي حول ترميز ميزتَي "التسجيل" و"إعادة التشغيل".