১. সংক্ষিপ্ত বিবরণ
ARCore হলো স্মার্টফোনে অগমেন্টেড রিয়েলিটি অভিজ্ঞতা তৈরির জন্য গুগলের একটি ফ্রেমওয়ার্ক। আপনি ক্রস-প্ল্যাটফর্ম এআর অ্যাপ্লিকেশন তৈরি করতে ইউনিটির এআর ফাউন্ডেশন ব্যবহার করতে পারেন।
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আপনি এআর ফাউন্ডেশন ব্যবহার করে একটি সহজ গেম তৈরি করবেন। গেমটির লক্ষ্য হলো আপনার হ্যান্ডহেল্ড ডিভাইস দিয়ে নিয়ন্ত্রণ করা একটি গাড়ির সাহায্যে প্যাকেজ সংগ্রহ করা।
তবে, এটি পুরোপুরি ভার্চুয়াল জগতে ঘটবে না! আপনি ভৌত পরমাণু এবং ডিজিটাল বিট মিশ্রিত করে এমন একটি গেম তৈরি করবেন যা খেলোয়াড়ের চারপাশের পরিবেশকে বুঝতে পারে এবং এর মাধ্যমে এক নতুন ধরনের খেলোয়াড় অভিজ্ঞতা সৃষ্টি করবেন।
এই কোডল্যাবটি শেষে আপনার গেমটি নিম্নলিখিত কাজগুলো করতে সক্ষম হবে:
- বাস্তব জগতের সমতলগুলো শনাক্ত করুন এবং তার উপর একটি খেলার মাঠ আঁকুন।
- ক্যামেরার ভিউ থেকে রশ্মি নিক্ষেপ করুন এবং তলের সাথে সেগুলোর ছেদবিন্দু শনাক্ত করুন।
- আপনার গেমে বাড়তি বাস্তবতা আনতে বাস্তব জগতের আলোর অবস্থার সাথে প্রতিক্রিয়া দেখান।

আপনি যা শিখবেন
- ইউনিটির এআর ফাউন্ডেশন ব্যবহার করে কীভাবে একটি প্রজেক্ট সেট আপ করবেন।
-
ARPlaneManagerব্যবহার করে কীভাবে নতুন প্লেন সাবস্ক্রাইব করবেন - ভার্চুয়াল জ্যামিতির সাথে ছেদবিন্দু খুঁজে বের করতে
Raycastকীভাবে ব্যবহার করবেন - আপনার দৃশ্য আলোকিত করতে
ARLightEstimationDataকীভাবে ব্যবহার করবেন
আপনার যা যা লাগবে
- একটি সমর্থিত ARCore ডিভাইস , যা একটি USB কেবলের মাধ্যমে আপনার ডেভেলপমেন্ট মেশিনের সাথে সংযুক্ত।
- গুগল প্লে সার্ভিসেস ফর এআর ১.২৩ বা তার পরবর্তী সংস্করণ।
- ইউনিটি হাব অথবা ইউনিটি ২০২০ এলটিএস- এর একটি ইনস্টলেশন।
২. আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করুন।
এই ধাপে, আপনি ইউনিটির এআর ফাউন্ডেশন ব্যবহার করে ডেভেলপমেন্টের জন্য আপনার পরিবেশ প্রস্তুত করবেন।
আপনার ডিভাইসটি AR-এর সাথে সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করুন।
অ্যান্ড্রয়েড ডিভাইসে এআর অভিজ্ঞতা এআরকোর (ARCore) দ্বারা চালিত হয়, যা এআরকোর সমর্থিত ডিভাইসগুলিতে উপলব্ধ। নিশ্চিত করুন যে আপনার ডেভেলপমেন্ট ডিভাইসটি এআর-এর সাথে সামঞ্জস্যপূর্ণ। বিকল্পভাবে, আপনি একটি সঠিকভাবে কনফিগার করা এআর-সামঞ্জস্যপূর্ণ অ্যান্ড্রয়েড এমুলেটর ইনস্ট্যান্স ব্যবহার করতে পারেন।
আপনার ডিভাইসে ইউএসবি ডিবাগিং সেটআপ করুন
ডিবাগ অ্যাপ চালানোর জন্য আপনাকে আপনার ডিভাইসে ডেভেলপার অপশন চালু করতে হবে। যদি আপনি এখনও তা না করে থাকেন, তাহলে ডেভেলপার অপশন চালু করা এবং ইউএসবি ডিবাগিং সম্পর্কিত অ্যান্ড্রয়েড ডকুমেন্টেশন দেখুন।
ইউনিটি (2020.3 LTS) ইনস্টল করুন
আপনার ওয়ার্কস্টেশনে ইউনিটি ২০২০ এলটিএস (Unity 2020 LTS ) ইনস্টল করুন। এই কোডল্যাবে, ইউনিটির ২০২০.৩ (এলটিএস) সংস্করণের ইউআই (UI)-এর স্ক্রিনশট দেখানো হয়েছে। ইউনিটির অন্যান্য সংস্করণও কাজ করতে পারে, তবে সেক্ষেত্রে অতিরিক্ত কিছু পদক্ষেপের প্রয়োজন হতে পারে। সেগুলোর চেহারা এখানে দেখানো স্ক্রিনশটগুলোর থেকে ভিন্ন হতে পারে।
একটি নতুন প্রকল্প তৈরি করুন
ইউনিভার্সাল রেন্ডার পাইপলাইন টেমপ্লেট ব্যবহার করে একটি নতুন প্রজেক্ট তৈরি করুন। এটির একটি বর্ণনামূলক নাম ও উপযুক্ত স্থান দিন এবং CREATE চাপুন।

