ใช้อาคารและภูมิประเทศรอบตัวคุณใน Android SDK (Kotlin/Java)

Streetscape Geometry API เป็นเรขาคณิตของภูมิประเทศ อาคาร หรือโครงสร้างอื่นๆ ในฉาก เรขาคณิตนั้นสามารถใช้สำหรับการซ้อนทับ แสดงผล หรือวางเนื้อหา AR ผ่าน API การทดสอบ Hit ข้อมูลเรขาคณิตใน Streetscape ได้มาจากภาพ Google Street View

ดูตัวอย่าง

แอปตัวอย่าง geospatial_java แสดงวิธีรับและแสดงผล Streetscape Geometries

ตั้งค่า Geospatial API

หากต้องการใช้ Streetscape Geometry คุณจะต้องตั้งค่า Geospatial API ในโครงการ ทำตามคำแนะนำในการเปิดใช้ Geospatial API เพื่อตั้งค่า Geospatial API

เปิดใช้เรขาคณิตใน Streetscape

Geospatial API รับข้อมูล Streetscape Geometry เมื่อตั้งค่า GeospatialMode เป็น GeospatialMode.ENABLED และ StreetscapeGeometryMode เป็น StreetscapeGeometryMode.ENABLED

Java

Config config = session.getConfig();
// Streetscape Geometry requires the Geospatial API to be enabled.
config.setGeospatialMode(Config.GeospatialMode.ENABLED);
// Enable Streetscape Geometry.
config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
session.configure(config);

Kotlin

session.configure(
  session.config.apply {
    // Streetscape Geometry requires the Geospatial API to be enabled.
    geospatialMode = Config.GeospatialMode.ENABLED
    // Enable Streetscape Geometry.
    streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
  }
)

รับเรขาคณิต Streetscape ในเซสชัน ARCore

ใช้ Session.getAllTrackables() และใช้ StreetscapeGeometry.class เพื่อกรองผลลัพธ์

Java

session.getAllTrackables(StreetscapeGeometry.class);

Kotlin

session.getAllTrackables(StreetscapeGeometry::class.java)

ทำความเข้าใจเกี่ยวกับ StreetscapeGeometry

StreetscapeGeometry มีข้อมูลเกี่ยวกับอาคาร ดังนี้

อาคาร LOD 1

StreetscapeGeometry.Quality.BUILDING_LOD_1 ประกอบด้วยรอยเท้าสิ่งปลูกสร้างที่ยื่นขึ้นไปยังแนวราบด้านบน ความสูงของอาคารอาจไม่ถูกต้อง

อาคาร LOD 2

StreetscapeGeometry.Quality.BUILDING_LOD_2 จะมีรูปทรงเรขาคณิตที่มีความแม่นยำสูงกว่า ผนังและหลังคาแบบตาข่ายจะตรงกับรูปทรงของอาคารมากขึ้น ส่วนฟีเจอร์ขนาดเล็กกว่า เช่น ปล่องไฟหรือช่องระบายอากาศบนหลังคา อาจยังโผล่ออกมานอกตาข่าย

ทำความเข้าใจเกี่ยวกับ Mesh

Mesh คือตารางรูปหลายเหลี่ยมแสดงการสร้างพื้นผิวของเรขาคณิตใน Streetscape Mesh แต่ละรายการจะมีบัฟเฟอร์จุดยอดและบัฟเฟอร์ดัชนีดังนี้

แนบเนื้อหา AR ไปยัง StreetscapeGeometry

การแนบเนื้อหา AR กับ Streetscape Geometry ทำได้ 2 วิธีดังนี้

  • เปิดใช้ Geospatial Depth และใช้ Depth Hit-test ซึ่งเป็นวิธีที่แนะนำซึ่งทำได้ง่ายกว่า
  • ใช้ Trackable.createAnchor() เพื่อสร้างแท็ก Anchor ในท่าที่กำหนดไว้และแนบไว้กับ StreetscapeGeometry โฆษณา Anchor นี้จะรับช่วงสถานะการติดตามจาก StreetscapeGeometry ระดับบนสุด

ทำการทดสอบ Hit กับ StreetscapeGeometry

สามารถใช้ Frame.hitTest() เพื่อทดสอบ Hit กับเรขาคณิตของ Streetscape ได้ หากพบทางแยก HitResult จะมีข้อมูลท่าทางเกี่ยวกับตำแหน่งของ Hit รวมถึงการอ้างอิง StreetscapeGeometry ที่ชนอยู่ คุณสามารถส่งเรขาคณิตของ Streetscape นี้ไปยัง Trackable.createAnchor() เพื่อสร้าง Anchor ที่แนบกับภาพได้

Java

for (HitResult hit : frame.hitTest(singleTapEvent)) {
  if (hit.getTrackable() instanceof StreetscapeGeometry) {
    Pose hitPose = hit.getHitPose();
    hit.getTrackable().createAnchor(hitPose);
  }
}

Kotlin

for (hit in frame.hitTest(singleTapEvent)) {
  if (hit.trackable is StreetscapeGeometry) {
    val hitPose = hit.hitPose
    hit.trackable.createAnchor(hitPose)
  }
}

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

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