หลังจากเพิ่มโมเดล 3 มิติลงในแอปแล้ว คุณสามารถปรับปรุงประสบการณ์ด้านภาพ ได้โดยการกำหนดคุณสมบัติของวัสดุที่กำหนดเองและใช้พื้นผิวกับ ออบเจ็กต์ ระบบวัสดุของ Jetpack XR อิงตามข้อกำหนด glTF™ 2.0 และโมเดล 3 มิติจะได้รับการเรนเดอร์โดยใช้ การเรนเดอร์ตามหลักฟิสิกส์ (PBR) ซึ่งเป็นมาตรฐานแบบเปิดที่ดูแลโดย Khronos Group
คุณปรับแอตทริบิวต์ของวัสดุได้ในระหว่างรันไทม์เพื่อเปลี่ยนลักษณะที่ปรากฏของออบเจ็กต์แบบไดนามิกตามอินพุตของผู้ใช้หรือสถานะปัจจุบันของแอป
ดูรายละเอียดเกี่ยวกับพร็อพเพอร์ตี้ที่รองรับแต่ละรายการและพารามิเตอร์ที่ปรับแต่งได้ ใน Android XR ได้ที่เอกสารอ้างอิง โปรดดูอภิธานศัพท์ของ Khronos เพื่อทำความเข้าใจพร็อพเพอร์ตี้เหล่านี้ให้ดียิ่งขึ้น
ปรับแต่งคุณสมบัติของวัสดุของโมเดล 3 มิติ
Material จะกำหนดชุดพร็อพเพอร์ตี้ภาพสำหรับพื้นผิวของออบเจ็กต์และกำหนดวิธีที่พื้นผิวนั้นโต้ตอบกับแสงในฉาก
ใน Jetpack XR จะใช้คลาส KhronosPbrMaterial และ KhronosUnlitMaterial
เพื่อสร้างและจัดการวัสดุเหล่านี้ ตามชื่อที่ระบุ KhronosUnlitMaterials จะไม่สว่างและไม่ได้รับผลกระทบจากแสงในฉาก KhronosPbrMaterial ช่วยให้คุณปรับแต่งพร็อพเพอร์ตี้ได้หลากหลายมากขึ้น เช่น สีเงา ความเป็นโลหะหรือความหยาบของออบเจ็กต์ และการเปล่งแสง

หากต้องการปรับแต่งคุณสมบัติของวัสดุในโมเดล 3 มิติ คุณจะต้องสร้าง
วัสดุใหม่โดยใช้ KhronosPbrMaterial ก่อน คุณจะต้องตั้งค่า
AlphaModeที่เหมาะสมสำหรับลักษณะที่มองเห็นที่คุณต้องการ
val pbrMaterial = KhronosPbrMaterial.create( session = xrSession, alphaMode = AlphaMode.OPAQUE )
จากนั้นกำหนดพร็อพเพอร์ตี้ที่ต้องการแก้ไข ในตัวอย่างนี้ เราใช้
setBaseColorFactor เพื่อเปลี่ยนสีพื้นฐาน วิธีนี้ต้องใช้
Vector4 โดยที่คอมโพเนนต์ x, y, z และ w สอดคล้องกับค่า RGBA
(แดง เขียว น้ำเงิน และอัลฟ่า) ตามลำดับ
pbrMaterial.setBaseColorFactor( Vector4( x = 0.5f, y = 0.0f, z = 0.5f, w = 0.0f ) )
สร้างพื้นผิวที่กำหนดเองสำหรับโมเดล 3 มิติ
Texture คือชิ้นงานรูปภาพที่คุณใช้กับพื้นผิวของโมเดล 3 มิติ
เพื่อระบุสี รายละเอียด หรือข้อมูลพื้นผิวอื่นๆ ได้ Jetpack XR
Texture API ช่วยให้คุณโหลดข้อมูลรูปภาพ เช่น ไฟล์ PNG จากโฟลเดอร์ /assets/ ของแอปได้แบบไม่พร้อมกัน
เมื่อโหลดเท็กซ์เจอร์ คุณสามารถระบุ TextureSampler ซึ่งควบคุม
วิธีแสดงผลเท็กซ์เจอร์ Sampler จะกำหนดพร็อพเพอร์ตี้การกรอง (เมื่อเท็กซ์เจอร์ปรากฏเล็กหรือใหญ่กว่าขนาดเดิม) และโหมดการตัดขอบ
(สำหรับการจัดการพิกัดนอกช่วง [0, 1] มาตรฐาน)
Texture ออบเจ็กต์เพียงอย่างเดียวเป็นเพียงข้อมูล คุณต้องกำหนดให้กับ Material
เพื่อให้มีเอฟเฟกต์ภาพในโมเดล 3 มิติ

หากต้องการสร้างพื้นผิวที่กำหนดเอง ก่อนอื่นคุณจะต้องบันทึกไฟล์รูปภาพลงในโฟลเดอร์ /assets/ แนวทางปฏิบัติแนะนำคือคุณควรสร้างtextures
ไดเรกทอรีย่อยในโฟลเดอร์นั้นด้วย
หลังจากบันทึกไฟล์ในไดเรกทอรีที่เหมาะสมแล้ว ให้สร้างเท็กซ์เจอร์ด้วย API Texture นอกจากนี้ คุณยังใช้TextureSamplerที่ไม่บังคับได้ที่นี่หากต้องการ
val texture = Texture.create( session = xrSession, path = Path("textures/texture_file.png") )
จากนั้นกําหนดประเภทของพื้นผิวและตั้งค่าพารามิเตอร์ที่เกี่ยวข้อง ในตัวอย่างนี้ เราจะใช้พื้นผิวการบดบังและตั้งค่าความแรง
pbrMaterial.setOcclusionTexture( texture = texture, strength = 1.0f )
ใช้พื้นผิวและเท็กซ์เจอร์กับออบเจ็กต์ 3 มิติ
หากต้องการใช้วัสดุหรือพื้นผิวใหม่ ให้ลบล้างวัสดุที่มีอยู่สำหรับ
โหนดที่เฉพาะเจาะจงในเอนทิตี glTF โดยโทรไปที่ setMaterialOverride ใน GltfModelEntity
gltfModelEntity.setMaterialOverride( material = pbrMaterial, nodeName = "Node Name" )
หากต้องการนำวัสดุที่สร้างขึ้นใหม่นี้ออก ให้เรียกใช้ clearMaterialOverride ในโหนดที่ลบล้างก่อนหน้านี้ใน GltfModelEntity การดำเนินการนี้จะเปลี่ยนโมเดล 3 มิติกลับสู่สถานะเริ่มต้น ดังนี้
gltfModelEntity.clearMaterialOverride( nodeName = "Node Name" )
glTF และโลโก้ glTF เป็นเครื่องหมายการค้าของ Khronos Group Inc.