Làm việc với Neo

Dùng neo để làm cho các vật thể ảo dường như nằm cố định trong cảnh thực tế tăng cường.

Tại sao bạn nên dùng quảng cáo cố định cuối màn hình?

Khi hiểu biết về môi trường của ARCore cập nhật trong suốt trải nghiệm thực tế tăng cường, các đối tượng ảo có vẻ như trôi dạt khỏi vị trí đặt chúng. Điều này có thể ảnh hưởng đến độ chân thực và trải nghiệm người dùng trong ứng dụng.

Neo đảm bảo rằng các đối tượng dường như ở cùng một vị trí và hướng trong không gian, giúp bạn duy trì ảo giác về các đối tượng ảo đặt trong thế giới thực.

Cách hoạt động của quảng cáo cố định cuối màn hình

Nếu mới sử dụng neo, bạn nên xem lại không gian và các tư thế thế giới.

  • Không gian thế giới

    • Không gian toạ độ nơi đặt máy ảnh và đối tượng
    • Vị trí của máy ảnh và đối tượng được cập nhật trong không gian thế giới từ khung này đến khung hình
  • Tư thế

    • Biểu thị vị trí và hướng của một đối tượng trong không gian thế giới
    • Còn được gọi là biến đổi trong iOS

Khi tạo neo, bạn sử dụng tư thế mô tả một vị trí và hướng tương ứng với ước tính không gian thế giới cho khung hiện tại.

Bạn đính kèm một hoặc nhiều đối tượng vào liên kết này. Neo và các đối tượng đính kèm với nó có vẻ như vẫn tồn tại ở vị trí bất thường. Khi tư thế neo thích ứng với sự cập nhật không gian thế giới trong mỗi khung hình, nên neo sẽ cập nhật tư thế của các đối tượng tương ứng.

Bạn có thể đính kèm nhiều đối tượng vào cùng một điểm neo để đảm bảo rằng các đối tượng này duy trì vị trí và hướng tương đối, ngay cả khi tư thế của neo điều chỉnh.

Dùng neo trong cảnh

Để dùng thẻ liên kết trong cảnh, mã của bạn phải:

  • Tạo các neo trong bối cảnh của một Trackable (có thể theo dõi) (chẳng hạn như một Mặt phẳng) hoặc Phiên ARCore.
  • Đính kèm một hoặc nhiều đối tượng vào liên kết.

Neo có thể hỗ trợ nhiều loại hành vi vị trí trong các đối tượng của cảnh.

Việc xác định ngữ cảnh neo và số lượng neo cần thiết cho các đối tượng của cảnh sẽ phụ thuộc vào hành vi vị trí mà cảnh AR của bạn yêu cầu. Hãy xem các phần sau để biết thêm thông tin.

Chọn ngữ cảnh liên kết

Thêm quảng cáo liên kết vào cảnh bằng Phiên có thể theo dõi hoặc Phiên ARCore.

Khi bạn muốn các đối tượng Đính kèm neo vào
Xuất hiện dưới dạng "được hàn" cho Trackable và chịu các hiệu ứng xoay tương tự như Trackable.
Điều này bao gồm:
  • Có vẻ như dính vào bề mặt của Máy bay
  • Duy trì vị trí tương ứng với thiết bị Có thể theo dõi, chẳng hạn như nổi ở phía trên hoặc phía trước thiết bị đó
Có thể theo dõi
Xuất hiện ở cùng một tư thế trong không gian thế giới trong suốt trải nghiệm người dùng Phiên ARCore

Cố định một hoặc nhiều đối tượng

Bạn có thể đính kèm một hoặc nhiều đối tượng vào điểm neo. Nhìn chung, các đối tượng này có mối quan hệ không gian với một hoặc nhiều đối tượng sau:

  • Người khác
  • Có thể theo dõi, chẳng hạn như máy bay
  • Vị trí trong không gian thế giới

Nguyên tắc neo

Tính chân thực và hiệu suất của ứng dụng sẽ được hưởng lợi nhờ việc sử dụng quảng cáo cố định cuối màn hình một cách hiệu quả.

Các đối tượng được gắn với một neo gần đó có vẻ như giữ vị trí thực tế và tương quan với nhau trong suốt trải nghiệm thực tế tăng cường.

