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

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

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

หากต้องการสร้างสภาพแวดล้อมเชิงพื้นที่ คุณต้องมีองค์ประกอบหลัก 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 เมตร จากจุดของผู้ใช้ และพื้นผิว Skybox ควรเป็นไปตามข้อจำกัดนี้ ซึ่งจะช่วยให้ได้รับประสบการณ์การใช้งานที่ดีที่สุดเนื่องจากภาพเหลื่อมจะ มองไม่เห็นในระยะดังกล่าว
  • ความสูงของผู้ใช้: ภูมิศาสตร์อาจแตกต่างกันไป แต่ให้วางตำแหน่งผู้ใช้บนเนินที่สูงประมาณ 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 เนื่องจากมีข้อมูล ช่วงไดนามิกสูงซึ่งมีความสำคัญอย่างยิ่งต่อการให้ 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 ..