প্রয়োজনীয় ফ্রেমওয়ার্কগুলো ইনস্টল করুন
ইউনিটির এআর ফাউন্ডেশন ইউনিটি প্যাকেজ ম্যানেজারে পাওয়া যাবে।
- Window > Package Manager- এ ক্লিক করে এটি খুলুন।

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

স্টার্টার প্যাকেজটি ইনস্টল করুন
এই কোডল্যাবের জন্য, আমরা একটি স্টার্টার প্যাকেজ দিয়েছি যাতে প্রিফ্যাব এবং স্ক্রিপ্ট রয়েছে। এটি কোডল্যাবের কিছু অংশের কাজ দ্রুত সম্পন্ন করতে সাহায্য করবে, ফলে আপনি এআর ফাউন্ডেশন কীভাবে ব্যবহার করবেন তার উপর মনোযোগ দিতে পারবেন।
- Assets > Import Package > Custom Package... খুলে
starter-package.unitypackageফাইলটি খোলার মাধ্যমে স্টার্টার প্যাকেজটি ইনস্টল করুন। - যে উইন্ডোটি পপ আপ হবে, সেখানে সবকিছু সিলেক্ট করা আছে কিনা তা নিশ্চিত করুন।
- আমদানি করুন ক্লিক করুন।
বিল্ড সেটিংস পরিবর্তন করুন
যেহেতু অ্যাপ্লিকেশনটি অ্যান্ড্রয়েডে চলবে, তাই বিল্ড প্ল্যাটফর্মটি অ্যান্ড্রয়েডে পরিবর্তন করুন:
- ফাইল > বিল্ড সেটিংস খুলুন।
- প্ল্যাটফর্ম প্যানে, অ্যান্ড্রয়েড নির্বাচন করুন।
- ঐচ্ছিকভাবে, আপনার অ্যাপ চলার সময় ডিবাগিং তথ্য ধরে রাখার জন্য ডেভেলপমেন্ট বিল্ড এবং স্ক্রিপ্ট ডিবাগিং সক্রিয় করুন।
- প্ল্যাটফর্ম পরিবর্তন করতে ক্লিক করুন।

প্রজেক্ট সেটিংস পরিবর্তন করুন
স্টার্টআপে এক্সআর সিস্টেমগুলো ইনিশিয়ালাইজ করার জন্য এআর ফাউন্ডেশনকে কনফিগার করতে হবে।
- Edit > Project Settings... খুলুন এবং XR Plug-in Management সেকশনটিতে ক্লিক করুন।
- Android ট্যাবে ARCore সক্রিয় করুন।

- বাম দিকের প্যানেলে, প্লেয়ার সেকশনটিতে ক্লিক করুন।
- অ্যান্ড্রয়েড ট্যাবের অধীনে অন্যান্য সেটিংস- এ, গ্রাফিক্স এপিআই (Graphics APIs) থেকে ভলকান (Vulkan) সরিয়ে দিন।

