เพิ่มช่วงของคุณด้วย Geospatial Depth

ฮีโร่เกี่ยวกับความลึกของภูมิสารสนเทศ

ตอนนี้ ARCore Depth API รองรับ Geospatial Depth ซึ่งจะเพิ่มช่วงและความเร็วของ Depth API โดยอัตโนมัติเมื่อเปิด Streetscape Geometry ด้วย เมื่ออยู่ในสถานที่ที่มีการครอบคลุม VPS และเปิดใช้ Streetscape Geometry รูปภาพเอาต์พุตจาก Depth API จะมีภูมิประเทศและเรขาคณิตของสิ่งปลูกสร้างที่ดึงมาจากพื้นที่ดังกล่าวไปจนถึง 65 เมตรจากตำแหน่งปัจจุบัน ข้อมูลความลึกที่ดึงมาจากเรขาคณิตจะรวมเข้ากับการสังเกตความลึกในพื้นที่ และจะอัปเดตเมื่อผู้ใช้ย้ายไปยังตำแหน่งใหม่

ตอนนี้การเรียก ARCore Depth API จะแสดงทั้งการสังเกตการณ์ในพื้นที่จากกล้อง รวมถึงอาคารและภูมิประเทศจาก Streetscape Geometry รวมกันเป็นรูปภาพที่มีความลึกภาพเดียว

ความเข้ากันได้ของอุปกรณ์

Geospatial Depth พร้อมใช้งานในอุปกรณ์ทั้งหมดที่รองรับ Depth API ฟีเจอร์นี้ไม่ต้องใช้เซ็นเซอร์วัดความลึกของฮาร์ดแวร์ที่รองรับ เช่น เซ็นเซอร์ Time of Flight (ToF) อย่างไรก็ตาม Depth API จะใช้เซ็นเซอร์ฮาร์ดแวร์ที่รองรับซึ่งอุปกรณ์อาจมี

ผลกระทบต่อประสิทธิภาพ

Geospatial Depth แนะนำการคำนวณแบบครั้งเดียวเล็กๆ ในช่วงเริ่มต้นเซสชันเพื่อผสานรวม Streetscape Geometry เข้ากับการแสดงความลึกเมื่อดาวน์โหลดครั้งแรก แต่ก็ไม่สามารถวัดค่าการประมวลผลความลึกเพิ่มได้

ช่วงความลึก

หากไม่อยู่ในความลึกของภูมิสารสนเทศ ช่วงที่มีความลึกมักจะอยู่ห่างออกไปประมาณ 20-30 เมตร โดยที่ความหนาแน่นและความแม่นยำของการสังเกตการณ์ความลึกจะลดลงไปนอกช่วงดังกล่าว เมื่อเปิดใช้ความลึกของภูมิสารสนเทศ ค่าความลึกที่สุ่มตัวอย่างแบบหนาแน่นอาจไปถึงจุดสูงสุด 65.535 เมตร แม้จะมีการเคลื่อนที่ครั้งแรกเพียงเล็กน้อยก็ตาม

Use Case

สามารถใช้ ARCore Depth API กับ Use Case ที่มีอยู่ทั้งหมดที่รองรับอยู่แล้ว เมื่อใช้ความลึกของภูมิสารสนเทศ รูปภาพความลึกที่ได้รับจากตำแหน่งที่รองรับ VPS จะได้รับการป้อนข้อมูลความลึกแบบระยะไกลเร็วกว่าเดิม ช่วยให้กรณีการใช้งานที่กำหนดเป้าหมายเป็นความลึกในระยะใกล้ในสภาพแวดล้อมกลางแจ้งได้ กรณีการใช้งานบางส่วนมีดังนี้

  • การบดบังเนื้อหาเสมือนจริงและเอฟเฟกต์ภาพอื่นๆ ในระดับสิ่งปลูกสร้าง
  • การนำทางภายนอก
  • การวัดระยะทาง

ข้อจำกัด

ระบบรองรับความลึกของภูมิสารสนเทศเฉพาะในพื้นที่ที่รองรับการแปล VPS และเรขาคณิตของ Streetscape เท่านั้น ส่วนพื้นที่อื่นๆ ARCore Depth API จะทำงานตามปกติโดยไม่มีค่าภูมิสารสนเทศ

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

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

เปิดใช้ความลึกของภูมิสารสนเทศ

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

ความลึกจะปิดอยู่โดยค่าเริ่มต้นใน ARCore เพื่อประหยัดทรัพยากร เปิดใช้โหมดความลึกเพื่อให้แอปใช้ Depth API รวมถึงเปิดใช้โหมดภูมิสารสนเทศและเรขาคณิต Streetscape เพื่อใช้ความลึกของภูมิสารสนเทศ

int32_t is_depth_supported = 0;
int32_t is_geospatial_supported = 0;

// Check whether the user's device supports the Depth API.
ArSession_isDepthModeSupported(ar_session, AR_DEPTH_MODE_AUTOMATIC,
                               &is_depth_supported);
ArSession_isGeospatialModeSupported(ar_session, AR_GEOSPATIAL_MODE_ENABLED,
                                    &is_geospatial_supported);
ArConfig* ar_config = NULL;
ArConfig_create(ar_session, &ar_config);
if (is_depth_supported && is_geospatial_supported) {
  // These three settings are needed to use Geospatial Depth.
  ArConfig_setDepthMode(ar_session, ar_config, AR_DEPTH_MODE_AUTOMATIC);
  ArConfig_setGeospatialMode(ar_session, ar_config,
                             AR_GEOSPATIAL_MODE_ENABLED);
  ArConfig_setStreetscapeGeometryMode(ar_session, ar_config,
                                      AR_STREETSCAPE_GEOMETRY_MODE_ENABLED);
}
CHECK(ArSession_configure(ar_session, ar_config) == AR_SUCCESS);

ArConfig_destroy(ar_config);

เมื่อเปิดใช้ Geospatial Depth แล้ว คุณจะเข้าถึงรูปภาพความลึกผ่านการเรียก API ที่มีอยู่ได้ตามที่อธิบายไว้ในคู่มือนักพัฒนาซอฟต์แวร์เชิงลึก

// Retrieve the depth image for the current frame, if available.
ArImage* depth_image = NULL;
// If a depth image is available, use it here.
if (ArFrame_acquireDepthImage16Bits(ar_session, ar_frame, &depth_image) !=
    AR_SUCCESS) {
  // No depth image received for this frame.
  // This normally means that depth data is not available yet.
  // Depth data will not be available if there are no tracked
  // feature points. This can happen when there is no motion, or when the
  // camera loses its ability to track objects in the surrounding
  // environment.
  return;
}

สิ่งที่จะเกิดขึ้นหลังจากนี้

  • ดูวิธีใช้ Streetscape Geometry ในประสบการณ์การ Augmented Reality