เพิ่มประสิทธิภาพชิ้นงานสภาพแวดล้อม

อุปกรณ์ XR ที่รองรับ
คำแนะนำนี้จะช่วยคุณสร้างประสบการณ์การใช้งานสำหรับอุปกรณ์ XR ประเภทต่างๆ
ชุดหูฟัง XR
แว่นตา XR แบบใช้สาย

ตั้งแต่ไลบรารี Jetpack XR เวอร์ชัน alpha04 เป็นต้นไป เราได้อัปเดตวิธีที่คุณควรจัดเตรียมชิ้นงานสภาพแวดล้อมเชิงพื้นที่เพื่อประสิทธิภาพและคุณภาพของภาพที่ดีที่สุด การเปลี่ยนแปลงเหล่านี้ส่งผลต่อความเข้ากันได้และต้องมีการอัปเดตแอปที่มีอยู่ซึ่งตั้งค่าสภาพแวดล้อมเชิงพื้นที่

หากต้องการจัดเตรียมสภาพแวดล้อมเชิงพื้นที่ คุณต้องมีองค์ประกอบหลัก 2 อย่าง ได้แก่

  • ไฟล์ .glb หรือ .gltf สำหรับรูปทรงเรขาคณิตของสภาพแวดล้อม (เช่น ระนาบพื้น วัตถุที่อยู่ใกล้เคียง) และพื้นผิวกล่องท้องฟ้าหลักที่ผู้ใช้เห็น
  • ไฟล์ ZIP แยกต่างหากที่มีข้อมูล Image Based Lighting (IBL) ซึ่งสร้างจากรูปภาพ EXR แบบ High Dynamic Range โดยใช้เครื่องมือ cmgen ระบบจะใช้ไฟล์ ZIP สำหรับการคำนวณแสง เช่น การสะท้อนบนวัตถุ และไม่ใช่สำหรับพื้นผิวกล่องท้องฟ้าเอง

เหตุผลที่เลือกใช้แนวทางนี้

โครงสร้างชิ้นงานที่อัปเดตนี้มีข้อดีดังนี้

  • ขนาดไฟล์เล็กลง: แนวทางนี้ช่วยลดขนาดไฟล์เมื่อเทียบกับวิธีก่อนหน้า เช่น การใช้ไฟล์กล่องท้องฟ้า HDR ความละเอียดสูงเพียงไฟล์เดียวสำหรับทั้งการแสดงภาพและข้อมูลแสง
  • ประสิทธิภาพดีขึ้น: การแยกพื้นผิวกล่องท้องฟ้า (สร้างไว้ใน glb) ออกจากข้อมูล IBL (ในไฟล์ ZIP) ช่วยให้คุณเพิ่มประสิทธิภาพแต่ละองค์ประกอบได้อย่างอิสระ ซึ่งจะส่งผลให้แบนด์วิดท์การอ่านหน่วยความจำพื้นผิวลดลงและการใช้พลังงานลดลง
  • แสงที่เพิ่มประสิทธิภาพ: การใช้ทรัพยากรกล่องท้องฟ้าความละเอียดต่ำกว่าสำหรับแผนที่แสงโดยเฉพาะเป็นประโยชน์ต่อประสิทธิภาพโดยไม่ส่งผลกระทบต่อผลลัพธ์ภาพของแสงบนวัตถุมากนัก

ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มสภาพแวดล้อมเชิงพื้นที่ในแอปได้ที่คู่มือการเพิ่มสภาพแวดล้อมลงในแอป

เพิ่มประสิทธิภาพ glb

glb แสดงถึงรูปทรงเรขาคณิตรอบตัวผู้ใช้ และคุณรวมพื้นผิวภาพของกล่องท้องฟ้าไว้ด้วย สำหรับรูปทรงเรขาคณิต คุณควรพยายามรักษาระดับขนาดไฟล์ไว้ที่ 80 MB หรือต่ำกว่า

