এআরকোর ব্যবহার করে কীভাবে একটি অগমেন্টেড ইমেজ অ্যাপ্লিকেশন তৈরি করবেন

এই নিবন্ধটি মূলত এখানে প্রকাশিত হয়েছিল।

এই টিউটোরিয়ালে আপনি শিখবেন কীভাবে একটি সাধারণ বিমানের পরিবর্তে অ্যাঙ্করটিকে একটি নির্দিষ্ট দৃশ্য হিসাবে সেট করে রিয়েল ওয়ার্ল্ডে 3 ডি মডেল স্থাপন করা যায়। গুগলের আরকোর আপনাকে এআরकोर দ্বারা স্বীকৃত 2D চিত্রগুলি প্রসারিত করতে এবং তারপরে তাদের উপর 3D মডেল স্থাপনের অনুমতি দেয়।

আপনি কিছু রেফারেন্স চিত্র সরবরাহ করেন এবং এআরকোর ট্র্যাকিং নির্ধারণ করে যে সেই চিত্রগুলি কোথায় শারীরিকভাবে রয়েছে are সংযুক্ত ছবিগুলি ইতিমধ্যে বই, সংবাদপত্র, ম্যাগাজিন ইত্যাদিতে ব্যাপকভাবে ব্যবহৃত হয়

যাইহোক, এই টিউটোরিয়ালটি আবিষ্কার করার আগে, এই টিউটোরিয়ালটির পূর্বশর্ত হিসাবে নিম্নলিখিত নিবন্ধগুলি পড়তে ভুলবেন না:

  • গুগলের আরকোর কী?
  • আরকোরের সাথে একটি বাড়ানো রিয়েলিটি অ্যাপ তৈরি করা হচ্ছে।

আপনি এই দুটি পদক্ষেপটি শেষ করার পরে, আপনার কাছে এআরकोर এবং সিনফোমে পরিভাষা সম্পর্কে প্রাথমিক ধারণা হবে, যেমন: বি। সিন, অ্যাঙ্কর, নোড, ট্রান্সফর্মবলনোড, ইত্যাদি

সংযুক্ত চিত্রগুলি কী কী?

বিকাশকারী নথিগুলির মতে, আপনি এআর অ্যাপ্লিকেশনগুলি তৈরি করতে ARCore এ আগমেন্টযুক্ত চিত্রগুলি ব্যবহার করতে পারেন যা ব্যবহারকারীর পরিবেশে পোস্টার বা পণ্য প্যাকেজিংয়ের মতো 2D চিত্রের প্রতিক্রিয়া জানাতে পারে। এগুলি রেফারেন্স চিত্রগুলির একটি সিরিজ সরবরাহ করে এবং এআরকোর ট্র্যাকিং জানায় যে ক্যামেরা ভিউতে স্বীকৃতি পাওয়ার সাথে সাথে এই চিত্রগুলি একটি এআর সেশনে রয়েছে are

মূলত, অগমেন্টেড ইমেজগুলির সাহায্যে আপনি একটি সাধারণ 2D চিত্রটি একটি অগমেন্টেড চিত্রে পরিণত করতে পারেন যা আপনার অ্যাপ্লিকেশন দ্বারা স্বীকৃত হতে পারে এবং তারপরে এটির উপরে একটি 3D মডেল স্থাপন করার জন্য ব্যবহৃত হয়।

আপনি যদি বাড়ানো ছবি ব্যবহার করতে চান

সংযুক্ত চিত্রগুলি ব্যবহার করার আগে এখানে কিছু সীমাবদ্ধতা বিবেচনা করতে হবে:

  • আপনার অ্যাপ্লিকেশনটিতে, একই সাথে 20 টিরও বেশি চিত্র স্ক্যান করা যাবে না (যেহেতু এআরকোর একসাথে কেবল 20 টি চিত্র ট্র্যাক করতে পারে)।
  • বাস্তব বিশ্বে শারীরিক অংশটি অবশ্যই 6 "x 6" এর চেয়ে বেশি এবং সমতল হতে হবে।
  • আপনি চলমান বস্তুগুলি ট্র্যাক করতে চান না। এআরकोर চলমান ছবিগুলি ট্র্যাক করতে পারে না যদিও চিত্রটি বন্ধ হওয়ার সাথে সাথে এটি ট্র্যাকিং শুরু করতে পারে।
  • এআরकोर রেফারেন্স ইমেজে ফিচার পয়েন্ট ব্যবহার করে এবং 1000 টি চিত্রের জন্য বৈশিষ্ট্য পয়েন্ট তথ্য সংরক্ষণ করতে পারে।

