অ্যান্ড্রয়েড এনডিকে (সি) এ আপনার চারপাশের ভবন এবং ভূখণ্ড ব্যবহার করুন

স্ট্রিটস্কেপ জ্যামিতি API একটি দৃশ্যে ভূখণ্ড, ভবন বা অন্যান্য কাঠামোর জ্যামিতি প্রদান করে। জ্যামিতিটি হিট-টেস্ট API-এর মাধ্যমে আটকানো, রেন্ডারিং বা AR সামগ্রী রাখার জন্য ব্যবহার করা যেতে পারে। স্ট্রিটস্কেপ জ্যামিতি ডেটা Google রাস্তার দৃশ্য চিত্রের মাধ্যমে প্রাপ্ত করা হয়।

Geospatial API সেট আপ করুন

স্ট্রিটস্কেপ জ্যামিতি ব্যবহার করতে, আপনাকে আপনার প্রকল্পে জিওস্পেশিয়াল API সেট আপ করতে হবে। জিওস্পেশিয়াল এপিআই সেট আপ করতে জিওস্পেশিয়াল এপিআই সক্ষম করার নির্দেশাবলী অনুসরণ করুন।

স্ট্রিটস্কেপ জ্যামিতি সক্ষম করুন

যখন ArGeospatialMode ArGeospatialModeEnabled এ সেট করা হয় এবং ArStreetscapeGeometryMode ArStreetscapeGeometryModeEnabled এ সেট করা হয় তখন Geospatial API Streetscape জ্যামিতি ডেটা পায়।

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Enable Streetscape Geometry.
ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

একটি ARCore সেশনে স্ট্রিটস্কেপ জ্যামিতি পান

ArSession_getAllTrackables() ব্যবহার করুন এবং ফলাফল ফিল্টার করতে AR_TRACKABLE_STREETSCAPE_GEOMETRY ব্যবহার করুন।

ArTrackableList* trackable_list = NULL;
ArTrackableList_create(ar_session, &trackable_list);
ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);

ArStreetscapeGeometry বুঝুন

ArStreetscapeGeometry একটি বিল্ডিং সম্পর্কে তথ্য রয়েছে:

বিল্ডিং LOD 1

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1 বিল্ডিং পায়ের ছাপ একটি সমতল শীর্ষে উপরের দিকে বের করে নিয়ে গঠিত। বিল্ডিং উচ্চতা ভুল হতে পারে.

বিল্ডিং LOD 2

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2 এর উচ্চতর বিশ্বস্ততা জ্যামিতি থাকবে। জাল দেয়াল এবং ছাদগুলি বিল্ডিংয়ের আকারের সাথে আরও ঘনিষ্ঠভাবে মিলবে। চিমনি বা ছাদের ভেন্টের মতো ছোট বৈশিষ্ট্যগুলি এখনও জালের বাইরে খোঁচা দিতে পারে।

ArMesh বুঝুন

ArMesh হল একটি বহুভুজ জাল যা স্ট্রিটস্কেপ জ্যামিতির একটি পৃষ্ঠের পুনর্গঠনের প্রতিনিধিত্ব করে। প্রতিটি ArMesh একটি শীর্ষ বাফার এবং সূচক বাফার অন্তর্ভুক্ত:

  • ArMesh_getVertexListSize()
    এই জালের শীর্ষবিন্দুর সংখ্যা পুনরুদ্ধার করে।
  • ArMesh_getVertexList()
    ArStreetscapeGeometry_getMeshPose() এর সাপেক্ষে স্থানাঙ্কে, জাল শীর্ষবিন্দুর সংযুক্ত অবস্থানগুলি পান।
  • ArMesh_getIndexListSize()
    এই জালের মধ্যে সূচকের সংখ্যা পুনরুদ্ধার করে।
  • ArMesh_getIndexList()
    একটি মুখ তৈরি করে এমন শীর্ষবিন্দুগুলির সূচীগুলি পান৷

একটি ArStreetscapeGeometry AR সামগ্রী সংযুক্ত করুন

স্ট্রিটস্কেপ জ্যামিতিতে এআর সামগ্রী সংযুক্ত করার দুটি উপায় রয়েছে:

ArStreetscapeGeometry এর বিরুদ্ধে একটি হিট-পরীক্ষা করুন

