بهینه‌سازی دارایی‌های محیطی

دستگاه‌های XR واجدشرایط
این راهنمایی به شما کمک می‌کند برای این نوع دستگاه‌های واقعیت گسترده تجربه بسازید.
هدست‌های واقعیت گسترده
عینک واقعیت گسترده سیمی

با شروع نسخه alpha04 از کتابخانه‌های Jetpack XR، به‌روزرسانی‌های مهمی درباره نحوه ارائه دارایی‌های محیط فضایی برای عملکرد بهینه و کیفیت بصری وجود دارد. این تغییرات بر سازگاری تأثیر می‌گذارد و برنامه‌های موجودی را که محیط‌های فضایی تنظیم می‌کنند ملزم به به‌روزرسانی می‌کند.

برای ارائه محیط‌های فضایی، به دو مؤلفه اصلی نیاز دارید:

  • یک فایل glb .یا gltf .برای هندسه محیط (برای مثال، سطح زمین، اشیای نزدیک) و بافت اصلی جعبه آسمان بصری که کاربران می‌بینند.
  • فایل ZIP جداگانه‌ای که حاوی اطلاعات «نورپردازی مبتنی بر تصویر» (IBL) است و از تصویر EXR با دامنه پویای بالا بااستفاده از ابزار cmgen تولید شده است. از فایل ZIP برای محاسبات نورپردازی، مانند بازتاب روی اشیاء، استفاده می‌شود و نه برای بافت بصری خود جعبه آسمان.

چرا این رویکرد؟

این ساختار دارایی به‌روزشده مزایای زیر را ارائه می‌دهد:

  • اندازه فایل کوچک‌تر: درمقایسه با روش‌های قبلی، مثل استفاده از یک فایل اسکای‌باکس HDR با وضوح بالا برای نمایش بصری و اطلاعات نورپردازی، این رویکرد اندازه فایل را کاهش می‌دهد.
  • عملکرد بهبودیافته: جدا کردن بافت بصری جعبه آسمان (ساخته‌شده در glb) از داده‌های IBL (در فایل ZIP) به شما امکان می‌دهد هر مؤلفه را به‌طور مستقل بهینه‌سازی کنید. این امر منجر به پهنای باند خواندن حافظه بافت کمتر و مصرف برق کمتر می‌شود.
  • نورپردازی بهینه‌شده: استفاده از منبع جعبه آسمان با وضوح پایین‌تر به‌طور خاص برای نقشه نورپردازی برای عملکرد مفید است بدون اینکه تأثیر قابل‌توجهی بر نتایج دیداری نورپردازی روی اشیا داشته باشد.

برای کسب اطلاعات بیشتر درباره افزودن «محیط» فضایی در برنامه‌تان، راهنمای ما را درباره افزودن محیط به برنامه ببینید.

بهینه‌سازی glb

فایل glb شما هندسه اطراف کاربر را نشان می‌دهد و شما بافت بصری اسکای‌باکس خود را اضافه می‌کنید. برای هندسه، باید سعی کنید اندازه فایل‌ها را روی ۸۰ مگابایت یا کمتر نگه دارید.

برای انجام این کار، فرصت‌های متعددی وجود دارد تا محیط خود را کارآمدتر کنید و درعین‌حال کیفیت بالا را حفظ کنید. برای مثال، تراکم مش شما باید در نزدیکی کاربر بیشترین مقدار را داشته باشد و می‌توانید تراکم را برای مش‌هایی که از کاربر دورتر هستند کاهش دهید.

  • فاصله دید: فاصله دید برای محیط‌ها در Android XR‏ ۲۰۰ متر از نقطه کاربر است و بافت آسمان‌باکس شما باید از این محدودیت پیروی کند. این کار تجربه بهینه‌ای را ارائه می‌دهد زیرا اختلاف منظر در آن فاصله غیرقابل‌تشخیص می‌شود.
  • قد کاربر: جغرافیا می‌تواند متفاوت باشد، اما کاربر را روی تپه‌ای با ارتفاع حدود ۱٫۵ متر قرار دهید تا از برش خوردن با عناصر میانای کاربری بزرگ‌تر در برنامه‌ها جلوگیری شود.

  • تعداد چندضلعی‌ها: به تعداد چندضلعی‌ها در فایل‌های glb خود حساس باشید، زیرا تعداد چندضلعی‌های بالا می‌تواند منجر به مصرف غیرضروری انرژی شود. هر وصله هندسی نباید از ۱۰٬۰۰۰ رأس فراتر برود.

  • فشرده‌سازی KTX: با اطمینان از اینکه فایل glb شما از mipmaps و بافت‌های ktx2 استفاده می‌کند، عملکرد GPU فایل glb خود را بهینه‌سازی کنید.

آنچه برای بهینه‌سازی «تبلیغات با درج نشان‌واره» نیاز دارید

برنامه کمکی خط فرمان cmgen را بارگیری کنید:

  • می‌توانید جدیدترین نسخه را در مخزن Filament پیدا کنید.
  • فایل .tgz حاوی نسخه ازپیش‌ساخته cmgen را برای پلاتفرمتان پیدا کنید و آن را از حالت فشرده خارج کنید.
  • ابزار ازپیش‌ساخته در فهرست راهنمای bin /فایل tgz .استخراج‌شده قرار دارد.

دارایی‌هایی که باید برای تولید فایل ZIP برای IBL آماده شوند:

  • یک EXR با وضوح پایین که با بافت جعبه آسمان شما مطابقت دارد
    • ورودی بافت جعبه آسمان باید فایل EXR باشد. اگرچه cmgen از قالب‌های دیگر پشتیبانی می‌کند، EXR توصیه می‌شود زیرا اطلاعات دامنه پویای بالایی را ارائه می‌دهد که برای ارائه IBL با کیفیت بالا ضروری است. استفاده از قالب‌های دیگر مثل PNG باعث می‌شود نورپردازی دقت کمتری داشته باشد.
    • تصویر منبع (EXR) باید نسبت ۲:۱ و ابعادی داشته باشد که توان ۲ باشد. از EXR با ابعاد ۱۰۲۴ در ۵۱۲ پیکسل استفاده کنید. توجه: ممکن است به‌نظر برسد که وضوح ۱۰۲۴ × ۵۱۲ خیلی پایین است، اما این وضوح برای عملکرد مفید است. برای IBL، نتایج بصری برای کاربر بسیار شبیه به دارایی‌های با وضوح IBL بسیار بالاتر است.
  • یک png کاملاً سیاه
    • این دارایی باید نسبت ۲:۱ نیز داشته باشد. از اندازه ۵۰ × ۱۰۰ پیکسل استفاده کنید.
    • این به‌عنوان بافت بهینه‌شده‌ای برای همراهی با IBL عمل می‌کند. کاربران این را نخواهند دید، بنابراین تمرکز دارایی را روی بهینه‌سازی برای عملکرد می‌گذاریم.

در زیر مثالی از استفاده از cmgen برای ایجاد فایل ZIP برای IBL نشان داده شده است. در این مثال، از فایل‌های ورودی با نام my_360_skybox_1024_x_512.exr و black_skybox.png برای ایجاد فایل ZIP با نام 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 ..