একটি ভাল রেফারেন্স চিত্র নির্বাচন করা

এআরকোরের সাথে সনাক্তকরণযোগ্যতা উন্নত করতে একটি ভাল রেফারেন্স চিত্র চয়ন করার জন্য এখানে কিছু টিপস রয়েছে:

  • সংযুক্ত চিত্রগুলি পিএনজি, জেপিইজি এবং জেপিজি ফর্ম্যাটগুলিকে সমর্থন করে।
  • সনাক্তকরণটি উচ্চতর বিপরীতে পয়েন্টের উপর ভিত্তি করে তৈরি করা হয়েছে যাতে কোনও রঙ বা কালো এবং সাদা রেফারেন্স চিত্র ব্যবহার করা যায় না কেন বর্ণ এবং কালো এবং সাদা উভয় চিত্রই সনাক্ত করা যায়।
  • চিত্রের রেজোলিউশন কমপক্ষে 300 x 300 পিক্সেল হতে হবে।
  • উচ্চ-রেজোলিউশন চিত্রগুলি ব্যবহার করা কার্যকারিতা বাড়ায় না।
  • নিদর্শন এবং পোলকা বিন্দুর মতো পুনরাবৃত্ত বৈশিষ্ট্যযুক্ত চিত্রগুলি এড়ানো উচিত।
  • আপনার রেফারেন্স চিত্রটি কতটা ভাল তা মূল্যায়নের জন্য অর্কোরিমগ সরঞ্জামটি ব্যবহার করুন। কমপক্ষে 75 এর স্কোর প্রস্তাবিত।

আরকোরিমগ সরঞ্জামটি ব্যবহার করতে:

  • এই লিঙ্কটি থেকে অ্যান্ড্রয়েডের জন্য আরকোর এসডিকে ডাউনলোড করুন:
  • জিপ ফাইলের জিপ বিষয়বস্তুগুলি যে কোনও বিন্দুতে বের করুন।
  • নিষ্কাশিত ফোল্ডারে নেভিগেট করুন এবং সরঞ্জামগুলিতে যান -> আরকোরিমগ -> উইন্ডোজ (আপনি যা ব্যবহার করছেন লিনাক্স / ম্যাকোস)
  • এই মুহুর্তে কমান্ড প্রম্পটটি খুলুন।
  • এখন এই আদেশটি লিখুন:
arcoreimg.exe eval-img --input_image_path = dog.png

আপনার ছবির পুরো পথ দিয়ে কুকুর.পিএনজি প্রতিস্থাপন করুন।

অগমেন্টেড ইমেজ অ্যাপ্লিকেশন দিয়ে শুরু করা

এখন আপনি আরকোর এবং দৃশ্যের সাথে পরিচিত হয়ে গেছেন এবং 75+ রেটিং সহ একটি ভাল রেফারেন্স ইমেজটি বেছে নিয়েছেন, এখন অ্যাপ্লিকেশনটির কোডিং শুরু করার সময় এসেছে!

একটি কাস্টম খণ্ড তৈরি করুন

আমরা আমাদের ক্রিয়াকলাপে যুক্ত করার জন্য একটি কাস্টম খণ্ড তৈরি করতে যাচ্ছি। আমরা স্ট্যান্ডার্ড খণ্ডের কয়েকটি বৈশিষ্ট্য পরিবর্তন করতে চলেছি বলে আমাদের একটি কাস্টম খণ্ড প্রয়োজন।

কাস্টমআরফ্রেগমেন্ট নামে একটি শ্রেণি তৈরি করুন এবং এটি আরএফ্রেগমেন্ট থেকে প্রসারিত করুন। কাস্টমআরফ্র্যাগমেন্টের কোড এখানে:

