পরিবেশ সংক্রান্ত অ্যাসেট অপ্টিমাইজ করুন

প্রযোজ্য XR ডিভাইস
এই নির্দেশিকা আপনাকে এই ধরনের XR ডিভাইসের জন্য অভিজ্ঞতা তৈরি করতে সাহায্য করে।
XR হেডসেট
তারযুক্ত XR গ্লাস

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

স্পেশিয়াল এনভায়রনমেন্ট প্রদান করতে, আপনার দুটি প্রধান কম্পোনেন্ট প্রয়োজন:

  • এনভায়রনমেন্টের জিওমেট্রি (যেমন, গ্রাউন্ড প্লেন, আশেপাশের অবজেক্ট) এবং ব্যবহারকারীর দেখা প্রাথমিক ভিজ্যুয়াল স্কাইবক্স টেক্সচারের জন্য .glb বা .gltf ফাইল।
  • একটি আলাদা জিপ ফাইল যাতে ইমেজ বেসড লাইটিং (IBL) সংক্রান্ত তথ্য আছে। এটি cmgen টুল ব্যবহার করে হাই ডাইনামিক রেঞ্জ EXR ইমেজ থেকে তৈরি করা হয়েছে। জিপ ফাইলটি আলো সংক্রান্ত গণনা, যেমন অবজেক্টের উপর প্রতিফলন, ইত্যাদির জন্য ব্যবহার করা হয়, ভিজ্যুয়াল স্কাইবক্স টেক্সচারের জন্য নয়।

এই পদ্ধতি কেন?

এই আপডেট করা অ্যাসেট স্ট্রাকচার এইসব সুবিধা প্রদান করে:

  • ফাইলের সাইজ ছোট করা: আগের পদ্ধতির তুলনায়, যেমন ভিজ্যুয়াল ডিসপ্লে ও লাইটিং সংক্রান্ত তথ্য, উভয়ের জন্যই একটি হাই-রেজোলিউশন HDR স্কাইবক্স ফাইল ব্যবহার করা, এই পদ্ধতিতে ফাইলের সাইজ ছোট করা হয়।
  • উন্নত পারফর্ম্যান্স: IBL ডেটা (জিপ ফাইলে) থেকে ভিজ্যুয়াল স্কাইবক্স টেক্সচার (glb-তে তৈরি) আলাদা করলে, আপনি প্রতিটি কম্পোনেন্ট আলাদাভাবে অপ্টিমাইজ করতে পারবেন। এর ফলে টেক্সচার মেমরি রিড ব্যান্ডউইথ কম হয় এবং বিদ্যুৎ খরচ কম হয়।
  • অপ্টিমাইজ করা লাইটিং: বিশেষ করে লাইটিং ম্যাপের জন্য কম রেজোলিউশনের স্কাইবক্স রিসোর্স ব্যবহার করলে পারফর্ম্যান্সের উপর কোনও প্রভাব পড়ে না এবং অবজেক্টের উপর লাইটিংয়ের ভিজ্যুয়াল ফলাফলও উল্লেখযোগ্যভাবে প্রভাবিত হয় না।

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

আপনার glb অপ্টিমাইজ করুন

আপনার glb ব্যবহারকারীর চারপাশের জ্যামিতি দেখায় এবং আপনি আপনার স্কাইবক্সের ভিজ্যুয়াল টেক্সচার অন্তর্ভুক্ত করেন। আপনার জিওমেট্রির জন্য, ফাইলের সাইজ ৮০ এমবি বা তার কম রাখার চেষ্টা করুন।

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

  • ভিউ ডিস্ট্যান্স: Android XR-এ এনভায়রনমেন্টের জন্য ভিউ ডিস্ট্যান্স হল ব্যবহারকারীর পয়েন্ট থেকে ২০০ মিটার এবং আপনার স্কাইবক্স টেক্সচারকে এই সীমাবদ্ধতা মেনে চলতে হবে। এটি একটি সর্বোত্তম অভিজ্ঞতা প্রদান করে কারণ প্যারালাক্স সেই দূরত্বে অস্পষ্ট হয়ে যায়।
  • ব্যবহারকারীর উচ্চতা: ভৌগোলিক অবস্থান আলাদা হতে পারে, তবে অ্যাপে বড় UI এলিমেন্টের সাথে ক্লিপিং এড়াতে ব্যবহারকারীকে প্রায় ১.৫ মিটার উচ্চতার ঢিবির উপর রাখুন।

  • পলিকান্ট: আপনার glb ফাইলের পলিকান্টের ব্যাপারে সতর্ক থাকুন, কারণ বেশি পলিকান্টের ফলে অপ্রয়োজনীয় বিদ্যুৎ খরচ হতে পারে। জ্যামিতির প্রতিটি প্যাচে ১০,০০০-এর বেশি ভার্টিসেস থাকা চলবে না।

  • KTX কম্প্রেশন: আপনার glb ফাইল মিপম্যাপ ও ktx2 টেক্সচার ব্যবহার করছে কিনা তা নিশ্চিত করে আপনার glb ফাইলের GPU পারফর্ম্যান্স অপ্টিমাইজ করুন।

