Sử dụng Số liệu ước tính ánh sáng với mô hình cảnh quan

API Ánh sáng ước tính phân tích một hình ảnh nhất định để gợi ý cho hình ảnh rời rạc và cung cấp thông tin chi tiết về ánh sáng trong một cảnh nhất định. Sau đó, bạn có thể dùng thông tin này khi kết xuất các đối tượng ảo để chiếu sáng vào trong những điều kiện tương tự như cảnh họ đặt, khiến các đối tượng này trở nên thực tế hơn và cải thiện trải nghiệm sống động cho người dùng.

Khái niệm và chỉ dẫn về ánh sáng

Con người không nhận thức được những dấu hiệu tinh tế về cách các vật thể hoặc vật vật được chiếu sáng trong môi trường của chúng. Khi một đối tượng ảo bị thiếu bóng hoặc có chất liệu sáng bóng không phản chiếu không gian xung quanh, người dùng có thể cảm thấy đối tượng không vừa với một cảnh cụ thể ngay cả khi họ không thể giải thích lý do. Vì vậy, việc kết xuất các đối tượng thực tế tăng cường để khớp với ánh sáng trong một cảnh là rất quan trọng để có được trải nghiệm sống động và chân thực hơn.

Tính năng ước tính ánh sáng thực hiện hầu hết công việc cho bạn bằng cách cung cấp dữ liệu chi tiết, cho phép bạn bắt chước các chỉ dẫn ánh sáng khác nhau khi kết xuất các đối tượng ảo. Những tín hiệu này là bóng, đèn xung quanh, tô bóng, điểm nổi bật của quang phổphản chiếu.

Chúng ta có thể mô tả các dấu hiệu trực quan như sau:

  • Ánh sáng xung quanh. Ánh sáng xung quanh là ánh sáng khuếch tán tổng thể phát ra từ xung quanh, chiếu sáng mọi thứ.

  • Bóng. Bóng thường mang tính định hướng và cho người xem biết nguồn gốc ánh sáng.

  • Làm tối. Tô bóng là cường độ sáng của các vùng khác nhau trong một hình ảnh nhất định. Ví dụ: các phần khác nhau của cùng một đối tượng có thể có nhiều mức độ bóng đổ trong cùng một cảnh tùy thuộc vào góc nhìn của người xem và khoảng cách của đối tượng đó đến nguồn sáng.

  • Điểm nổi bật đáng chú ý. Đây là các bit bề mặt sáng bóng phản chiếu trực tiếp nguồn sáng. Điểm nổi bật về một đối tượng thay đổi liên quan đến vị trí của người xem trong cảnh.

  • Phản chiếu. Ánh sáng phản xạ từ các bề mặt khác nhau tuỳ thuộc vào việc bề mặt có các đặc tính phản chiếu (tức là có tính phản xạ cao) hay khuếch tán (không phản chiếu). Ví dụ: một quả bóng kim loại sẽ có tính đặc thù và phản ánh môi trường, một quả bóng khác được sơn màu xám nhạt sẽ bị khuếch tán. Hầu hết các đối tượng trong thế giới thực đều có sự kết hợp của các thuộc tính này. Chẳng hạn như một quả bóng bowling được xáo trộn hoặc một thẻ tín dụng được sử dụng hợp lý.

    Các bề mặt phản chiếu cũng thu được màu sắc từ môi trường xung quanh. Màu sắc của một đối tượng có thể bị ảnh hưởng trực tiếp bởi màu sắc của môi trường của đối tượng đó. Ví dụ: một quả bóng màu trắng trong căn phòng màu xanh dương sẽ lấy màu xanh dương.

Sử dụng các chế độ Ước tính ánh sáng để nâng cao độ chân thực

