แอปของคุณสามารถดึงข้อมูลเชิงลึกผ่าน ARCore สำหรับ Jetpack XR เพื่อ ระบุว่าวัตถุจริงอยู่ใกล้อุปกรณ์มากน้อยเพียงใด
สร้างเซสชัน ARCore สำหรับ Jetpack XR
รับข้อมูลท่าทางของศีรษะผ่านเซสชัน ARCore สำหรับ Jetpack XR
ดูทําความเข้าใจวงจรของเซสชันเพื่อรับ
Session
กำหนดค่าเซสชัน
ระบบไม่ได้เปิดใช้การดึงข้อมูลแผนที่แสดงความลึกโดยค่าเริ่มต้นในเซสชัน XR หากต้องการเปิดใช้การดึงข้อมูลแผนที่ความลึก ให้กำหนดค่าเซสชันและตั้งค่า DepthEstimationMode
ดังนี้
val newConfig = session.config.copy( depthEstimation = Config.DepthEstimationMode.SMOOTH_ONLY, ) when (val result = session.configure(newConfig)) { is SessionConfigureSuccess -> TODO(/* Success! */) is SessionConfigureConfigurationNotSupported -> TODO(/* Some combinations of configurations are not valid. Handle this failure case. */) else -> TODO(/* The session could not be configured. See SessionConfigureResult for possible causes. */) }
ค่าของ DepthEstimationMode
ที่พร้อมใช้งานมีดังนี้
DISABLED
: ไม่ได้ระบุข้อมูลเกี่ยวกับความลึกของฉากRAW_ONLY
: เปิดใช้การประมาณความลึกด้วยค่าความลึกดิบและความน่าเชื่อถือSMOOTH_ONLY
: เปิดใช้การประมาณความลึกด้วยค่าความลึกและความน่าเชื่อถือที่ราบรื่นSMOOTH_AND_RAW
: เปิดใช้การประมาณความลึกด้วยค่าความลึกและความเชื่อมั่นทั้งแบบดิบและแบบเรียบ
แผนที่ความลึกดิบให้ค่าประมาณความลึกที่มีความแม่นยำสูงกว่า แต่รูปภาพความลึกดิบอาจไม่มีค่าประมาณความลึกสำหรับพิกเซลทั้งหมดในรูปภาพจากกล้อง ในทางตรงกันข้าม แผนที่แสดงความลึกแบบเรียบจะให้ความลึกโดยประมาณสำหรับทุกพิกเซล แต่ข้อมูลความลึกต่อพิกเซลอาจมีความแม่นยำน้อยกว่าเนื่องจากการปรับให้เรียบและการประมาณค่าความลึก
android.permission.SCENE_UNDERSTANDING_FINE
เรียกข้อมูลความลึก
หากต้องการรับข้อมูลเชิงลึกสำหรับกล้องที่ต้องการ ให้ใช้ DepthMap
val depthMap = DepthMap.left(session) ?: return
อุปกรณ์แต่ละเครื่องมีความสามารถแตกต่างกัน อุปกรณ์ที่มีการกำหนดค่ากล้องสเตอริโอจะแสดงแผนที่ความลึกที่ไม่ใช่ค่า Null สำหรับกล้อง left
และ right
ในทำนองเดียวกัน อุปกรณ์ที่มีกล้องตัวเดียวจะแสดงผลแผนที่ความลึกที่ไม่ใช่ค่าว่างโดยใช้
mono
คำนวณค่าความลึก
คุณสามารถรับค่าความลึกและความเชื่อมั่นจากแผนที่แสดงความลึกที่ได้
val depthMap = DepthMap.left(session) ?: return
เข้าถึงแผนที่ความลึกที่เกี่ยวข้องโดยใช้ smoothDepthMap
หรือ rawDepthMap
ทั้งนี้ขึ้นอยู่กับการตั้งค่าการกำหนดค่าที่ใช้ การวัดในแผนที่เหล่านี้
แสดงเป็นเมตร นอกจากนี้ คุณยังเข้าถึงค่าความเชื่อมั่นได้โดยใช้
smoothConfidenceMap
และ rawConfidenceMap
ค่าเหล่านี้มีตั้งแต่ 0 ถึง 255 โดย 255 หมายถึงความเชื่อมั่นสูงสุด
หากต้องการแสดงผลแมปความลึกเพื่อการแก้ไขข้อบกพร่องหรือการแสดงภาพ โปรดดูส่วนความลึกของแอปทดสอบ ARCore