- ARCore ব্যবহারকারী AR Required অ্যাপগুলির জন্য ন্যূনতম API লেভেল ২৪ প্রয়োজন। নিচে স্ক্রোল করুন এবং Minimum API Level খুঁজুন। ন্যূনতম API লেভেলটি ২৪-এ সেট করুন।

প্রয়োজনীয় দৃশ্য উপাদান যোগ করুন
ইউনিভার্সাল রেন্ডার পাইপলাইন টেমপ্লেটটিতে এমন কিছু গেম অবজেক্ট রয়েছে যা আপনি এই টিউটোরিয়ালে ব্যবহার করবেন না।
-
SampleSceneএর সমস্ত গেম অবজেক্ট মুছে ফেলুন।

- এআর ফাউন্ডেশন অবজেক্ট যোগ করুন। হায়ারার্কি প্যানে ডান-ক্লিক করুন। যোগ করতে এই মেনুটি ব্যবহার করুন:
- এক্সআর > এআর সেশন : এই অবজেক্টটি একটি এআর অভিজ্ঞতার জীবনচক্র নিয়ন্ত্রণ করে।
- XR > AR সেশন অরিজিন : এই অবজেক্টটি AR স্থানাঙ্ককে ইউনিটি ওয়ার্ল্ড স্থানাঙ্কে রূপান্তরিত করে।
- আলো > দিকনির্দেশক আলো : এটি গেমের বস্তুগুলোকে আলোকিত করার জন্য আলোর উৎস প্রদান করে।
আপনার স্তরবিন্যাসটি দেখতে এইরকম হওয়া উচিত:

- হায়ারার্কিতে আপনার তৈরি করা AR সেশন অরিজিনটি এক্সপ্যান্ড করুন এবং AR ক্যামেরা অবজেক্টটি সিলেক্ট করুন। ইন্সপেক্টরে, এর ট্যাগটি পরিবর্তন করে MainCamera করুন।

রেন্ডারিং সেট আপ করুন
এআর ফাউন্ডেশনের সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য ইউনিটির ইউনিভার্সাল রেন্ডার পাইপলাইনে একটি পরিবর্তন প্রয়োজন।
- প্রজেক্ট প্যানে, অ্যাসেটস > সেটিংস- এর মাধ্যমে ফরওয়ার্ডরেন্ডারার অ্যাসেটটি খুঁজুন।

- ForwardRenderer নির্বাচন করুন।
- ইন্সপেক্টর প্যানে, একটি এআর ব্যাকগ্রাউন্ড রেন্ডারার ফিচার যোগ করতে ‘অ্যাড রেন্ডারার ফিচার’ ব্যবহার করুন। এই কম্পোনেন্টটি আপনার সিনে ক্যামেরা ফিড রেন্ডার করবে।

সেটআপ যাচাই করুন
- আপনার ডিভাইসটি প্লাগ ইন করা আছে এবং এডিবি ডিবাগিং চালু আছে কিনা, তা নিশ্চিত করুন।
- ফাইল > বিল্ড অ্যান্ড রান... এ ক্লিক করুন। এটি অ্যাপ্লিকেশনটি আপনার ডিভাইসে আপলোড করবে এবং ইনস্টল হয়ে গেলে তা চালু করবে।
- আপনি আপনার ডিভাইসের স্ক্রিনে ক্যামেরা ফিডটি দেখতে পাবেন।
পরবর্তী ধাপে, আপনি আপনার অ্যাপে বিভিন্ন কার্যকারিতা যোগ করা শুরু করবেন।
৩. বাস্তব জগতে বিমান শনাক্ত করুন
এখন যেহেতু একটি প্রাথমিক দৃশ্য তৈরি করা হয়েছে, আপনি গেমটি তৈরি করা শুরু করতে পারেন। এই ধাপে, আপনি প্লেনগুলি শনাক্ত করবেন এবং সেগুলিকে দৃশ্যে আঁকবেন।
একটি ARPlaneManager কম্পোনেন্ট যোগ করুন
একটি ARPlaneManager ARPlane সমূহ শনাক্ত করে এবং পরিবেশ সম্পর্কে ডিভাইসটির ধারণা পরিবর্তিত হলে গেম অবজেক্ট তৈরি, হালনাগাদ ও অপসারণ করে।
- হায়ারার্কি পেইন ব্যবহার করে একটি খালি
GameObjectতৈরি করুন। - এটির নাম পরিবর্তন করে
Driving Surface Managerরাখুন। প্লেয়ার কোনো একটি প্লেন নির্বাচন না করা পর্যন্ত এই কম্পোনেন্টটি প্লেনগুলো প্রদর্শন করবে। - নতুন গেম অবজেক্টটি নির্বাচন করুন। ইন্সপেক্টর প্যানেলের মধ্যে, একটি এআর প্লেন ম্যানেজার যোগ করতে অ্যাড কম্পোনেন্ট-এ ক্লিক করুন।