প্যাকেজ com.ayusch.augmentedimages;
আমদানি android.util.Log;
com.google.ar.core.Config আমদানি করুন; আমদানি com.google.ar.core.Session; com.google.ar.sceneform.ux.ArFrament আমদানি করুন;
পাবলিক ক্লাস কাস্টমআরফ্র্যাগমেন্টটি আরফ্রেগমেন্ট প্রসারিত করে {
@ ওভাররাইড সুরক্ষিত কনফিগারেশন getSessionConfigration (অধিবেশন সেশন) {getPlaneDiscoveryController ()। সেটআইস্ট্রাকশন ভিউ (নাল); কনফিগারেশন = নতুন কনফিগারেশন (অধিবেশন); config.setUpdateMode (config.UpdateMode.LATEST_CAMERA_IMAGE); অধিবেশন। কনফিগার (কনফিগার); getArSceneView ()। সেটআপসেশন (সেশন);
রিটার্ন কনফিগারেশন; }
}

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

এর পরে আসুন, LATEST_CAMERA_IMAGE এ সেশনের জন্য আপডেট মোডটি সেট করা যাক। এটি নিশ্চিত করে যে প্রতিবার ক্যামেরার ফ্রেম আপডেট হওয়ার পরে আপনার আপডেট শ্রোতাদের ডাকা হবে। এটি আপডেট পদ্ধতির আচরণটি কনফিগার করতে ব্যবহৃত হয়।

অগমেন্টেড ইমেজ ডাটাবেস সেট আপ করা হচ্ছে

আপনার নির্বাচিত রেফারেন্স চিত্রটি (যা আপনি শারীরিক বিশ্বে চিনতে চান) সম্পদ ফোল্ডারে আটকান। যদি আপনার সম্পদ ফোল্ডারটি বিদ্যমান না থাকে তবে একটি তৈরি করুন। এখন আমরা আমাদের ডাটাবেসে উন্নত চিত্র যুক্ত করতে যাচ্ছি যা আসল বিশ্বে স্বীকৃত হবে।

খণ্ড (দৃশ্য) তৈরি হয়ে গেলে এই ডাটাবেসটি সেট আপ হয়। তারপরে আমরা এই কলটির সাফল্য এবং ব্যর্থতা যাচাই করি এবং সেই অনুসারে প্রোটোকলটি সামঞ্জস্য করি। আপনার কাস্টম টুকরোতে নিম্নলিখিত কোডটি যুক্ত করুন:

