ทำความเข้าใจสภาพแวดล้อมของผู้ใช้ใน AR Foundation ของ Unity

ดูวิธีใช้ Scene Semantics API ในแอปของคุณเอง

Scene Semantics API ช่วยให้นักพัฒนาซอฟต์แวร์เข้าใจฉากที่อยู่รอบๆ ผู้ใช้ด้วยการให้ข้อมูลเชิงความหมายแบบเรียลไทม์ตามโมเดล ML จากรูปภาพฉากกลางแจ้ง API จะแสดงผลป้ายกำกับสำหรับแต่ละพิกเซลในชุดชั้นเชิงความหมายที่เป็นประโยชน์ เช่น ท้องฟ้า อาคาร ต้นไม้ ถนน ทางเท้า ยานพาหนะ คน และอื่นๆ นอกจากป้ายกำกับพิกเซลแล้ว Scene Semantics API ยังเสนอค่าความเชื่อมั่นสำหรับป้ายกำกับพิกเซลแต่ละป้ายและวิธีง่ายๆ ในการค้นหาความแพร่หลายของป้ายกำกับที่กำหนดในสภาพแวดล้อมกลางแจ้ง

ตัวอย่างรูปภาพอินพุต รูปภาพเชิงอรรถศาสตร์ของป้ายกำกับพิกเซล และรูปภาพความเชื่อมั่นที่เกี่ยวข้องจากซ้ายไปขวา

ตัวอย่างรูปภาพอินพุต รูปภาพความหมาย และรูปภาพความเชื่อมั่นทางความหมาย

ข้อกำหนดเบื้องต้น

ตรวจสอบว่าคุณเข้าใจแนวคิด AR พื้นฐาน และวิธีกําหนดค่าเซสชัน ARCore ก่อนดำเนินการต่อ

เปิดใช้ความหมายของฉาก

ในเซสชัน ARCore ใหม่ ให้ตรวจสอบว่าอุปกรณ์ของผู้ใช้รองรับ Scene Semantics API หรือไม่ อุปกรณ์ที่เข้ากันได้กับ ARCore บางรุ่นอาจไม่รองรับ Scene Semantics API เนื่องจากข้อจำกัดด้านพลังงานในการประมวลผล

เพื่อประหยัดทรัพยากร Scene Semantics จะปิดใช้โดยค่าเริ่มต้นใน ARCore เปิดใช้โหมดการสื่อความหมายเพื่อให้แอปของคุณใช้ Scene Semantics API

ใน ARCoreExtensionsConfig ให้ตั้งค่าโหมดความหมายเป็น "เปิดใช้"

ตั้งค่าโหมดความหมายเป็น "เปิดใช้"

หากใช้ iOS คุณต้องเปิดใช้ความหมายในการตั้งค่าโปรเจ็กต์ด้วย

  1. ไปที่แก้ไข > การตั้งค่าโปรเจ็กต์ > การจัดการปลั๊กอิน XR > ส่วนขยาย ARCore
  2. ในส่วนฟีเจอร์เสริม ให้เลือก Semantics บน iOS

เปิดใช้งานความหมายบน iOS ในฟีเจอร์เสริม

รับรูปภาพเชิงความหมาย

เมื่อเปิดใช้ความหมายฉากแล้ว คุณจะเรียกดูรูปภาพความหมายได้ รูปภาพเชิงความหมายคือรูปภาพขนาด TextureFormat.R8 โดยที่แต่ละพิกเซลจะสอดคล้องกับป้ายกำกับเชิงความหมายที่กำหนดโดย SemanticLabel

ใช้ ArSemanticManager.TryGetSemanticTexture() เพื่อดูรูปภาพเชิงความหมาย

if (semanticManager.TryGetSemanticTexture(out Texture2D semanticImage))
{
    using (semanticImage)
    {
        // Use the semantic image here.
    }
}

เอาต์พุตความหมายรูปภาพควรพร้อมใช้งานหลังจากเริ่มเซสชันประมาณ 1-3 เฟรม ขึ้นอยู่กับอุปกรณ์

รับรูปภาพความเชื่อมั่น

นอกจากรูปภาพเชิงความหมายซึ่งให้ป้ายกำกับสำหรับแต่ละพิกเซลแล้ว API ยังให้รูปภาพความเชื่อมั่นของค่าความเชื่อมั่นของพิกเซลที่เกี่ยวข้องด้วย รูปภาพความเชื่อมั่นคือรูปภาพ TextureFormat.Alpha8 โดยที่แต่ละพิกเซลจะสอดคล้องกับค่าในช่วง [0, 255] ซึ่งตรงกับความน่าจะเป็นที่เชื่อมโยงกับป้ายกำกับเชิงอรรถศาสตร์ของแต่ละพิกเซล

ใช้ ArSemanticManager.TryGetSemanticConfidenceTexture() เพื่อหารูปภาพความเชื่อมั่นทางความหมาย

if (semanticManager.TryGetSemanticConfidenceTexture(out Texture2D semanticConfidenceImage))
{
    using (semanticConfidenceImage)
    {
        // Use the semantic confidence image here.
    }
}

รูปภาพความเชื่อมั่นของเอาต์พุตควรพร้อมใช้งานหลังจากเริ่มเซสชันประมาณ 1-3 เฟรม โดยขึ้นอยู่กับอุปกรณ์

ค้นหาเศษส่วนของพิกเซลสำหรับป้ายกำกับความหมาย

นอกจากนี้ยังค้นหาเศษส่วนของพิกเซลในเฟรมปัจจุบันที่อยู่ในหมวดหมู่เฉพาะได้ เช่น ท้องฟ้า การค้นหานี้จะมีประสิทธิภาพมากกว่าการแสดงผลรูปภาพเชิงความหมายและการค้นหาแบบพิกเซลสำหรับป้ายกำกับเฉพาะ เศษส่วนที่แสดงผลเป็นค่าจำนวนลอยตัวในช่วง [0.0, 1.0]

ใช้ ArSemanticManager.GetSemanticLabelFraction() เพื่อรับเศษส่วนสำหรับป้ายกำกับที่กำหนด

var fraction = semanticManager.GetSemanticLabelFraction(SemanticLabel.SKY);