-
Plane Prefabফিল্ডটি সেট করেARPlaneManagerকনফিগার করুন:- সিলেক্ট গেমঅবজেক্ট উইন্ডোটি খোলার জন্য
Noneপাশের বাটনটিতে ক্লিক করুন। - অ্যাসেটস ট্যাবটি নির্বাচন করুন এবং ড্রাইভিং সারফেস প্লেন (Driving Surface Plane) অনুসন্ধান করুন।
- সিলেক্ট গেমঅবজেক্ট উইন্ডোটি খোলার জন্য

স্টার্টার প্যাকেজের এই প্রিফ্যাবটি একটি খসখসে মেঝের টেক্সচার প্রদান করে, যা প্লেনের সজ্জা হিসেবে ব্যবহৃত হবে।
-
Detection Modeপরিবর্তন করেHorizontalকরুন। এটিARPlaneManagerশুধুমাত্র হরাইজন্টাল প্লেন সরবরাহ করার জন্য কনফিগার করে, যা গাড়ি চালানোর জন্য আদর্শ।
একটি ARRaycastManager কম্পোনেন্ট যোগ করুন
একটি ARRaycastManager রেকাস্ট কার্যকারিতা প্রদান করে। পরবর্তী ধাপে, আমরা ব্যবহারকারীকে কন্ট্রোলগুলো দেওয়ার জন্য এই অবজেক্টটি ব্যবহার করব।
- হায়ারার্কি প্যানে
Driving Surface Managerনামক অবজেক্টটি নির্বাচিত আছে কিনা তা নিশ্চিত করুন। - ইন্সপেক্টরে, আপনার গেম অবজেক্টে একটি
ARRaycastManagerকম্পোনেন্ট যোগ করতে Add Component-এ ক্লিক করুন।
এই কম্পোনেন্টটির জন্য আর কোনো কনফিগারেশনের প্রয়োজন নেই।
একটি DrivingSurfaceManager কম্পোনেন্ট যোগ করুন
DrivingSurfaceManager হলো স্টার্টার প্যাকেজের একটি সহায়ক স্ক্রিপ্ট, যা একটি ARPlane নির্বাচন করার সুযোগ দেয়। একবার একটি ARPlane নির্বাচন করা হলে, অন্য সব প্লেন লুকানো হয়ে যাবে এবং নতুন প্লেন নির্বাচন করা বন্ধ হয়ে যাবে।
- হায়ারার্কি প্যানে
Driving Surface Managerনামক অবজেক্টটি নির্বাচিত আছে কিনা তা নিশ্চিত করুন। - ইনস্পেক্টরে, আপনার গেম অবজেক্টে একটি
DrivingSurfaceManagerকম্পোনেন্ট যোগ করতে Add Component-এ ক্লিক করুন।
এই কম্পোনেন্টটির জন্য আর কোনো কনফিগারেশনের প্রয়োজন নেই।
অ্যাপটি চালান
- আপনার পরিবর্তনগুলো পরীক্ষা করতে ফাইল > বিল্ড অ্যান্ড রান... এ ক্লিক করুন।
- আপনার ডিভাইসটিকে বাস্তব জগতের কোনো অনুভূমিক তলের দিকে তাক করুন এবং ARCore-এর জগৎ সম্পর্কে ধারণা উন্নত করতে ডিভাইসটিকে চারপাশে ঘোরান।