যদি (((প্রধান কার্যকলাপ) getActivity ())। setupAugmentedImagesDb (কনফিগারেশন, অধিবেশন)) {লগ.ডি ("সেটআপআগআইজিজিবি," সাফল্য "); } অন্য {লগ.ই ("সেটআপআগআইএমজিডিবি", "ফ্যালিওর সেটআপ ডিবি"); }

এটি কাস্টমআরফ্র্যাগমেন্টের মতো দেখাবে:

প্যাকেজ com.ayusch.augmentedimages;
আমদানি android.util.Log;
com.google.ar.core.Config আমদানি করুন; আমদানি com.google.ar.core.Session; com.google.ar.sceneform.ux.ArFrament আমদানি করুন;
পাবলিক ক্লাস কাস্টমআরফ্র্যাগমেন্টটি আরফ্রেগমেন্ট প্রসারিত করে {
@ ওভাররাইড সুরক্ষিত কনফিগারেশন getSessionConfigration (অধিবেশন সেশন) {getPlaneDiscoveryController ()। সেটআইস্ট্রাকশন ভিউ (নাল); কনফিগারেশন = নতুন কনফিগারেশন (অধিবেশন); config.setUpdateMode (config.UpdateMode.LATEST_CAMERA_IMAGE); অধিবেশন। কনফিগার (কনফিগারেশন); getArSceneView ()। সেটআপসেশন (সেশন);
যদি (((প্রধান কার্যকলাপ) getActivity ())। setupAugmentedImagesDb (কনফিগারেশন, অধিবেশন)) {লগ.ডি ("সেটআপআগআইজিজিবি," সাফল্য "); } অন্য {লগ.ই ("সেটআপআগআইএমজিডিবি", "ফ্যালিওর সেটআপ ডিবি"); }
রিটার্ন কনফিগারেশন; }
}

আমরা শীঘ্রই মেইনএ্যাকটিভিটিতে সেটআপআগমেন্টেড ইমেজসডিবি পদ্ধতি তৈরি করব। আপনি কাস্টমআরফ্র্যাগমেন্ট তৈরির পরে, এটি আমাদের কার্যকলাপ_মিনি.এক্সএমএলে যুক্ত করুন। আপনার ক্রিয়াকলাপ_মাইন.এক্সএমএলের কোড এখানে:


    

লক্ষ্য করুন যে আমরা এই খণ্ডটির নাম কাস্টমআরফ্র্যাগমেন্টে সেট করছি। যোগ করা খণ্ডটি আমাদের কাস্টম খণ্ডটি তা নিশ্চিত করার জন্য এটি প্রয়োজনীয়। এটি নিশ্চিত করে যে অনুমোদন হ্যান্ডলিং এবং সেশনের সূচনাগুলি সম্পাদিত হয়েছে।

অগমেন্টেড ইমেজস ডাটাবেসে একটি চিত্র যুক্ত করা

এখানে আমরা আমাদের ইমেজ ডাটাবেস সেট আপ। বাস্তব বিশ্বে রেফারেন্স চিত্রটি সন্ধান করুন, তারপরে একটি সম্পর্কিত 3D মডেল যুক্ত করুন।

আসুন আমাদের ডাটাবেস সেট আপ করে শুরু করুন। মেইনএ্যাকটিভিটি.জভা ক্লাসে একটি সার্বজনীন ফাংশন সেটআপআগমেন্টেড আইमेজসডিবি তৈরি করুন:

পাবলিক বুলিয়ান সেটআপআগমেন্টেডআইমেজসডিবি (কনফিগার কনফিগারেশন, অধিবেশন সেশন) {অগমেন্টেড ইমেজডেটবেস অগমেন্টড ইমেজডেটাবেস; বিটম্যাপ বিটম্যাপ = লোডআগমেন্টেড ইমেজ (); যদি (বিটম্যাপ == নাল) incor ভুলভাবে ফিরে আসে; }
অগমেন্টেডআইজেড ডেটাবেস = নতুন অগমেন্টেডআইজ্যাড ডাটাবেস (সেশন); অগমেন্টেডআইজ্যাডেট ডাটাবেস.এডিডিএমেজ ("টাইগার", বিটম্যাপ); config.setAugmentedI छविDatabase (augmentedImageDatedia); সত্য প্রত্যাবর্তন; }
প্রাইভেট বিটম্যাপ লোড অগমেন্টেড ইমেজ () {
চেষ্টা করুন (ইনপুট স্ট্রিম = getAssets () open খোলা ("কম্বল.জেপেইগ")) {বিটম্যাপফ্যাক্টরি.ডেকোড স্ট্রিম (হয়); } ধরা (আইওএক্সেপশন ই) {লগ.ই ("ইমেজলয়েড", "আইও এক্সেপশন", ই); }
প্রত্যাবর্তন নাল; }

আমাদের কাছে লোড অগমেন্টেড ইমেজ পদ্ধতি রয়েছে যা অ্যাসেটস ফোল্ডার থেকে চিত্রটি লোড করে এবং একটি বিটম্যাপ দেয়।

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

বাস্তব বিশ্বে রেফারেন্স চিত্রগুলি সনাক্ত করা

এখন আমরা আমাদের বিশ্বব্যাপী রেফারেন্স চিত্রগুলি ক্যাপচার শুরু করব। এটি করার জন্য, আমরা আমাদের দৃশ্যে একটি শ্রোতা যুক্ত করি যা প্রতিবার একটি ফ্রেম তৈরি হওয়ার সময় বলা হয় এবং সেই ফ্রেমটি আমাদের রেফারেন্স চিত্রটি খুঁজতে বিশ্লেষণ করা হয়।

মেইনএকটিভিটি.জভা-এর অনক্রিট পদ্ধতিতে এই লাইনটি যুক্ত করুন:

arFragment.getArSceneView ()। getScene ()। addOnUpdateListener (এটি :: onUpdateFrame);

এখন মেইনএকটিভিটিতে অনপেট ফ্রেম পদ্ধতি যুক্ত করুন:

@RequiresApi (এপিআই = বিল্ড। VERSION_CODES.N) প্রাইভেট শূন্যতা অন আপডেট ফ্রেম (ফ্রেমটাইম ফ্রেমটাইম) {ফ্রেম ফ্রেম = arFragment.getArSceneView ()। গেটআরফ্রেম ();
সংগ্রহ অগমেন্টেডআইমেজস = ফ্রেম.জেটআপডেটেড ট্র্যাকবলস (অগমেন্টেডআইমেজ.ক্লাস); (অগমেন্টেড ইমেজ অগমেন্টেড ইমেজ: অগমেন্টেড ইমেজস) {যদি (অগমেন্টেড আইজ.জেট ট্র্যাকিংস্টেট () == ট্র্যাকিংস্টেট.ট্রে্যাকিং) {যদি (অগমেন্টেড ইমেজ.সেটনেম () সমান ("টাইগার") & অ্যাসিডমেন্টডম্যাগেল) আরগমেন্টএগমেন্টেশনআরগ্রেগেশনএগ্রিজেশন getCenterPose ()), Uri.parse ("মেশ_বেঙ্গলটাইগার.এসএফবি")); shouldAddModel = false; }}}}