คุณสามารถทำได้โดยใช้โอกาสต่างๆ ในการทำให้สภาพแวดล้อมมีประสิทธิภาพมากขึ้นไปพร้อมๆ กับการรักษาคุณภาพสูง ตัวอย่างเช่น ความหนาแน่นของตาข่ายควรหนาแน่นที่สุดใกล้กับผู้ใช้ และคุณสามารถลดความหนาแน่นของตาข่ายที่อยู่ไกลจากผู้ใช้ได้

  • ระยะการมองเห็น: ระยะการมองเห็นสำหรับสภาพแวดล้อมใน Android XR คือ 200 เมตรจากจุดของผู้ใช้ และพื้นผิวกล่องท้องฟ้าควรเป็นไปตามข้อจำกัดนี้ ซึ่งจะมอบประสบการณ์การใช้งานที่ดีที่สุดเนื่องจากพารัลแลกซ์จะมองไม่เห็นในระยะดังกล่าว
  • ความสูงของผู้ใช้: ภูมิประเทศอาจแตกต่างกันไป แต่ให้วางผู้ใช้ไว้บนเนินสูงประมาณ 1.5 เมตรเพื่อหลีกเลี่ยงการตัดกับองค์ประกอบ UI ที่ใหญ่ขึ้นในแอป

  • จำนวนโพลี: โปรดคำนึงถึงจำนวนโพลีในไฟล์ glb เนื่องจากจำนวนโพลีที่สูงอาจทำให้ใช้พลังงานโดยไม่จำเป็น รูปทรงเรขาคณิตแต่ละส่วนไม่ควรมีจุดยอดเกิน 10,000 จุด

  • การบีบอัด KTX: เพิ่มประสิทธิภาพ GPU ของไฟล์ glb โดยตรวจสอบว่า glb ใช้ mipmap และพื้นผิว ktx2

สิ่งที่คุณต้องใช้เพื่อเพิ่มประสิทธิภาพ IBL

ดาวน์โหลดเครื่องมือบรรทัดคำสั่ง cmgen

  • คุณดูรุ่นล่าสุดได้ใน ที่เก็บ Filament
  • ค้นหาไฟล์ .tgz ที่มี cmgen เวอร์ชันที่สร้างไว้ล่วงหน้าสำหรับแพลตฟอร์มของคุณ แล้วแตกไฟล์
  • เครื่องมือที่สร้างไว้ล่วงหน้าจะอยู่ในไดเรกทอรี /bin ของไฟล์ .tgz ที่แตกไฟล์แล้ว

ชิ้นงานที่ต้องเตรียมเพื่อสร้างไฟล์ ZIP สำหรับ IBL

  • EXR ความละเอียดต่ำที่ตรงกับพื้นผิวกล่องท้องฟ้า
    • อินพุตพื้นผิวกล่องท้องฟ้าควรเป็นไฟล์ EXR แม้ว่า cmgen จะรองรับรูปแบบอื่นๆ แต่เราขอแนะนำให้ใช้ EXR เนื่องจากมีข้อมูล High Dynamic Range ซึ่งมีความสำคัญต่อการจัดเตรียม IBL คุณภาพสูง การใช้รูปแบบอื่นๆ เช่น PNG จะทำให้แสงมีความแม่นยำน้อยลง
    • รูปภาพต้นฉบับ (EXR) ต้องมีอัตราส่วน 2:1 และขนาดที่เป็นเลขยกกำลังของ 2 ใช้ EXR ขนาด 1024 x 512 พิกเซล หมายเหตุ: 1024 x 512 อาจดูเหมือนความละเอียดต่ำเกินไป แต่ความละเอียดนี้เป็นประโยชน์ต่อประสิทธิภาพ สำหรับ IBL ผลลัพธ์ภาพที่ผู้ใช้เห็นจะคล้ายกับชิ้นงาน IBL ความละเอียดสูงกว่ามาก
  • PNG สีดำทึบ
    • ชิ้นงานนี้ต้องมีอัตราส่วน 2:1 ด้วย ใช้ขนาด 100 x 50 พิกเซล
    • ชิ้นงานนี้ทำหน้าที่เป็นพื้นผิวที่เพิ่มประสิทธิภาพเพื่อใช้ร่วมกับ 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 ..