Việc chỉ sử dụng các neo mà bạn cần sẽ giúp giảm chi phí CPU.

Sử dụng lại neo khi có thể

Trong hầu hết trường hợp, bạn nên sử dụng cùng một neo cho nhiều đối tượng lân cận thay vì tạo một neo mới cho từng đối tượng.

Sử dụng neo mới cho một đối tượng nếu đối tượng đó cần duy trì mối quan hệ không gian duy nhất với một thành phần Có thể theo dõi hoặc một vị trí trong không gian thế giới.

Lưu ý rằng, nếu mỗi đối tượng trong một cảnh có neo riêng, thì các neo này sẽ điều chỉnh tư thế đối tượng độc lập với nhau để đáp ứng ước tính của ARCore về không gian thế giới trong mỗi khung hình. Các đối tượng được neo riêng biệt có thể dịch chuyển hoặc xoay tương đối với nhau, phá vỡ ảo tưởng về cảnh thực tế tăng cường (AR) trong đó các đối tượng ảo phải nằm ở vị trí tương đối so với nhau.

Ví dụ
Ví dụ: hãy tưởng tượng ứng dụng của bạn cho phép người dùng đặt các món đồ nội thất ảo xung quanh một căn phòng. Một người dùng mở ứng dụng và ARCore bắt đầu theo dõi mặt bàn và sàn trong phòng dưới dạng Máy bay. Người dùng đặt một chiếc đèn ảo trên mặt bàn. Sau đó, người dùng đặt một chiếc ghế ảo xuống sàn.

Tại thời điểm này, cảnh của bạn phải gắn một neo vào Mặt phẳng trên mặt bàn và một neo khác được gắn vào Mặt phẳng tầng.

Nếu người dùng thêm một đèn ảo khác vào mặt bàn, bạn có thể sử dụng lại neo đã gắn vào Mặt phẳng trên mặt bàn. Bằng cách này, cả hai đèn dường như gắn vào Mặt phẳng trên mặt bàn và giữ các vị trí tương đối với nhau. Ghế cũng duy trì vị trí so với Mặt phẳng sàn.

Đặt đối tượng gần các điểm neo

Khi liên kết các đối tượng, hãy đảm bảo rằng các đối tượng đó ở gần điểm neo mà bạn đang sử dụng. Tránh đặt các đối tượng cách điểm neo xa hơn 8 mét (8 mét) hoặc 26 feet (26 feet) để ngăn chặn chuyển động xoay ngoài ý muốn do các bản cập nhật của ARCore đối với toạ độ không gian thế giới.

Nếu bạn cần đặt một đối tượng cách neo hiện có hơn 8 mét, hãy tạo một neo mới gần vị trí này hơn và đính kèm đối tượng vào neo mới.

Tách các neo không sử dụng

Tách mọi liên kết không còn cần thiết để ứng dụng của bạn hoạt động hiệu quả hơn.

Ứng dụng của bạn phải chịu chi phí CPU cho mọi Trackable (Có thể theo dõi) và ARCore không phát hành các tính năng Trackable có gắn neo.

Các loại quảng cáo cố định cuối màn hình

Các loại neo được phân biệt theo phạm vi hợp lệ, từ cục bộ cho đến toàn thế giới.

  • Các neo cục bộ được lưu trữ cục bộ trên ứng dụng và chỉ hợp lệ cho phiên bản đó của ứng dụng. Người dùng phải có mặt tại vị trí mà họ đang đặt neo đó.

  • Cloud Anchors (Neo trên đám mây) được lưu trữ trong Google Cloud và có thể được chia sẻ giữa các thực thể ứng dụng. Người dùng phải có mặt tại vị trí mà họ đặt quảng cáo cố định cuối màn hình.

  • Neo địa lý không gian dựa trên vĩ độ trắc địa, kinh độ và độ cao, cùng với dữ liệu của Hệ thống định vị trực quan (VPS) của Google, để cung cấp vị trí chính xác gần như bất kỳ nơi nào trên thế giới. Người dùng có thể đặt một neo ở một vị trí từ xa, miễn là ứng dụng có kết nối Internet và có thể sử dụng VPS.