- যখন ARCore একটি প্লেন শনাক্ত করে, তখন আপনি বাস্তব জগতের পৃষ্ঠতলে একটি ময়লার টেক্সচার দেখতে পাবেন।
ARPlaneManagerপ্রতিটি শনাক্তকৃত প্লেনের জন্য প্রদত্তPlane Prefabইনস্ট্যানশিয়েট করে।Driving Surface Planeপ্রিফ্যাবটিতে একটিARPlaneMeshVisualizerকম্পোনেন্ট থাকে, যা একটি প্রদত্তARPlaneজন্য একটি মেশ তৈরি করে।
পরবর্তী ধাপে, আপনি শনাক্ত করা একটি তলকে খেলার মাঠ হিসেবে ব্যবহার করবেন।
৪. শনাক্তকৃত বিমানগুলোর বিরুদ্ধে একটি হিট টেস্ট সম্পাদন করুন।
পূর্ববর্তী ধাপে, আপনি এমন একটি অ্যাপ্লিকেশন প্রোগ্রাম করেছেন যা প্লেন শনাক্ত করতে পারে। এই প্লেনগুলো আপনার গেমের দৃশ্যে প্রতিফলিত হয়। এখন, আপনি একটি এইমিং রেটিকেল এবং একটি গাড়ি তৈরি করে এই প্লেনগুলোর সাথে ইন্টারঅ্যাক্টিভিটি যোগ করবেন, যা শনাক্ত করা প্লেনটির পৃষ্ঠের উপর দিয়ে চলবে।
একটি লক্ষ্যভেদী রেটিকেল তৈরি করুন
এই অ্যাপটির নিয়ন্ত্রণ পদ্ধতিতে প্লেয়ারকে তার ফোনটি কোনো একটি তলের দিকে তাক করতে হয়। নির্দিষ্ট স্থানটির স্পষ্ট দৃশ্যমান প্রতিক্রিয়া পাওয়ার জন্য, একটি এইমিং রেটিকেল ব্যবহার করা হয়।

এই রেটিকেলটিকে একটি AR প্লেনে "স্থির" করার জন্য, একটি হিট টেস্ট ব্যবহার করুন। হিট টেস্ট হলো এমন একটি কৌশল যা একটি নির্দিষ্ট দিকে রশ্মি নিক্ষেপ করার সময় ছেদবিন্দু গণনা করে। ক্যামেরার ভিউয়ের দিকে একটি ছেদবিন্দু শনাক্ত করতে আপনি একটি হিট টেস্ট ব্যবহার করবেন।

রেটিকেল যোগ করুন
- স্ক্রিনের নিচের দিকে থাকা প্রজেক্ট প্যানে, অ্যাসেটস > স্টার্টার প্যাকেজ- এ যান।
- রেটিকেল প্রিফ্যাবটিকে প্রজেক্টের হায়ারার্কি প্যানে টেনে এনে সিন-এ রাখুন।
- ক্রমবিন্যাস থেকে রেটিকেলটি নির্বাচন করুন।
- ইনস্পেক্টরে, 'অ্যাড কম্পোনেন্ট'- এ ক্লিক করুন। স্টার্টার প্যাকেজ থেকে
ReticleBehaviourস্ক্রিপ্টটি যোগ করুন। এই স্ক্রিপ্টটিতে রেটিকেল নিয়ন্ত্রণের জন্য কিছু বয়লারপ্লেট কোড রয়েছে। -
ReticleBehaviourস্ক্রিপ্টটি আপনার পূর্বে তৈরি করাDriving Surface Managerউপর নির্ভরশীল, তাইDriving Surface Managerচুজারে ক্লিক করে নির্ভরতাটি যোগ করুন। Scene ট্যাবটি নির্বাচন করুন এবংDriving Surface Managerবেছে নিন।