প্রথম লাইনে আমরা দৃশ্যটি থেকে ফ্রেমটি পাই। একটি ভিডিওর মাঝখানে একটি ফ্রেম স্ন্যাপশট হিসাবে দেখা যায়। ভিডিওটি কীভাবে কাজ করে সে সম্পর্কে আপনি যদি পরিচিত হন তবে আপনি জানতে পারেন যে এটি স্থির চিত্রগুলির একটি সিরিজ যা খুব দ্রুত ঘোরানো হয়, একটি সিনেমার ছাপ দেয়। আমরা এই চিত্রগুলির মধ্যে একটি বের করি।

আমাদের ফ্রেমটি হওয়ার সাথে সাথে আমরা এটি আমাদের রেফারেন্স ইমেজের জন্য বিশ্লেষণ করি। ফ্রেম.জেটআপটেড ট্র্যাকবেবলস দিয়ে এআরকোরি ট্র্যাক করে এমন সমস্ত উপাদানগুলির একটি তালিকা আমরা বের করি। এটি সমস্ত স্বীকৃত চিত্রের সংগ্রহ। তারপরে আমরা সংগ্রহটি ঘুরে দেখি আমাদের ছবি "টাইগার" ফ্রেমে আছে কিনা check

যখন আমরা কোনও মিল খুঁজে পাই, আমরা স্বীকৃত চিত্রটির উপরে একটি 3D মডেল রাখি।

দ্রষ্টব্য: আমরা কেবলমাত্র একবারে মডেলটি যুক্ত করেছি তা নিশ্চিত করার জন্য আমি shouldAddModel যুক্ত করেছি।

রেফারেন্স ইমেজের উপরে একটি 3D মডেল রাখুন

এখন আমরা আমাদের চিত্রটি আসল বিশ্বে দেখেছি, আমরা এটির সাথে 3D মডেল যুক্ত করতে শুরু করতে পারি। আমরা আমাদের পূর্ববর্তী প্রকল্প থেকে প্লেসওজেক্ট এবং অ্যাড নোডটোসিন পদ্ধতিগুলি অনুলিপি করি এবং সেগুলি এখানে যুক্ত করি।

যদিও আমি এই পদ্ধতিগুলি লাইন দ্বারা লাইন দিয়ে ব্যাখ্যা করেছি, এখানে একটি সংক্ষিপ্তসার রয়েছে:

  • প্লেসবজেক্ট: এই পদ্ধতিটি সরবরাহিত উরি থেকে একটি উপস্থাপনযোগ্য তৈরি করে। একবার রেন্ডারেবলটি তৈরি হয়ে গেলে, এটি অ্যাডনোডটোসিন পদ্ধতিতে প্রেরণ করা হয়, যা নোডের সাথে রেন্ডারেবল যুক্ত করে এবং সেই নোডটিকে দৃশ্যে যোগ করে।
  • অ্যাডনোডটোসিন: এই পদ্ধতিটি প্রাপ্ত অ্যাঙ্কর থেকে একটি অ্যাঙ্করনোড তৈরি করে, অন্য নোড তৈরি করে যেখানে রেন্ডারিং সংযোজন করা হয়, অ্যাঙ্করনোডে এই নোড যুক্ত করে এবং অ্যাঙ্করনোডকে দৃশ্যে যুক্ত করে।

এখানে আমাদের চূড়ান্ত মেইনএকটিভিটি.জভা শ্রেণি রয়েছে:

প্যাকেজ com.ayusch.augmentedimages;
আমদানি android.ographicics.Bitmap; আমদানি অ্যান্ড্রয়েড.গ্রাফিক্স.বিটম্যাপফ্যাক্টরি; আমদানি android.net.Uri; আমদানি android.os.Build; আমদানি android.support.annotation.RequiresApi; আমদানি android.support.v7.app.appCompatActivity; আমদানি android.os.Bundle; আমদানি android.util.Log; আমদানি android.widget.Toast;
com.google.ar.core.Ancor আমদানি করুন; com.google.ar.core.AgmentedI छवि আমদানি করুন; আমদানি করুন com.google.ar.core.AgmentedI छविDatabase; com.google.ar.core.Config আমদানি করুন; com.google.ar.core.Frame আমদানি করুন; আমদানি com.google.ar.core.Session; আমদানি করুন com.google.ar.core. ট্র্যাকিং স্টেট; com.google.ar.sceneform.AunchorNode আমদানি করুন; com.google.ar.sceneform.FrameTime আমদানি করুন; আমদানি com.google.ar.sceneform.rendering.ModelRenderable; আমদানি com.google.ar.sceneform.rendering.endendable; com.google.ar.sceneform.ux.ArFrament আমদানি করুন; com.google.ar.sceneform.ux.TransformableNode আমদানি করুন;
আমদানি java.io.IOException; আমদানি করুন java.io.InputStream; আমদানি java.util.Cલેક્શન;
পাবলিক ক্লাস মেইনএকটিভিটি অ্যাপকোম্প্যাটএটিভিটি প্রসারিত করে { বুলিয়ান shouldAddModel = সত্য;
@ ওভাররাইড সুরক্ষিত অকার্যকর অনক্রিট (বান্ডেল সেভড ইনস্ট্যান্সস্টেট) {সুপার.অনক্রিয়েট (সেভড ইনস্ট্যান্সস্টেট); সেটকন্টেন্টভিউ (R.layout.activity_main); আরফ্রেগমেন্ট = (কাস্টমআরফ্র্যাগমেন্ট) সাপোর্টফ্রেগমেন্টম্যানেজার () পান। FindFragmentById (R.id.sceneform_fraament); #Fragment.getPlaneDiscoveryController ()। আড়াল (); arFragment.getArSceneView ()। getScene ()। addOnUpdateListener (এটি :: onUpdateFrame); }
@RequiresApi (api = build.VERSION_CODES.N) বেসরকারী শূন্যস্থান অবজেক্ট (আরফ্র্যাগমেন্ট আরফ্রেগমেন্ট, অ্যাঙ্কর অ্যাঙ্কর, উরি ইউরি) {ModelRenderable.builder () .সেটসোর্স (আরফ্রেগমেন্ট.সেট কনটেক্সট (), uri) বিল্ড () মডেল (। > addNodeToScene (আরফ্র্যাগমেন্ট, অ্যাঙ্কর, মডেলরেনডেবল)) ব্যতিক্রমী (নিক্ষেপ -> {টোস্ট.মেকটেক্সট (arFragment.getContext (), "ত্রুটি:" + নিক্ষেপযোগ্য। }
); }
@RequiresApi (এপিআই = বিল্ড। VERSION_CODES.N) প্রাইভেট শূন্যতা অন আপডেট ফ্রেম (ফ্রেমটাইম ফ্রেমটাইম) {ফ্রেম ফ্রেম = arFragment.getArSceneView ()। গেটআরফ্রেম ();
সংগ্রহ অগমেন্টেডআইমেজস = ফ্রেম.জেটআপডেটেড ট্র্যাকবলস (অগমেন্টেডআইমেজ.ক্লাস); (অগমেন্টেড ইমেজ অগমেন্টেড ইমেজ: অগমেন্টেড ইমেজস) {যদি (অগমেন্টেড আইজ.জেট ট্র্যাকিংস্টেট () == ট্র্যাকিংস্টেট.ট্রে্যাকিং) {যদি (অগমেন্টেড ইমেজ.জেটনেম () সমান ("বাঘ") &&AddModel) O স্থানআজমেন্টএগ্রেশনএগ্রিএজমেন্ট getCenterPose ()), Uri.parse ("মেশ_বেঙ্গলটাইগার.এসএফবি")); shouldAddModel = false; }}}}
পাবলিক বুলিয়ান সেটআপআগমেন্টেডআইমেজসডিবি (কনফিগার কনফিগারেশন, অধিবেশন সেশন) {অগমেন্টেড ইমেজডেটবেস অগমেন্টড ইমেজডেটাবেস; বিটম্যাপ বিটম্যাপ = লোডআগমেন্টেড ইমেজ (); যদি (বিটম্যাপ == নাল) incor ভুলভাবে ফিরে আসে; }
অগমেন্টেডআইজেড ডেটাবেস = নতুন অগমেন্টেডআইজ্যাড ডাটাবেস (সেশন); অগমেন্টেডআইজ্যাডেট ডাটাবেস.এডিডিমেজ ("টাইগার", বিটম্যাপ); config.setAugmentedI छविDatabase (augmentedImageDatedia); সত্য প্রত্যাবর্তন; }
বেসরকারী বিটম্যাপ লোডআগমেন্টেড ইমেজ () {চেষ্টা করুন (ইনপুটস্ট্রিমটি = getAssets () open খোলা ("কম্বল.জেপেইগ")) {বিটম্যাপফ্যাক্টরি.ডেকোড স্ট্রিম (রয়েছে); } ধরা (আইওএক্সেপশন ই) {লগ.ই ("ইমেজলয়েড", "আইও এক্সেপশন", ই); }
প্রত্যাবর্তন নাল; }
প্রাইভেট অকার্যকর addNodeToScene (আরফ্রেগমেন্ট আরফ্রেগমেন্ট, অ্যাঙ্কর অ্যাঙ্কর, রেন্ডারেবল রেন্ডারেবল) {অ্যাঙ্করনোড অ্যাঙ্করনোড = নতুন অ্যাঙ্করনোড (অ্যাঙ্কর); ট্রান্সফর্মবলনোড নোড = নতুন ট্রান্সফর্মবলনোড (আরফ্রেগমেন্ট.সেট ট্রান্সফরমেশন সিস্টেম)); নোড.সেটরেন্ডারেবল (রেন্ডারেবল); নোড.সেটপারেন্ট (অ্যাঙ্করনোড); arFragment.getArSceneView ()। getScene ()। অ্যাডচাইল্ড (অ্যাঙ্করনোড); নোড.সलेक्ट (); }
}

