ARCore-এ স্ট্রিটস্কেপ জ্যামিতি এবং রুফটপ অ্যাঙ্কর এপিআই দিয়ে শুরু করুন

1. আপনি শুরু করার আগে

ARCore হল স্মার্টফোনে অগমেন্টেড রিয়েলিটি (AR) অভিজ্ঞতা তৈরির জন্য Google-এর কাঠামো। জিওস্পেশিয়াল স্ট্রিটস্কেপ জ্যামিতি এবং রুফটপ অ্যাঙ্কর এপিআই আপনার ব্যবহারকারীদের আশেপাশের বিল্ডিংগুলি বুঝতে আপনার AR অভিজ্ঞতাগুলিকে সাহায্য করে।

এই কোডল্যাবে, আপনি একটি AR অ্যাপ তৈরি করেন যা আপনার এলাকার রাস্তার দৃশ্যের জ্যামিতি কল্পনা করে এবং আপনাকে এর পাশ সাজাতে দেয়। তারপর, আপনি আপনার চারপাশের ছাদের শীর্ষে একটি সজ্জা যোগ করতে ছাদ নোঙ্গর ব্যবহার করুন।

কোডল্যাব অ্যাপের সম্পূর্ণ ডেমো

পূর্বশর্ত

  • AR এর প্রাথমিক জ্ঞান
  • ARCore Geospatial API- এর প্রাথমিক জ্ঞান

আপনি কি শিখবেন

  • কীভাবে একটি Google ক্লাউড প্রকল্প সেট আপ করবেন যা ARCore জিওস্পেশিয়াল API ব্যবহার করতে পারে।
  • Geospatial API থেকে রাস্তার দৃশ্য জ্যামিতি কিভাবে প্রাপ্ত করা যায়।
  • রাস্তার দৃশ্য জ্যামিতি থেকে প্রাপ্ত বিল্ডিং এবং ভূখণ্ডগুলি কীভাবে কল্পনা করা যায়।
  • প্রাপ্ত বহুভুজ উপর মৌলিক গণনা কিভাবে সঞ্চালন.
  • কিভাবে জ্যামিতি একটি হিট-পরীক্ষা সঞ্চালন.
  • ভবনের শীর্ষে বিষয়বস্তু সংযুক্ত করতে ছাদের নোঙ্গরগুলি কীভাবে ব্যবহার করবেন।

আপনি কি প্রয়োজন হবে

2. আপনার পরিবেশ সেট আপ করুন

কোটলিন এবং অ্যান্ড্রয়েড স্টুডিওর সাথে ভূ-স্থানীয় API ব্যবহার করতে, আপনার একটি Google ক্লাউড প্রকল্প এবং আমাদের স্টার্টার প্রকল্প প্রয়োজন৷

একটি Google ক্লাউড প্রকল্প সেট আপ করুন৷

ARCore জিওস্পেশিয়াল এপিআই Google ক্লাউডের সাথে সংযোগ করে যাতে Google এর ভিজ্যুয়াল পজিশনিং সিস্টেম (VPS) থেকে Google রাস্তার দৃশ্যের আওতাভুক্ত এলাকায় স্থানীয়করণের তথ্য প্রদান করা হয়।

আপনার প্রকল্পে এই সার্ভারটি ব্যবহার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. গুগল ক্লাউডে একটি প্রকল্প তৈরি করুন। একটি Google ক্লাউড প্রকল্প তৈরি করুন
  2. প্রকল্পের নাম ক্ষেত্রে, একটি উপযুক্ত নাম লিখুন, যেমন ARCore Geospatial API project , এবং যেকোনো অবস্থান বেছে নিন।
  3. তৈরি করুন ক্লিক করুন।
  4. প্রকল্প-নির্বাচক পৃষ্ঠায় Google ক্লাউড কনসোলে , প্রকল্প তৈরি করুন ক্লিক করুন।
  5. এই প্রকল্পের জন্য ARCore API দেখতে নিম্নলিখিত লিঙ্কে ক্লিক করুন এবং সক্ষম ক্লিক করুন:
  6. আপনার প্রকল্পের জন্য একটি API কী তৈরি করুন:
    1. API এবং পরিষেবার অধীনে, শংসাপত্র নির্বাচন করুন।
    2. শংসাপত্র তৈরি করুন ক্লিক করুন এবং API কী নির্বাচন করুন।
    3. চাবিটি নোট করুন কারণ আপনার এটি পরে প্রয়োজন।