ReticleBehaviour সম্পাদনা করুন
ReticleBehavior স্ক্রিপ্টটি ডিভাইসের ভিউপোর্টের কেন্দ্রে থাকা প্লেনে রেটিকলটিকে স্থাপন করবে।
-
Scriptফিল্ডে ডাবল-ক্লিক করেReticleBehaviour.csস্ক্রিপ্টটি খুলুন। - ক্যামেরার
ViewToScreenPointব্যবহার করে স্ক্রিনের কেন্দ্র নির্ধারণ করুন।Update()মেথডটি সম্পাদনা করে নিম্নলিখিত বিষয়গুলো যোগ করুন:
var screenCenter = Camera.main.ViewportToScreenPoint(new Vector3(0.5f, 0.5f));
- রে-কাস্ট পরিচালনা করতে এই পয়েন্টটি ব্যবহার করুন। নিম্নলিখিতগুলি যোগ করুন:
var hits = new List<ARRaycastHit>();
DrivingSurfaceManager.RaycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinBounds);
hits ভেরিয়েবলটিতে ARRaycastHit গুলো থাকবে, যেগুলো ট্র্যাকেবলের উপর অবস্থিত সেই পয়েন্টগুলোকে বর্ণনা করে যেগুলো ray দ্বারা ছেদ করা হয়েছে।
-
hitsতালিকা কোয়েরি করে আগ্রহের ছেদবিন্দুটি নির্ধারণ করুন।DrivingSurfaceManagerএ থাকা লক করা প্লেনটিকে অগ্রাধিকার দিন, এবং যদি এটি বিদ্যমান না থাকে, তবে প্রথম প্লেন হিটটি ব্যবহার করুন।Update()এর শেষে নিম্নলিখিতটি যোগ করুন:
CurrentPlane = null;
ARRaycastHit? hit = null;
if (hits.Length > 0)
{
// If you don't have a locked plane already...
var lockedPlane = DrivingSurfaceManager.LockedPlane;
hit = lockedPlane == null
// ... use the first hit in `hits`.
? hits[0]
// Otherwise use the locked plane, if it's there.
: hits.SingleOrDefault(x => x.trackableId == lockedPlane.trackableId);
}
- যদি
hitকোনো ফলাফল থাকে, তাহলে এইGameObjectট্রান্সফর্মকে হিট পজিশনে সরিয়ে দিন।
if (hit.HasValue)
{
CurrentPlane = DrivingSurfaceManager.PlaneManager.GetPlane(hit.Value.trackableId);
// Move this reticle to the location of the hit.
transform.position = hit.Value.pose.position;
}
Child.SetActive(CurrentPlane != null);
রেটিকল পরীক্ষা করুন
- আপনার পরিবর্তনগুলো পরীক্ষা করতে ফাইল > বিল্ড অ্যান্ড রান... এ ক্লিক করুন।
- যখন আপনি আপনার ডিভাইসটি একটি বিমানের দিকে তাক করবেন, তখন দেখবেন রেটিকেলটি আপনার ক্যামেরার নড়াচড়া অনুসরণ করছে।