Streetscape জ্যামিতির বিরুদ্ধে হিট-টেস্ট করতে ArFrame_hitTest ব্যবহার করা যেতে পারে। যদি ছেদগুলি পাওয়া যায়, ArHitResult হিট অবস্থান সম্পর্কে পোজ তথ্যের পাশাপাশি ArStreetscapeGeometry এর একটি রেফারেন্স রয়েছে যা হিট হয়েছিল৷ এই Streetscape জ্যামিতি ArTrackable_acquireNewAnchor() এর সাথে সংযুক্ত একটি অ্যাঙ্কর তৈরি করতে পাস করা যেতে পারে।

ArHitResultList *hit_result_list = NULL;
ArHitResult *hit_result = NULL;
ArHitResultList_create(ar_session, &hit_result_list);
ArHitResult_create(ar_session, &hit_result);

ArFrame_hitTestRay(ar_session, ar_frame, origin, direction, hit_result_list);
ArHitResultList_getItem(ar_session, hit_result_list, 0, hit_result);

ArAnchor *out_anchor = NULL;
ArStatus status = ArHitResult_acquireNewAnchor(ar_session, hit_result, &out_anchor);
CHECK(status == AR_SUCCESS);

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

ভূ-স্থানিক গভীরতা গভীরতার ডেটা উন্নত করতে স্থানীয় সেন্সর ইনপুটের সাথে স্ট্রিটস্কেপ জ্যামিতিকে একত্রিত করে। যখন ভূ-স্থানিক গভীরতা সক্ষম করা হয়, আউটপুট গভীরতা এবং কাঁচা গভীরতার চিত্রগুলিকে স্থানীয়ভাবে পর্যবেক্ষণ করা গভীরতার পাশাপাশি রাস্টারাইজড স্ট্রিটস্কেপ জ্যামিতি অন্তর্ভুক্ত করার জন্য পরিবর্তন করা হয়। এটি গভীরতা ব্যবহার করে ভঙ্গির নির্ভুলতা উন্নত করতে পারে। ,

স্ট্রিটস্কেপ জ্যামিতি API একটি দৃশ্যে ভূখণ্ড, ভবন বা অন্যান্য কাঠামোর জ্যামিতি প্রদান করে। জ্যামিতিটি হিট-টেস্ট API-এর মাধ্যমে আটকানো, রেন্ডারিং বা AR সামগ্রী রাখার জন্য ব্যবহার করা যেতে পারে। স্ট্রিটস্কেপ জ্যামিতি ডেটা Google রাস্তার দৃশ্য চিত্রের মাধ্যমে প্রাপ্ত করা হয়।

Geospatial API সেট আপ করুন

স্ট্রিটস্কেপ জ্যামিতি ব্যবহার করতে, আপনাকে আপনার প্রকল্পে জিওস্পেশিয়াল API সেট আপ করতে হবে। জিওস্পেশিয়াল এপিআই সেট আপ করতে জিওস্পেশিয়াল এপিআই সক্ষম করার নির্দেশাবলী অনুসরণ করুন।

স্ট্রিটস্কেপ জ্যামিতি সক্ষম করুন

যখন ArGeospatialMode ArGeospatialModeEnabled এ সেট করা হয় এবং ArStreetscapeGeometryMode ArStreetscapeGeometryModeEnabled এ সেট করা হয় তখন Geospatial API Streetscape জ্যামিতি ডেটা পায়।

// Create a session config.
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);

