অ্যান্ড্রয়েড এনডিকেতে রেকর্ড করার সময় কাস্টম ডেটা যোগ করুন

রেকর্ডিং এবং প্লেব্যাক API আপনাকে একটি সেশন রেকর্ড করতে এবং এটি একটি রিয়েল-টাইম ক্যামেরা ফিডের জায়গায় ব্যবহার করতে দেয়। যাইহোক, এই রেকর্ডিংগুলিতে শুধুমাত্র ভিডিও এবং সেন্সর ডেটা থাকে৷ আপনি একটি সেশন রেকর্ডিংয়ে কাস্টম ডেটা যোগ করতে পারেন এবং প্লেব্যাকের সময় ডেটা আপনার কাছে ফেরত দিতে পারেন, যেন এটি একটি ক্যামেরা চিত্রের অংশ।

ARCore স্বয়ংক্রিয়ভাবে রেকর্ডিংয়ে কোনো কাস্টম ডেটা অন্তর্ভুক্ত করে না। বরং, এটি আপনাকে রেকর্ডিংয়ের সময় একটি ARCore ফ্রেমে কাস্টম ডেটা যোগ করতে এবং প্লেব্যাকের সময় ফ্রেম থেকে একই ডেটা পুনরুদ্ধার করতে দেয়। অ্যাপটিকে এমনভাবে প্রোগ্রাম করা আপনার উপর নির্ভর করে যাতে ব্যবহারকারীরা তাদের সেশনটি খেলার সময় তাদের প্রত্যাশা করা ডেটা ফিরে পায়।

কাস্টম ডেটার জন্য কেস ব্যবহার করুন

রেকর্ডিংয়ে কাস্টম ডেটা যোগ করা আপনার AR অ্যাপের সম্ভাবনাকে প্রসারিত করে। নিম্নলিখিত কিছু নির্দিষ্ট ব্যবহারের ক্ষেত্রে আছে.

যেতে যেতে AR ব্যবহার করুন

অতীতে, ব্যবহারকারীরা শুধুমাত্র সঠিক জায়গায় এবং সঠিক সময়ে AR অভিজ্ঞতা অ্যাক্সেস করতে পারত। যদি তারা তাদের লিভিং রুমে একটি এআর বাতি রাখতে চায়, তবে সেখানে ল্যাম্পটি দেখতে কেমন হতে পারে তা দেখতে তাদের শারীরিকভাবে অবস্থানে দাঁড়াতে হবে। কাস্টম ট্র্যাকগুলির সাহায্যে, তারা তাদের বসার ঘরটি একবার রেকর্ড করতে পারে এবং যখনই তারা মনে হয় দৃশ্যে ভার্চুয়াল আসবাবপত্র যোগ করতে পারে।

AR অভিজ্ঞতা সহ-তৈরি করুন

লাইভ সেশনের প্রয়োজনীয়তা ছাড়াই, ব্যবহারকারীদের কাছে AR সম্পাদনার জন্য আরও অনেক বিকল্প রয়েছে, যা তাদের যেকোনো স্থানে এবং সময়ে অনন্য এআর সামগ্রী তৈরি করতে এবং অ্যাক্সেস করতে দেয়। উদাহরণস্বরূপ, তারা একটি প্রদত্ত পরিবেশ রেকর্ড করতে পারে, বর্ধিত-বাস্তবতা প্রভাব যোগ করতে পারে এবং সেগুলি বন্ধুদের সাথে শেয়ার করতে পারে।

পূর্বশর্ত

এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনি মৌলিক AR ধারণা এবং কীভাবে একটি ARCore সেশন কনফিগার করবেন তা বুঝতে পেরেছেন।

কাস্টম ডেটা সহ রেকর্ড করুন

কাস্টম ডেটা সহ একটি সেশন রেকর্ডিং তৈরি করুন।

কাস্টম ডেটা সহ একটি রেকর্ডিং শুরু করুন

কাস্টম ডেটা সহ একটি রেকর্ডিং শুরু করতে এই পদক্ষেপগুলি অনুসরণ করুন৷ একটি রেকর্ডিং সেশন শুরু করতে, থামাতে এবং পরীক্ষা করতে, অনুগ্রহ করে একটি এআর সেশন রেকর্ড এবং প্লে ব্যাক দেখুন।

  1. একটি ArRecordingConfig পান।
  2. একটি কাস্টম UUID দিয়ে একটি নতুন ArTrack তৈরি করুন। সমস্ত কাস্টম ডেটা এখানে সংরক্ষণ করা হবে।
  3. সেশন কনফিগারেশনের সময় আপনি যে ArRecordingConfig তৈরি করেছেন তাতে ArTrack যোগ করুন।
// 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 s-এ রেকর্ড করা হয়। AR সেশনগুলি একটি ফ্রেম পেতে ArSession_update() ব্যবহার করে। যে সময়ে আপনি একটি ফ্রেমে ডেটা রেকর্ড করেন সেই একই সময়ে প্লেব্যাকের সময় ডেটা ফেরত দেওয়া হবে। উদাহরণস্বরূপ, আপনি যদি 00:07:02 এ "A" মান সহ ArFrame_recordTrackData() কল করেন, ট্র্যাকটি প্লে ব্যাক হলে আপনি 00:07:02 চিহ্নে "A" ফিরে পাবেন।

একটি কাস্টম ডেটা ট্র্যাক রেকর্ড করতে, 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 এ রেকর্ড করা কাস্টম ডেটা পুনরুদ্ধার করতে ArFrame_getUpdatedTrackData() কে কল করুন। একই ফ্রেম থেকে একাধিক ট্র্যাক ডেটা পুনরুদ্ধার করা সম্ভব। উদাহরণস্বরূপ, আপনি যদি রেকর্ডিংয়ের সময় একই ফ্রেমে দুবার 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);

এরপর কি