API Config.LightEstimationMode có các chế độ ước tính ánh sáng trong môi trường với các mức độ chi tiết và độ chân thực khác nhau.

  • Chế độ HDR về môi trường (ENVIRONMENTAL_HDR). Chế độ này bao gồm một API cho phép chiếu sáng thực tế ước tính cho ánh sáng định hướng, bóng, vùng sáng phản chiếu và phản chiếu.

  • Chế độ Cường độ môi trường xung quanh (AMBIENT_INTENSITY). Chế độ này xác định cường độ pixel trung bình và màu sắc của ánh sáng cho một hình ảnh nhất định. Đây là một chế độ cài đặt thô được thiết kế cho các trường hợp sử dụng mà trong đó ánh sáng chính xác không quan trọng, chẳng hạn như các vật thể có chiếu sáng bắt sáng.

  • DISABLED. Tắt Config.LightEstimationMode nếu ánh sáng khớp với môi trường nhất định không liên quan đến cảnh hoặc đối tượng.

Đang sử dụng chế độ ENVIRONMENTAL_HDR

Chế độ ENVIRONMENTAL_HDR sử dụng công nghệ máy học để phân tích hình ảnh máy ảnh đầu vào và tổng hợp ánh sáng môi trường để kết xuất một đối tượng ảo.

Chế độ này kết hợp ánh sáng định hướng, hài hoà hình cầu xung quanh và một bản đồ hình khối HDR để làm cho các đối tượng ảo giống như chúng thuộc một cảnh cụ thể:

  • Tính năng Ánh sáng định hướng phân tích nguồn sáng rõ ràng của một hình ảnh nhất định. Loại ánh sáng này thêm các điểm sáng phản chiếu vị trí hợp lý và đổ bóng theo hướng nhất quán với các vật thể thực có thể nhìn thấy khác.

  • Điểm hài hòa hình cầu xung quanh thể hiện ánh sáng thực tế về tổng thể ánh sáng xung quanh xuất phát từ mọi hướng trong một cảnh. Trong quá trình kết xuất, thông tin này được dùng để thêm các gợi ý tinh tế giúp làm rõ định nghĩa về đối tượng ảo.

  • Bản đồ hình khối HDR ghi lại ánh sáng môi trường xung quanh đối tượng ảo. Trong quá trình kết xuất, bản đồ hình khối này tạo ra sự phản chiếu từ vật liệu có độ bóng trung bình đến cao.

Hình ảnh sau đây cho thấy ví dụ về đối tượng ảo được đặt trong một cảnh đã bật ENVIRONMENTAL_HDR.

Định cấu hình chế độ ENVIRONMENTAL_HDR cho cảnh Cảnh

Để sử dụng ENVIRONMENTAL_HDR với cảnh Cảnh, hãy mở rộng lớp ARFragment và ghi đè cấu hình như sau:

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setLightEstimationMode(Config.LightEstimationMode.ENVIRONMENTAL_HDR);
  return config;
}

Để xem ví dụ về cách hoạt động của tính năng này, hãy xem mẫu Hệ thống năng lượng mặt trời. (Mẫu này triển khai ENVIRONMENTAL_HDR mà không sử dụng ARFragment.)

Đang sử dụng chế độ AMBIENT_INTENSITY

Chế độ AMBIENT_INTENSITY xác định cường độ pixel trung bình và các giá trị hiệu chỉnh màu cho một hình ảnh nhất định. Đây là một chế độ cài đặt thô được thiết kế cho các trường hợp sử dụng mà trong đó ánh sáng chính xác không quan trọng, chẳng hạn như các đối tượng có ánh sáng bắt sáng.

  • Cường độ pixel ghi lại cường độ pixel trung bình của ánh sáng trong một cảnh, để áp dụng cho toàn bộ đối tượng ảo.

  • Tính năng chỉnh màu vô hướng phát hiện sự cân bằng trắng cho từng khung hình riêng lẻ và cho phép bạn chỉnh màu cho một đối tượng ảo để tích hợp mượt mà hơn vào màu tổng thể của một cảnh.

Định cấu hình chế độ AMBIENT_INTENSITY cho cảnh Cảnh

Để sử dụng AMBIENT_INTENSITY với cảnh Cảnh, hãy mở rộng lớp ARfragment và ghi đè cấu hình như sau:

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setLightEstimationMode(Config.LightEstimationMode.AMBIENT_INTENSITY);
  return config;
}