// Enable the Geospatial API.
ArConfig_setGeospatialMode(ar_session, ar_config, AR_GEOSPATIAL_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Enable Streetscape Geometry.
ArConfig_setStreetscapeGeometryMode(ar_session, ar_config, AR_STREETSCAPE_GEOMETRY_MODE_ENABLED);
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

// Release config resources.
ArConfig_destroy(ar_config);

একটি ARCore সেশনে স্ট্রিটস্কেপ জ্যামিতি পান

ArSession_getAllTrackables() ব্যবহার করুন এবং ফলাফল ফিল্টার করতে AR_TRACKABLE_STREETSCAPE_GEOMETRY ব্যবহার করুন।

ArTrackableList* trackable_list = NULL;
ArTrackableList_create(ar_session, &trackable_list);
ArSession_getAllTrackables(ar_session, AR_TRACKABLE_STREETSCAPE_GEOMETRY, trackable_list);

ArStreetscapeGeometry বুঝুন

ArStreetscapeGeometry একটি বিল্ডিং সম্পর্কে তথ্য রয়েছে:

বিল্ডিং LOD 1

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_1 বিল্ডিং পায়ের ছাপ একটি সমতল শীর্ষে উপরের দিকে বের করে নিয়ে গঠিত। বিল্ডিং উচ্চতা ভুল হতে পারে.

বিল্ডিং LOD 2

AR_STREETSCAPE_GEOMETRY_QUALITY_BUILDING_LOD_2 এর উচ্চতর বিশ্বস্ততা জ্যামিতি থাকবে। জাল দেয়াল এবং ছাদগুলি বিল্ডিংয়ের আকারের সাথে আরও ঘনিষ্ঠভাবে মিলবে। চিমনি বা ছাদের ভেন্টের মতো ছোট বৈশিষ্ট্যগুলি এখনও জালের বাইরে খোঁচা দিতে পারে।

ArMesh বুঝুন

ArMesh হল একটি বহুভুজ জাল যা স্ট্রিটস্কেপ জ্যামিতির একটি পৃষ্ঠের পুনর্গঠনের প্রতিনিধিত্ব করে। প্রতিটি ArMesh একটি শীর্ষ বাফার এবং সূচক বাফার অন্তর্ভুক্ত:

  • ArMesh_getVertexListSize()
    এই জালের শীর্ষবিন্দুর সংখ্যা পুনরুদ্ধার করে।
  • ArMesh_getVertexList()
    ArStreetscapeGeometry_getMeshPose() এর সাপেক্ষে স্থানাঙ্কে, জাল শীর্ষবিন্দুর সংযুক্ত অবস্থানগুলি পান।
  • ArMesh_getIndexListSize()
    এই জালের মধ্যে সূচকের সংখ্যা পুনরুদ্ধার করে।
  • ArMesh_getIndexList()
    একটি মুখ তৈরি করে এমন শীর্ষবিন্দুগুলির সূচীগুলি পান৷

একটি ArStreetscapeGeometry AR সামগ্রী সংযুক্ত করুন

স্ট্রিটস্কেপ জ্যামিতিতে এআর সামগ্রী সংযুক্ত করার দুটি উপায় রয়েছে:

ArStreetscapeGeometry এর বিরুদ্ধে একটি হিট-পরীক্ষা করুন

Streetscape জ্যামিতির বিরুদ্ধে হিট-টেস্ট করতে ArFrame_hitTest ব্যবহার করা যেতে পারে। যদি ছেদগুলি পাওয়া যায়, ArHitResult হিট অবস্থান সম্পর্কে পোজ তথ্যের পাশাপাশি ArStreetscapeGeometry এর একটি রেফারেন্স রয়েছে যা হিট হয়েছিল৷ এই Streetscape জ্যামিতি ArTrackable_acquireNewAnchor() এর সাথে সংযুক্ত একটি অ্যাঙ্কর তৈরি করতে পাস করা যেতে পারে।

ArHitResultList *hit_result_list = NULL;
ArHitResult *hit_result = NULL;
ArHitResultList_create(ar_session, &hit_result_list);
ArHitResult_create(ar_session, &hit_result);

ArFrame_hitTestRay(ar_session, ar_frame, origin, direction, hit_result_list);
ArHitResultList_getItem(ar_session, hit_result_list, 0, hit_result);

ArAnchor *out_anchor = NULL;
ArStatus status = ArHitResult_acquireNewAnchor(ar_session, hit_result, &out_anchor);
CHECK(status == AR_SUCCESS);

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

ভূ-স্থানিক গভীরতা গভীরতার ডেটা উন্নত করতে স্থানীয় সেন্সর ইনপুটের সাথে স্ট্রিটস্কেপ জ্যামিতিকে একত্রিত করে। যখন ভূ-স্থানিক গভীরতা সক্ষম করা হয়, আউটপুট গভীরতা এবং কাঁচা গভীরতার চিত্রগুলিকে স্থানীয়ভাবে পর্যবেক্ষণ করা গভীরতার পাশাপাশি রাস্টারাইজড স্ট্রিটস্কেপ জ্যামিতি অন্তর্ভুক্ত করার জন্য পরিবর্তন করা হয়। এটি গভীরতা ব্যবহার করে ভঙ্গির নির্ভুলতা উন্নত করতে পারে।