একটি গাড়ি তৈরি করুন
খেলোয়াড় একটি খেলনা গাড়ি নিয়ন্ত্রণ করবে যা রেটিকেলের অবস্থানের দিকে এগিয়ে যাবে। এই গাড়িটির একটি মডেল এবং এর আচরণবিধি স্টার্টার প্যাকেজে দেওয়া আছে।
আপনার দৃশ্যে একটি CarManager যোগ করুন
- হায়ারার্কিতে একটি নতুন খালি
GameObjectতৈরি করুন। - এটির নাম পরিবর্তন করে
Car Spawnerরাখুন। - আপনার তৈরি করা অবজেক্টটি নির্বাচন করুন। হায়ারার্কি প্যানে,
CarManagerকম্পোনেন্টটি যোগ করতে Add Component-এ ক্লিক করুন। - প্রতিটি ফিল্ডের জন্য চুজারে ক্লিক করে
CarManagerএর ডিপেন্ডেন্সিগুলো সেট আপ করুন:- কার প্রিফ্যাব : অ্যাসেটস- এ, কার প্রিফ্যাব নির্বাচন করুন।
- রেটিকল : সিন- এ, রেটিকল প্রিফ্যাব নির্বাচন করুন।
- ড্রাইভিং সারফেস ম্যানেজার : সিন- এ, ড্রাইভিং সারফেস ম্যানেজার নির্বাচন করুন।
এই CarManager বিহেভিয়ারটি রেটিকেলটি যে প্লেনে রয়েছে, সেখানে একটি খেলনা গাড়ি তৈরি করে। আপনি চাইলে, গাড়িটি কীভাবে প্রোগ্রাম করা হয়েছে তা জানতে CarBehaviour স্ক্রিপ্টটি দেখে নিতে পারেন।
টেস্ট ড্রাইভিং
- আপনার পরিবর্তনগুলো পরীক্ষা করতে ফাইল > বিল্ড অ্যান্ড রান-এ ক্লিক করুন।
- যখন আপনি কোনো প্লেনের উপর ট্যাপ করবেন, তখন সেই স্থানে একটি ছোট গাড়ি দেখা যাবে। এই গাড়িটি রেটিকেলটিকে অনুসরণ করবে।
গেমের উপাদান যোগ করুন
এখন যেহেতু প্লেয়ার দৃশ্যের কোনো একটি সত্তাকে নিয়ন্ত্রণ করতে পারে, তাকে গাড়ি চালিয়ে যাওয়ার জন্য একটি গন্তব্য দিন।
- হায়ারার্কিতে একটি নতুন খালি
GameObjectতৈরি করুন। - এটির নাম পরিবর্তন করে
Package Spawnerরাখুন। - আপনার তৈরি করা অবজেক্টটি নির্বাচন করুন। হায়ারার্কি প্যানে, এতে
PackageSpawnerকম্পোনেন্টটি যোগ করতে Add Component-এ ক্লিক করুন। - প্রতিটি ফিল্ডের চুজারে ক্লিক করে
PackageSpawnerএর ডিপেন্ডেন্সিগুলো সেট আপ করুন:- প্যাকেজ প্রিফ্যাব : অ্যাসেটস -এ, প্যাকেজ প্রিফ্যাব নির্বাচন করুন।
- Scene- এ Driving Surface Manager নির্বাচন করুন।
এই PackageSpawner আচরণটি একটি লক করা ARPlane যেকোনো এলোমেলো স্থানে একটি নতুন প্যাকেজ তৈরি করে, যদি সেখানে আগে থেকে কোনো প্যাকেজ না থাকে।
গেমটি পরীক্ষা করুন
- আপনার পরিবর্তনগুলি পরীক্ষা করতে ফাইল > বিল্ড এবং রান-এ ক্লিক করুন। ২, আপনি একটি গাড়ি তৈরি করার পরে, একটি প্যাকেজ তৈরি হবে।
- আপনার গাড়ি চালিয়ে প্যাকেজটির কাছে নিয়ে যান।
- একটি নতুন এলোমেলো স্থানে আবির্ভূত হবে।

৫. আলোকসজ্জার প্রাক্কলন স্থাপন করুন
এখন যেহেতু বেসিক গেমটি তৈরি হয়ে গেছে, আপনার AR সিনে বাস্তবতার ছোঁয়া যোগ করুন। এই ধাপে, আপনি আগত ক্যামেরা ফ্রেমের উপর ভিত্তি করে বাস্তব জগতের আলো শনাক্ত করতে ARCore-এর লাইটিং এস্টিমেশন এপিআই (Lighting Estimation API) ব্যবহার করবেন। এই তথ্যটি আপনার সিনের আলোকে বাস্তব জগতের আলোর সাথে মিলিয়ে নিতে কাজে লাগবে।
লাইটিং অনুমান সক্ষম করুন
- হায়ারার্কিতে , এআর সেশন অরিজিন প্রসারিত করুন এবং এআর ক্যামেরা অবজেক্টটি নির্বাচন করুন।
- ইন্সপেক্টর- এ, এআর ক্যামেরা ম্যানেজার স্ক্রিপ্টটি এক্সপ্যান্ড করুন।
- লাইটিং এস্টিমেশন ফিল্ডটি পরিবর্তন করে ‘Everything’ করুন।

