Jetpack XR লাইব্রেরির alpha04 রিলিজ থেকে শুরু করে, সর্বোত্তম পারফরম্যান্স এবং ভিজ্যুয়াল কোয়ালিটির জন্য স্পেশিয়াল এনভায়রনমেন্ট অ্যাসেট সরবরাহ করার পদ্ধতিতে গুরুত্বপূর্ণ আপডেট আনা হয়েছে। এই পরিবর্তনগুলোর কারণে কম্প্যাটিবিলিটিতে প্রভাব পড়বে এবং স্পেশিয়াল এনভায়রনমেন্ট সেট করে এমন বিদ্যমান অ্যাপগুলো আপডেট করার প্রয়োজন হবে।
স্থানিক পরিবেশ তৈরি করতে দুটি প্রধান উপাদান প্রয়োজন:
- পরিবেশের জ্যামিতির (যেমন, ভূমি তল, কাছের বস্তুসমূহ) জন্য একটি .glb বা .gltf ফাইল এবং ব্যবহারকারীরা যে প্রধান ভিজ্যুয়াল স্কাইবক্স টেক্সচারটি দেখেন, সেটিও এর অন্তর্ভুক্ত।
- cmgen টুল ব্যবহার করে একটি হাই ডাইনামিক রেঞ্জ EXR ইমেজ থেকে তৈরি করা ইমেজ বেসড লাইটিং (IBL) তথ্য সম্বলিত একটি পৃথক ZIP ফাইল। এই ZIP ফাইলটি বস্তুর প্রতিফলনের মতো লাইটিং গণনার জন্য ব্যবহৃত হয়, ভিজ্যুয়াল স্কাইবক্স টেক্সচারের জন্য নয়।
এই পদ্ধতির কারণ কী?
এই হালনাগাদকৃত সম্পদ কাঠামোটি নিম্নলিখিত সুবিধাগুলো প্রদান করে:
- ফাইলের আকার ছোট হয়: ভিজ্যুয়াল ডিসপ্লে এবং আলোর তথ্য উভয়ের জন্য একটিমাত্র উচ্চ-রেজোলিউশনের HDR স্কাইবক্স ফাইল ব্যবহারের মতো পূর্ববর্তী পদ্ধতিগুলোর তুলনায়, এই পদ্ধতিটি ফাইলের আকার কমিয়ে দেয়।
- উন্নত পারফরম্যান্স: ভিজ্যুয়াল স্কাইবক্স টেক্সচারকে (যা glb-এর মধ্যে তৈরি) IBL ডেটা (যা ZIP ফাইলে থাকে) থেকে আলাদা করার ফলে আপনি প্রতিটি উপাদানকে স্বাধীনভাবে অপ্টিমাইজ করতে পারেন। এর ফলে টেক্সচার মেমরি রিড ব্যান্ডউইথ এবং বিদ্যুৎ খরচ কমে আসে।
- অপ্টিমাইজড লাইটিং: শুধুমাত্র লাইটিং ম্যাপের জন্য কম রেজোলিউশনের স্কাইবক্স রিসোর্স ব্যবহার করা পারফরম্যান্সের জন্য উপকারী, এবং এটি অবজেক্টের উপর লাইটিংয়ের ভিজ্যুয়াল ফলাফলের উপর উল্লেখযোগ্যভাবে প্রভাব ফেলে না।
আপনার অ্যাপে একটি স্থানিক পরিবেশ যোগ করার বিষয়ে আরও জানতে, আমাদের 'আপনার অ্যাপে পরিবেশ যোগ করুন' নির্দেশিকাটি দেখুন।
আপনার জিএলবি অপ্টিমাইজ করুন