এখন আপনার অ্যাপ চালান। আপনি নীচের দেখানো মত একটি পর্দা দেখতে হবে। রেফারেন্স অবজেক্টের উপরে কিছুটা সরান। এআরकोर ফিচার পয়েন্টগুলি স্বীকৃতি দেয় এবং বাস্তব বিশ্বের রেফারেন্স চিত্রটি স্বীকৃত হওয়ার সাথে সাথে আপনার 3 ডি মডেল যুক্ত করে।

[ক্যাপশন আইডি = "সংযুক্তি_1000" সারিবদ্ধ = "এলিজেন্সেন্টার" প্রস্থ = "1280"]

আমি আমার কম্বলটি রেফারেন্স হিসাবে ব্যবহার করেছি

আমরা এখন গুগল এবং সিএনফর্ম এসডিকে থেকে এটিআরকোরের সাহায্যে আমাদের প্রথম অগমেন্টেড ইমেজস অ্যাপ তৈরি করেছি!

আপনি যদি সর্বশেষতম নিবন্ধগুলি নিয়ে আপ টু ডেট থাকতে চান তবে এই পৃষ্ঠার উপরের ডানদিকে ফর্মটিতে আপনার ইমেল ঠিকানাটি প্রবেশ করে সাপ্তাহিক নিউজলেটারটি সাবস্ক্রাইব করুন।

আপনি যা পড়েন তা পছন্দ করেন? এই পোস্টটি ফেসবুক, হোয়াটসঅ্যাপ এবং লিংকডইনে শেয়ার করতে ভুলবেন না।

আপনি আমাকে লিঙ্কডইন, কোওড়া, টুইটার এবং ইনস্টাগ্রামে অনুসরণ করতে পারেন যেখানে আমি মোবাইল বিকাশ, বিশেষত অ্যান্ড্রয়েড এবং ফ্লটার সম্পর্কে প্রশ্নগুলির উত্তর দিই।