আপনি API-কী অনুমোদন সহ একটি Google ক্লাউড প্রকল্প তৈরি করেছেন এবং আপনি নমুনা প্রকল্পে ভূ-স্থানীয় API ব্যবহার করতে প্রস্তুত৷

অ্যান্ড্রয়েড স্টুডিও সেট আপ করুন

জিওস্পেশিয়াল এপিআই দিয়ে শুরু করার জন্য, আমরা একটি স্টার্টার প্রজেক্ট প্রদান করেছি যেটিতে জিওস্পেশিয়াল এপিআই-এর সাথে একীভূত একটি ARCore প্রোজেক্টের বেসিক রয়েছে।

অ্যান্ড্রয়েড স্টুডিও সেট আপ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. অ্যান্ড্রয়েড স্টুডিও খুলুন এবং নিম্নলিখিতগুলির মধ্যে একটি করুন:
    • আপনার যদি ইতিমধ্যেই একটি প্রকল্প খোলা থাকে তবে সংস্করণ নিয়ন্ত্রণ থেকে ফাইল > নতুন > প্রকল্পে ক্লিক করুন।
    • আপনি যদি অ্যান্ড্রয়েড স্টুডিওতে স্বাগতম উইন্ডো দেখতে পান তবে ভিসিএস থেকে পান ক্লিক করুন। ভিসিএস অবস্থান থেকে পান
  2. গিট নির্বাচন করুন এবং প্রকল্প আমদানি করতে https://github.com/google-ar/codelab-streetscape-geometry-rooftop-anchors.git লিখুন।

অ্যান্ড্রয়েড স্টুডিও প্রকল্পের সাথে API কী একীভূত করুন

আপনার প্রকল্পের সাথে Google ক্লাউড থেকে API কী সংযুক্ত করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. অ্যান্ড্রয়েড স্টুডিওতে, অ্যাপ > src-এ ক্লিক করুন এবং AndroidManifest.xml ডাবল-ক্লিক করুন।
  2. নিম্নলিখিত meta-data এন্ট্রি খুঁজুন:
    <meta-data
        android:name="com.google.android.ar.API_KEY"
        android:value="API_KEY" />
    
  3. API_KEY প্লেসহোল্ডারটিকে API কী দিয়ে প্রতিস্থাপন করুন যা আপনি আপনার Google ক্লাউড প্রকল্পে তৈরি করেছেনcom.google.android.ar.API_KEY এ সঞ্চিত মান এই অ্যাপটিকে ভূ-স্থানীয় API ব্যবহার করার অনুমোদন দেয়।

আপনার প্রকল্প যাচাই করুন

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

ভূ-স্থানিক তথ্য অ্যাপটিতে প্রদর্শিত হয়

3. রাস্তার দৃশ্য-জ্যামিতি ডেটা কল্পনা করুন

আপনার ডিভাইসে Geospatial API কাজ করে তা নিশ্চিত করার পরে, আপনি Geospatial API থেকে রাস্তার দৃশ্য জ্যামিতি পাবেন।

রাস্তার দৃশ্য জ্যামিতি সক্ষম করুন৷

  1. StreetscapeGeometryActivity.kt ফাইলে, নিম্নলিখিত লাইনটি খুঁজুন:
    // TODO: Enable Streetscape Geometry.
    
  2. এই লাইনের পরে, রাস্তার দৃশ্য-জ্যামিতি মোড সক্ষম করুন:
    streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
    
    যখন Geospatial API এবং স্ট্রিটস্কেপ-জ্যামিতি মোড সক্রিয় থাকে, তখন আপনার অ্যাপ ব্যবহারকারীর চারপাশে রাস্তার দৃশ্য-জ্যামিতি তথ্য পেতে পারে।