দিকনির্দেশক আলো পরিবর্তন করুন
- হায়ারার্কি- তে, ডিরেকশনাল লাইট অবজেক্টটি নির্বাচন করুন।
- এতে
LightEstimationকম্পোনেন্টটি যোগ করুন। স্টার্টার প্যাকেজের এই কম্পোনেন্টটি লাইটিং পরিবর্তনের জন্য সাবস্ক্রাইব করার কিছু বয়লারপ্লেট কোড প্রদান করে। -
FrameReceived()ফাংশনে যোগ করুন:
ARLightEstimationData lightEstimation = args.lightEstimation;
if (lightEstimation.averageBrightness.HasValue)
Light.intensity = lightEstimation.averageBrightness.Value;
if (lightEstimation.averageColorTemperature.HasValue)
Light.colorTemperature = lightEstimation.averageColorTemperature.Value;
if (lightEstimation.colorCorrection.HasValue)
Light.color = lightEstimation.colorCorrection.Value;
if (lightEstimation.mainLightDirection.HasValue)
Light.transform.rotation = Quaternion.LookRotation(lightEstimation.mainLightDirection.Value);
if (lightEstimation.mainLightColor.HasValue)
Light.color = lightEstimation.mainLightColor.Value;
if (lightEstimation.mainLightIntensityLumens.HasValue)
Light.intensity = lightEstimation.averageMainLightBrightness.Value;
if (lightEstimation.ambientSphericalHarmonics.HasValue)
{
RenderSettings.ambientMode = AmbientMode.Skybox;
RenderSettings.ambientProbe = lightEstimation.ambientSphericalHarmonics.Value;
}
আপনার পরিবর্তনগুলি পরীক্ষা করুন
- আপনার পরিবর্তনগুলো পরীক্ষা করতে ফাইল > বিল্ড অ্যান্ড রান-এ ক্লিক করুন।
- দৃশ্যপটের বস্তুগুলোর দিকে তাকালে আপনি হয়তো লক্ষ্য করবেন যে, পরিবেশের আলোর ওপর নির্ভর করে সেগুলোর রঙ পরিবর্তিত হয়।
- সম্ভব হলে, আপনার আলোর ব্যবস্থা পরিবর্তন করার চেষ্টা করুন। উদাহরণস্বরূপ, আপনি যে ঘরে আছেন সেখানকার বাতিগুলো বন্ধ করে দিন। আপনি দেখবেন যে বস্তুগুলোর আলো বাস্তব জগতের আলোর পরিবর্তনের সাথে মানিয়ে নিচ্ছে।

৬. উপসংহার
অভিনন্দন! আপনি ইউনিটি এআর ফাউন্ডেশন-এর উপর তৈরি এই কোডল্যাবটি শেষ পর্যন্ত সম্পন্ন করেছেন।
আপনি যা যা আলোচনা করেছেন
- ইউনিটির এআর ফাউন্ডেশন এবং ইউনিভার্সাল রেন্ডারিং পাইপলাইন ব্যবহার করে কীভাবে একটি বেসিক প্রজেক্ট সেট আপ করবেন।
-
ARPlaneManagerব্যবহার করে কীভাবে নতুন প্লেন সাবস্ক্রাইব করবেন - ভার্চুয়াল জ্যামিতির সাথে ছেদবিন্দু খুঁজে বের করতে
Raycastকীভাবে ব্যবহার করবেন। - আপনার দৃশ্য আলোকিত করতে
ARLightEstimationDataকীভাবে ব্যবহার করবেন
পরবর্তী পদক্ষেপ
- ইউনিটির এআর ফাউন্ডেশন স্যাম্পলগুলো দেখে নিন।
- এআর ফাউন্ডেশনের ডকুমেন্টেশন ব্রাউজ করুন।
- ইউনিটির এআর ফাউন্ডেশনের জন্য এআরকোর এক্সটেনশন বিষয়ে গুগলের ডকুমেন্টেশন দেখে নিন।
বোনাস অ্যাসাইনমেন্ট
আপনি এখানে যে গেমটি তৈরি করেছেন, সেটিকে যদি আরও প্রসারিত করতে চান, তাহলে এই ধারণাগুলো অনুসরণ করতে পারেন:
- যখন একটি
PackageManagerনতুন প্যাকেজ তৈরি করে, তখন একটিTextMeshProপরিবর্তন করে আপনার গেমে একটি স্কোর কাউন্টার যোগ করুন। - আপনার গেম চলার সময় পারফরম্যান্স ওভারলে সক্রিয় করে পারফরম্যান্স সংক্রান্ত তথ্য দেখে নিন।
- আপনার দৃশ্যে নতুন বস্তু স্থাপন করতে প্রথমে পারসিস্টেন্ট রেকাস্ট ব্যবহার করুন। যখন সেই এলাকায় একটি প্লেন শনাক্ত করা হবে, তখন বস্তুটি সেই প্লেনের সাথে স্ন্যাপ করার জন্য আপডেট হবে।