আপনার glb ফাইলটি ব্যবহারকারীর চারপাশের জ্যামিতি উপস্থাপন করে এবং এতে আপনি আপনার স্কাইবক্সের ভিজ্যুয়াল টেক্সচার অন্তর্ভুক্ত করেন। আপনার জ্যামিতির জন্য, ফাইলের আকার ৮০ মেগাবাইট বা তার কম রাখার চেষ্টা করা উচিত।
এটি করার জন্য, উচ্চ গুণমান বজায় রেখে আপনার পরিবেশকে আরও কার্যকর করার বেশ কিছু সুযোগ রয়েছে। উদাহরণস্বরূপ, আপনার মেশের ঘনত্ব ব্যবহারকারীর কাছাকাছি সবচেয়ে বেশি হওয়া উচিত এবং ব্যবহারকারী থেকে দূরে থাকা মেশগুলোর ঘনত্ব আপনি কমাতে পারেন।
- দেখার দূরত্ব: অ্যান্ড্রয়েড এক্সআর-এ ব্যবহারকারীর অবস্থান থেকে পরিবেশের দেখার দূরত্ব হলো ২০০ মিটার, এবং আপনার স্কাইবক্স টেক্সচারকে অবশ্যই এই সীমাবদ্ধতা মেনে চলতে হবে। এটি একটি সর্বোত্তম অভিজ্ঞতা প্রদান করে, কারণ এই দূরত্বে প্যারালাক্স প্রায় অদৃশ্য হয়ে যায়।
ব্যবহারকারীর উচ্চতা: ভৌগোলিক অবস্থান ভিন্ন হতে পারে, কিন্তু অ্যাপের বড় UI এলিমেন্টগুলোর সাথে ক্লিপিং এড়াতে ব্যবহারকারীকে প্রায় ১.৫ মিটার উচ্চতার কোনো ঢিবির উপর রাখুন।
পলিকount: আপনার glb ফাইলগুলির পলিকount-এর ব্যাপারে সতর্ক থাকুন, কারণ বেশি পলিকount অপ্রয়োজনীয় বিদ্যুৎ খরচের কারণ হতে পারে। জ্যামিতির প্রতিটি প্যাচে ১০,০০০ ভার্টেক্সের বেশি থাকা উচিত নয়।
KTX কম্প্রেশন: আপনার glb ফাইলে mipmap এবং ktx2 টেক্সচার ব্যবহার করে এর GPU পারফরম্যান্স অপ্টিমাইজ করুন।
আপনার IBL অপ্টিমাইজ করতে যা যা প্রয়োজন হবে
cmgen কমান্ড লাইন ইউটিলিটিটি ডাউনলোড করুন:
- আপনি ফিলামেন্ট রিপোজিটরিতে সর্বশেষ রিলিজটি খুঁজে পেতে পারেন।
- আপনার প্ল্যাটফর্মের জন্য cmgen-এর প্রি-বিল্ট সংস্করণ থাকা .tgz ফাইলটি খুঁজুন এবং এক্সট্র্যাক্ট করুন।
- আগে থেকে তৈরি টুলটি এক্সট্র্যাক্ট করা .tgz ফাইলের /bin ডিরেক্টরির অধীনে রয়েছে।
IBL-এর জন্য ZIP ফাইল তৈরি করতে যে সকল অ্যাসেট প্রস্তুত করতে হবে:
- একটি নিম্ন-রেজোলিউশনের EXR যা আপনার স্কাইবক্স টেক্সচারের সাথে মেলে।
- আপনার স্কাইবক্স টেক্সচার ইনপুট হিসেবে একটি EXR ফাইল থাকা উচিত। যদিও cmgen অন্যান্য ফরম্যাট সমর্থন করে, EXR ফাইল ব্যবহারের পরামর্শ দেওয়া হয়, কারণ এটি উচ্চ ডাইনামিক রেঞ্জের তথ্য সরবরাহ করে, যা উচ্চ মানের IBL প্রদানের জন্য অপরিহার্য। PNG-এর মতো অন্যান্য ফরম্যাট ব্যবহার করলে লাইটিং ততটা নিখুঁত হয় না।
- সোর্স ইমেজ (EXR)-এর অনুপাত ২:১ এবং ডাইমেনশন ২-এর ঘাত হতে হবে। ১০২৪ x ৫১২ পিক্সেলের একটি EXR ব্যবহার করুন। দ্রষ্টব্য: মনে হতে পারে যে ১০২৪ x ৫১২ রেজোলিউশনটি খুব কম, কিন্তু এটি পারফরম্যান্সের জন্য সুবিধাজনক। IBL-এর ক্ষেত্রে, ব্যবহারকারীর জন্য ভিজ্যুয়াল ফলাফল অনেক উচ্চ IBL রেজোলিউশনের অ্যাসেটের মতোই হয়।
- একটি নিরেট কালো পিএনজি
- এই অ্যাসেটটিরও অনুপাত ২:১ হতে হবে। এর সাইজ ১০০ x ৫০ পিক্সেল ব্যবহার করুন।
- এটি IBL-এর পরিপূরক হিসেবে একটি অপ্টিমাইজ করা টেক্সচার। ব্যবহারকারীরা এটি দেখবেন না, তাই আমরা অ্যাসেটটিকে পারফরম্যান্স অপ্টিমাইজ করার উপর মনোযোগ দিই।

নিচে IBL-এর জন্য ZIP ফাইল তৈরি করতে cmgen ব্যবহারের একটি উদাহরণ দেখানো হলো। এই উদাহরণে my_360_skybox_1024_x_512.exr এবং black_skybox.png নামের ইনপুট ফাইলগুলো ব্যবহার করে my_ibl.zip নামের একটি ZIP ফাইল তৈরি করা হয়।
# Produce black cubemaps for the texture of the IBL asset.
./cmgen --format=rgb32f --size=128 --extract=./skybox_ibl ./black_skybox.png
# Produce lighting cubemaps and a Spherical Harmonics from EXR
./cmgen --format=rgb32f --size=128 --deploy=./skybox_ibl --ibl-ld=. --ibl-samples=1024 --extract-blur=0.0 --sh-irradiance --sh-shader --sh-output=./skybox_ibl/sh.txt ./my_360_skybox_1024_x_512.exr
# Copy all of the black cubemaps into the other folder.
cp -rf ./skybox_ibl/black_skybox/* ./skybox_ibl/my_360_skybox_1024_x_512
# Rename the directory to reflect that these are old assets.
mv ./skybox_ibl/black_skybox ./skybox_ibl/black_skybox_old
# Rename the directory to reflect that these are your cubemap assets.
mv ./skybox_ibl/my_360_skybox_1024_x_512 ./skybox_ibl/black_skybox
# Change into the child directory.
cd ./skybox_ibl
# Zip all of the cubemap and the Spherical Harmonics assets together.
zip -q my_ibl.zip black_skybox/*
# Return to the directory you started in.
cd ..