রাস্তার দৃশ্য জ্যামিতি প্রাপ্ত

  1. StreetscapeGeometryActivity.kt ফাইলে, নিম্নলিখিত লাইনটি খুঁজুন:
    // TODO: Obtain Streetscape Geometry.
    
  2. এই লাইনের পরে, সমস্ত Trackable বস্তু পেয়ে এবং StreetscapeGeometry দ্বারা ফিল্টার করে স্ট্রিটস্কেপ জ্যামিতি প্রাপ্ত করুন:
    val streetscapeGeometry = session.getAllTrackables(StreetscapeGeometry::class.java)
    
    আপনি এই জ্যামিতিগুলিকে একটি সাধারণ ভিজ্যুয়ালাইজেশনে ব্যবহার করেন যা নমুনা প্রকল্পে দেওয়া হয়েছে। এই ভিজ্যুয়ালাইজেশন প্রতিটি বিল্ডিং বা ভূখণ্ডের বহুভুজকে ভিন্ন রঙে প্রদর্শন করে।
  3. পরবর্তী লাইনে, নিম্নলিখিত কোড যোগ করুন:
    streetscapeGeometryRenderer.render(render, streetscapeGeometry)
    
  4. আপনার অ্যাপটি চালান এবং আপনার এলাকার একটি বিল্ডিং দেখুন।
  5. ভূ-স্থানিক স্থানীয়করণ সম্পন্ন হওয়ার পরে, আলতো চাপুন সেটিংস আইকন সেটিংস এবং স্ট্রিটস্কেপ-জ্যামিতি ভিজ্যুয়ালাইজেশন সক্ষম করুন।
  6. এআর-এর একটি বিল্ডিং দেখুন। প্রতিটি বিভক্ত বিল্ডিংয়ের নিজস্ব রঙ রয়েছে এবং কেন্দ্রের জ্যামিতির Quality এবং Type এনামগুলি প্রদর্শিত হয়।

স্ট্রিটস্কেপ জ্যামিতি অ্যাপে প্রদর্শিত হয়

4. স্ট্রিটস্কেপ-জ্যামিতি ডেটা সহ একটি হিট-টেস্ট করুন৷

এখন আপনি রাস্তার দৃশ্যের জ্যামিতি দেখতে পাচ্ছেন, আপনি বিল্ডিংটি সাজানোর জন্য একটি হিট-টেস্ট ব্যবহার করতে পারেন। একটি হিট-পরীক্ষা ভার্চুয়াল জ্যামিতি এবং একটি রশ্মির মধ্যে একটি ছেদ খুঁজে পায়৷ আপনি জ্যামিতি খুঁজে পেতে একটি হিট-টেস্ট ব্যবহার করেন যার উপর একজন ব্যবহারকারী ট্যাপ করে।

একটি হিট পরীক্ষা সঞ্চালন

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

  1. StreetscapeCodelabRenderer.kt ফাইলে, নিম্নলিখিত লাইনটি খুঁজুন:
    // TODO: determine the Streetscape Geometry at the center of the viewport
    
  2. এই লাইনের পরে, নিম্নলিখিত কোড যোগ করুন:
    val centerHits = frame.hitTest(centerCoords[0], centerCoords[1])
    val hit = centerHits.firstOrNull {
      val trackable = it.trackable
      trackable is StreetscapeGeometry && trackable.type == StreetscapeGeometry.Type.BUILDING
    } ?: return
    
    এই কোডটি একটি বিল্ডিং যা রাস্তার দৃশ্যের জ্যামিতি খুঁজে পেতে কেন্দ্র স্থানাঙ্ক ব্যবহার করে। আপনি সজ্জা যোগ করতে এই ফলাফল ব্যবহার করুন.

একটি ট্যাপ উপর একটি তারকা সজ্জা যোগ করুন

  1. StreetscapeCodelabRenderer.kt ফাইলে, নিম্নলিখিত লাইনটি খুঁজুন:
    // TODO: Create an anchor for a star, and add it to the starAnchors object.
    
  2. এই লাইনের পরে, নিম্নলিখিত কোড যোগ করুন:
    val transformedPose = ObjectPlacementHelper.createStarPose(hit.hitPose)
    val anchor = hit.trackable.createAnchor(transformedPose)
    starAnchors.add(anchor)
    
    ObjectPlacementHelper ক্লাস হিট পোজ দেখে আপনার তারকা বসানোর জন্য একটি উপযুক্ত অবস্থান নির্ধারণ করে। starAnchors অবজেক্টটি AR ভিউতে তারাকে রেন্ডার করতে ব্যবহৃত হয়।

