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

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

ดูตัวอย่าง

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

ตั้งค่า Geospatial API

ในการใช้ Streetscape Geometry คุณจะต้องตั้งค่า Geospatial API ในโปรเจ็กต์ของคุณ โปรดทำตามวิธีการในการเปิดใช้ Geospatial API เพื่อตั้งค่า Geospatial API

เปิดใช้ Streetscape Geometry

API ทางภูมิศาสตร์จะรับข้อมูลเรขาคณิตของ Streetscape เมื่อตั้งค่า 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 วิธีดังนี้

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

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

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