আপনার IBL অপ্টিমাইজ করার জন্য কী কী প্রয়োজন হবে

cmgen কমান্ড লাইন ইউটিলিটি ডাউনলোড করুন:

  • আপনি Filament রিপোজিটরিতে লেটেস্ট রিলিজ খুঁজে পাবেন।
  • আপনার প্ল্যাটফর্মের জন্য cmgen-এর প্রি-বিল্ট ভার্সন সহ .tgz ফাইলটি খুঁজুন এবং এটি এক্সট্র্যাক্ট করুন।
  • এক্সট্র্যাক্ট করা .tgz ফাইলের /bin ডিরেক্টরিতে প্রি-বিল্ট টুলটি রয়েছে।

IBL-এর জন্য ZIP ফাইল তৈরি করতে যেসব অ্যাসেট রেডি করতে হবে:

  • আপনার স্কাইবক্স টেক্সচারের সাথে ম্যাচ করে এমন কম রেজোলিউশনের EXR
    • আপনার স্কাইবক্স টেক্সচার ইনপুট একটি EXR ফাইল হতে হবে। cmgen অন্যান্য ফর্ম্যাট সাপোর্ট করলেও, EXR ব্যবহার করার সাজেশন দেওয়া হয় কারণ এটি উচ্চ মাত্রার ডায়নামিক ব্যাপ্তি সংক্রান্ত তথ্য প্রদান করে যা খুব ভাল কোয়ালিটির IBL প্রদান করার জন্য অত্যন্ত গুরুত্বপূর্ণ। PNG-এর মতো অন্যান্য ফর্ম্যাট ব্যবহার করলে লাইটিং কম নিখুঁত হয়।
    • সোর্স ছবির (EXR) অনুপাত ২:১ হতে হবে এবং ডাইমেনশন ২-এর পাওয়ার হতে হবে। ১০২৪ x ৫১২ পিক্সেলের EXR ব্যবহার করুন। মনে রাখবেন: ১০২৪ x ৫১২ রেজোলিউশন খুব কম বলে মনে হতে পারে, তবে এটি পারফর্ম্যান্সের জন্য সুবিধাজনক। IBL-এর ক্ষেত্রে, ব্যবহারকারীর জন্য ভিজ্যুয়াল ফলাফল অনেক বেশি IBL রেজোলিউশন অ্যাসেটের মতোই।
  • একটি সলিড ব্ল্যাক png
    • এই অ্যাসেটের অনুপাতও ২:১ হতে হবে। ১০০ x ৫০ পিক্সেল সাইজ ব্যবহার করুন।
    • এটি IBL-এর সাথে ব্যবহার করার জন্য অপ্টিমাইজ করা টেক্সচার হিসেবে কাজ করে। ব্যবহারকারীরা এটি দেখবেন না, তাই আমরা পারফর্ম্যান্সের জন্য অপ্টিমাইজ করার উপর ফোকাস করি।

IBL-এর জন্য জিপ ফাইল তৈরি করতে cmgen ব্যবহার করার একটি উদাহরণ নিচে দেখানো হল। এই উদাহরণে my_360_skybox_1024_x_512.exr এবং black_skybox.png নামের ইনপুট ফাইল ব্যবহার করে my_ibl.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 ..