ভূ-স্থানিক গভীরতার সাথে আপনার পরিসীমা বাড়ান

ভূ-স্থানিক গভীরতার নায়ক

ARCore Depth API এখন Geospatial Depth সমর্থন করে, যেটি স্বয়ংক্রিয়ভাবে Depth API-এর পরিসর এবং গতি বাড়ায় যখন Streetscape জ্যামিতিও সক্ষম থাকে। যখন VPS কভারেজ সহ একটি অবস্থানে এবং স্ট্রিটস্কেপ জ্যামিতি সক্ষম থাকে, তখন গভীরতা API থেকে আউটপুট চিত্রগুলি বর্তমান অবস্থান থেকে 65 মিটার এলাকায় পুনরুদ্ধার করা ভূখণ্ড এবং বিল্ডিং জ্যামিতি অন্তর্ভুক্ত করে। জ্যামিতি থেকে পুনরুদ্ধার করা এই গভীরতার ডেটা স্থানীয় গভীরতা পর্যবেক্ষণের সাথে একত্রিত হয় এবং ব্যবহারকারী একটি নতুন অবস্থানে যাওয়ার সাথে সাথে আপডেট করা হয়।

ARCore Depth API কলগুলি এখন ক্যামেরা থেকে স্থানীয় পর্যবেক্ষণের পাশাপাশি Streetscape জ্যামিতি থেকে বিল্ডিং এবং ভূখণ্ড উভয়ই প্রদান করে, একটি একক গভীরতার ছবিতে একত্রিত করা হয়েছে।

ডিভাইস সামঞ্জস্য

Depth API সমর্থন করে এমন সমস্ত ডিভাইসে Geospatial Depth উপলব্ধ। এই বৈশিষ্ট্যটির জন্য একটি সমর্থিত হার্ডওয়্যার গভীরতা সেন্সর প্রয়োজন হয় না, যেমন একটি টাইম-অফ-ফ্লাইট (ToF) সেন্সর। যাইহোক, Depth API কোনো ডিভাইসে থাকতে পারে এমন কোনো সমর্থিত হার্ডওয়্যার সেন্সর ব্যবহার করে।

কর্মক্ষমতা প্রভাব

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

গভীরতা পরিসীমা

ভূ-স্থানিক গভীরতা ব্যতীত, গভীরতার চিত্রগুলির সাধারণ রেঞ্জগুলি প্রায় 20-30 মিটার দূরে থাকে, গভীরতা পর্যবেক্ষণের ঘনত্ব এবং নির্ভুলতা সেই সীমার বাইরে কমে যায়৷ জিওস্পেশিয়াল ডেপথ সক্ষম করা হলে, অল্প পরিমাণে প্রাথমিক নড়াচড়ার সাথেও ঘনত্বের নমুনাযুক্ত গভীরতার মান সর্বাধিক 65.535 মিটারে পৌঁছাতে দেখা যায়।

ব্যবহারের ক্ষেত্রে

ARCore Depth API ইতিমধ্যেই সমর্থিত সমস্ত বিদ্যমান ব্যবহারের ক্ষেত্রে ব্যবহার করা যেতে পারে। ভূ-স্থানিক গভীরতার সাথে, ভিপিএস-সমর্থিত অবস্থানে প্রাপ্ত গভীরতার চিত্রগুলি দীর্ঘ-পরিসরের গভীরতার সাথে আগের চেয়ে দ্রুত পপুলেট করা হবে, বহিরঙ্গন পরিবেশে দীর্ঘ-পরিসরের গভীরতা লক্ষ্য করে ব্যবহারের ক্ষেত্রে সক্ষম করে। কিছু ব্যবহারের ক্ষেত্রে অন্তর্ভুক্ত:

  • ভার্চুয়াল বিষয়বস্তু এবং অন্যান্য ভিজ্যুয়াল এফেক্টের বিল্ডিং-স্কেল বাধা
  • আউটডোর নেভিগেশন
  • দূরত্ব পরিমাপ

সীমাবদ্ধতা

ভূ-স্থানিক গভীরতা শুধুমাত্র সেই অঞ্চলে সমর্থিত যা VPS স্থানীয়করণ এবং স্ট্রিটস্কেপ জ্যামিতি সমর্থন করে। অন্যান্য ক্ষেত্রে, ARCore Depth API জিওস্পেশিয়াল মান ছাড়াই স্বাভাবিক হিসাবে কাজ করবে।

পূর্বশর্ত

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

ভূ-স্থানিক গভীরতা সক্ষম করুন

একটি নতুন ARCore সেশনে , ব্যবহারকারীর ডিভাইস ডেপথ এবং জিওস্পেশিয়াল API সমর্থন করে কিনা তা পরীক্ষা করুন। প্রসেসিং পাওয়ার সীমাবদ্ধতার কারণে সমস্ত ARCore-সামঞ্জস্যপূর্ণ ডিভাইস ডেপথ API সমর্থন করে না।

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

int32_t is_depth_supported = 0;
int32_t is_geospatial_supported = 0;

// Check whether the user's device supports the Depth API.
ArSession_isDepthModeSupported(ar_session, AR_DEPTH_MODE_AUTOMATIC,
                               &is_depth_supported);
ArSession_isGeospatialModeSupported(ar_session, AR_GEOSPATIAL_MODE_ENABLED,
                                    &is_geospatial_supported);
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);
if (is_depth_supported && is_geospatial_supported) {
  // These three settings are needed to use Geospatial Depth.
  ArConfig_setDepthMode(ar_session, ar_config, AR_DEPTH_MODE_AUTOMATIC);
  ArConfig_setGeospatialMode(ar_session, ar_config,
                             AR_GEOSPATIAL_MODE_ENABLED);
  ArConfig_setStreetscapeGeometryMode(ar_session, ar_config,
                                      AR_STREETSCAPE_GEOMETRY_MODE_ENABLED);
}
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

ArConfig_destroy(ar_config);

একবার ভূ-স্থানিক গভীরতা সক্ষম হলে, গভীরতা বিকাশকারী নির্দেশিকায় বর্ণিত হিসাবে বিদ্যমান API কলগুলির মাধ্যমে গভীরতার চিত্রগুলি অ্যাক্সেস করা যেতে পারে।

// Retrieve the depth image for the current frame, if available.
ArImage* depth_image = NULL;
// If a depth image is available, use it here.
if (ArFrame_acquireDepthImage16Bits(ar_session, ar_frame, &depth_image) !=
    AR_SUCCESS) {
  // No depth image received for this frame.
  // This normally means that depth data is not available yet.
  // Depth data will not be available if there are no tracked
  // feature points. This can happen when there is no motion, or when the
  // camera loses its ability to track objects in the surrounding
  // environment.
  return;
}

এরপর কি