চেষ্টা করে দেখুন

  1. আপনার অ্যাপটি চালান এবং আপনার এলাকার একটি বিল্ডিং দেখুন।
  2. ভূ-স্থানিক স্থানীয়করণ সম্পূর্ণ হওয়ার পরে, আপনার ক্যামেরাটি বিল্ডিংয়ের দিকে লক্ষ্য করুন এবং স্ক্রিনে আলতো চাপুন। আপনি পর্দার কেন্দ্রে বিল্ডিংটিতে একটি তারকা দেখতে পাবেন।

তারা অ্যাপে স্থাপন করা হয়

5. ছাদ-নোঙ্গর ডেটা ব্যবহার করুন

অবশেষে, আপনি বিল্ডিংয়ের শীর্ষে সজ্জা যোগ করতে ছাদের নোঙ্গর ব্যবহার করেন। ছাদের নোঙ্গরগুলি আপনাকে অক্ষাংশ এবং দ্রাঘিমাংশ সহ বিল্ডিংয়ের শীর্ষে AR অ্যাঙ্কর সংযুক্ত করতে সহায়তা করে। আপনি ব্যবহারকারীর চারপাশের বিল্ডিংগুলিতে বেলুন সংযুক্ত করতে এই অ্যাঙ্করগুলি ব্যবহার করেন।

বেলুন মোডে আচরণ যোগ করুন

প্রকল্পটির দুটি সম্পদ-স্থাপন মোড রয়েছে: সূর্যমুখী মোড যা আপনি ইতিমধ্যে ব্যবহার করেছেন এবং বেলুন মোড৷

বেলুন মোডের জন্য আচরণ প্রোগ্রাম করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. StreetscapeCodelabRenderer.kt ফাইলে, নিম্নলিখিত লাইনটি খুঁজুন:
    // TODO: Create an anchor for a balloon and add it to the balloonAnchors object.
    
  2. আপনার বেলুনের জন্য একটি দুর্দান্ত জায়গা তৈরি করতে হিট পোজটি ব্যবহার করুন:
    val transformedPose = ObjectPlacementHelper.createBalloonPose(frame.camera.pose, hit.hitPose)
    
  3. transformedPose পোজ ভেরিয়েবলটিকে একটি ভূ-স্থানিক ভঙ্গিতে রূপান্তর করুন:
    val earth = session?.earth ?: return
    val geospatialPose = earth.getGeospatialPose(transformedPose)
    
  4. রূপান্তরিত অক্ষাংশ এবং দ্রাঘিমাংশ সহ একটি ছাদ নোঙ্গর তৈরি করুন:
    earth.resolveAnchorOnRooftopAsync(
      geospatialPose.latitude, geospatialPose.longitude,
      0.0,
      transformedPose.qx(), transformedPose.qy(), transformedPose.qz(), transformedPose.qw()
    ) { anchor, state ->
      if (!state.isError) {
        balloonAnchors.add(anchor)
      }
    }
    

চেষ্টা করে দেখুন

  1. আপনার অ্যাপটি চালান এবং আপনার এলাকার একটি বিল্ডিং দেখুন।
  2. ভূ-স্থানিক স্থানীয়করণ সম্পূর্ণ হওয়ার পরে, বেলুন মোডে পরিবর্তন করুন এবং একটি বিল্ডিং আলতো চাপুন। আপনি বিল্ডিংয়ের শীর্ষে একটি বেলুন দেখতে পাচ্ছেন।

ছাদে বেলুন রাখুন

6. উপসংহার

অভিনন্দন! আপনি একটি AR অ্যাপ তৈরি করেছেন যা আপনার এলাকার রাস্তার দৃশ্য জ্যামিতি কল্পনা করে এবং আপনাকে তারা দিয়ে এর পাশ সাজাতে দেয়। আপনার চারপাশের ছাদের উপরে একটি বেলুন যোগ করতে আপনি ছাদের নোঙ্গরগুলিও ব্যবহার করেছেন৷

কোডল্যাব অ্যাপের সম্পূর্ণ ডেমো

আরও জানুন