Tăng phạm vi bằng công nghệ Độ sâu không gian địa lý

Ảnh chính về độ sâu không gian địa lý

API Độ sâu ARCore hiện hỗ trợ Chiều sâu không gian địa lý, giúp tự động tăng phạm vi và tốc độ của API Độ sâu khi bật Streetscape Geometry. Khi ở một vị trí có vùng phủ sóng VPS và bật Hình học cảnh đường phố, các hình ảnh đầu ra từ Depth API bao gồm hình dạng địa hình và hình học của toà nhà được truy xuất trong khu vực cách vị trí hiện tại 65 mét. Dữ liệu độ sâu được truy xuất từ hình học này được hợp nhất với quan sát độ sâu cục bộ và được cập nhật khi người dùng di chuyển đến vị trí mới.

Các lệnh gọi API Độ sâu ARCore hiện cung cấp cả quan sát cục bộ từ máy ảnh cũng như toà nhà và địa hình từ Hình học cảnh đường phố, được hợp nhất thành một hình ảnh có độ sâu duy nhất.

Khả năng tương thích với thiết bị

Độ sâu không gian địa lý có trên tất cả các thiết bị hỗ trợ API Độ sâu. Tính năng này không yêu cầu cảm biến độ sâu phần cứng được hỗ trợ, chẳng hạn như cảm biến thời gian bay (ToF). Tuy nhiên, Depth API sử dụng mọi cảm biến phần cứng được hỗ trợ mà thiết bị có thể có.

Ảnh hưởng đến hiệu suất

Độ sâu không gian địa lý giới thiệu một phép tính nhỏ một lần vào đầu phiên để tích hợp Hình học cảnh đường phố vào phần biểu diễn độ sâu khi được tải xuống lúc đầu, nhưng nếu không thì không làm tăng đáng kể chi phí tính toán độ sâu.

Phạm vi chiều sâu

Nếu không có Độ sâu không gian địa lý, các hình ảnh có độ sâu hình ảnh thường ở khoảng 20-30 mét, với mật độ và độ chính xác của quan sát độ sâu giảm ra ngoài phạm vi đó. Khi bật Độ sâu không gian địa lý, thông thường sẽ thấy các giá trị độ sâu lấy mẫu mật độ đạt mức tối đa 65,535 mét, ngay cả với một lượng nhỏ chuyển động ban đầu.

Trường hợp sử dụng

Bạn có thể dùng ARCore Depth API cho tất cả các trường hợp sử dụng hiện có đã được hỗ trợ. Với Độ sâu không gian địa lý, hình ảnh có độ sâu thu được tại các vị trí có hỗ trợ VPS sẽ được điền sẵn độ sâu tầm xa nhanh hơn trước đây, cho phép các trường hợp sử dụng nhắm mục tiêu độ sâu tầm xa trong môi trường ngoài trời. Một số trường hợp sử dụng bao gồm:

  • Che khuất nội dung ảo và các hiệu ứng hình ảnh khác trên quy mô lớn
  • Điều hướng ngoài trời
  • Đo khoảng cách

Các điểm hạn chế

Chiều sâu không gian địa lý chỉ được hỗ trợ ở những khu vực hỗ trợ bản địa hoá VPS và Hình học cảnh quan đường phố. Ở những khu vực khác, API Độ sâu ARCore sẽ hoạt động như bình thường nếu không có giá trị Không gian địa lý.

Điều kiện tiên quyết

Hãy đảm bảo bạn hiểu rõ các khái niệm cơ bản về AR và cách định cấu hình một phiên ARCore trước khi tiếp tục.

Bật độ sâu không gian địa lý

Trong phiên ARCore mới, hãy kiểm tra xem thiết bị của người dùng có hỗ trợ Chiều sâu và API Không gian địa lý hay không. Không phải thiết bị nào tương thích với ARCore đều hỗ trợ Depth API do các hạn chế về nguồn điện khi xử lý.

Để tiết kiệm tài nguyên, theo mặc định, độ sâu sẽ bị tắt trên ARCore. Bật chế độ độ sâu để ứng dụng của bạn sử dụng API Độ sâu. Ngoài ra, hãy bật chế độ Không gian địa lý và Hình học cảnh đường phố để sử dụng Độ sâu không gian địa lý.

Java

Config config = session.getConfig();

// Check whether the user's device supports the Depth API.
boolean isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC);
boolean isGeospatialSupported =
    session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED);
if (isDepthSupported && isGeospatialSupported) {
  // These three settings are needed to use Geospatial Depth.
  config.setDepthMode(Config.DepthMode.AUTOMATIC);
  config.setGeospatialMode(Config.GeospatialMode.ENABLED);
  config.setStreetscapeGeometryMode(Config.StreetscapeGeometryMode.ENABLED);
}
session.configure(config);

Kotlin

val config = session.config

// Check whether the user's device supports the Depth API.
val isDepthSupported = session.isDepthModeSupported(Config.DepthMode.AUTOMATIC)
val isGeospatialSupported = session.isGeospatialModeSupported(Config.GeospatialMode.ENABLED)
if (isDepthSupported && isGeospatialSupported) {
  // These three settings are needed to use Geospatial Depth.
  config.depthMode = Config.DepthMode.AUTOMATIC
  config.geospatialMode = Config.GeospatialMode.ENABLED
  config.streetscapeGeometryMode = Config.StreetscapeGeometryMode.ENABLED
}
session.configure(config)

Sau khi bật Độ sâu không gian địa lý, bạn có thể truy cập hình ảnh theo độ sâu thông qua các lệnh gọi API hiện có như mô tả trong hướng dẫn chuyên sâu cho nhà phát triển.

Java

// Retrieve the depth image for the current frame, if available.
Image depthImage = null;
try {
  depthImage = frame.acquireDepthImage16Bits();
  // Use the depth image here.
} catch (NotYetAvailableException e) {
  // This 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.
} finally {
  if (depthImage != null) {
    depthImage.close();
  }
}

Kotlin

// Retrieve the depth image for the current frame, if available.
try {
  frame.acquireDepthImage16Bits().use { depthImage ->
    // Use the depth image here.
  }
} catch (e: NotYetAvailableException) {
  // This 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.
}

Bước tiếp theo