Thực hiện việc truyền tia phát sóng trong ứng dụng Unity (AR Foundation)

Thực hiện raycast hoặc kiểm tra nhấn để xác định vị trí chính xác của đối tượng 3D trong cảnh của bạn. Vị trí chính xác giúp đảm bảo nội dung thực tế tăng cường được hiển thị ở kích thước thích hợp (cao nhất).

Loại kết quả lượt truy cập

Thử nghiệm lượt truy cập có thể mang lại bốn loại kết quả lượt truy cập khác nhau, như được trình bày trong bảng sau.

Loại kết quả lượt truy cập Nội dung mô tả Hướng Trường hợp sử dụng Lệnh gọi phương thức
Chiều sâu Sử dụng thông tin chiều sâu từ toàn bộ cảnh để xác định độ sâu và hướng chính xác của một điểm Vuông góc với bề mặt 3D Đặt một vật thể ảo trên một bề mặt tuỳ ý (không chỉ trên sàn và tường) Bạn phải bật Depth thì mã này mới hoạt động.

ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.Depth)
Máy bay Nhấn vào bề mặt ngang và/hoặc dọc để xác định độ sâu và hướng chính xác của một điểm Vuông góc với bề mặt 3D Đặt một vật thể trên mặt phẳng (sàn hoặc tường) bằng cách sử dụng toàn bộ hình học của mặt phẳng. Cần sửa tỷ lệ ngay lập tức. Dự phòng cho kỹ thuật kiểm tra độ sâu ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.PlaneWithinPolygon)
Điểm nổi bật Dựa vào các đặc điểm hình ảnh xung quanh điểm người dùng nhấn để xác định vị trí và hướng chính xác của một điểm Vuông góc với bề mặt 3D Đặt một vật thể trên một bề mặt tuỳ ý (không chỉ trên sàn nhà và tường) ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.FeaturePoint)
Raycast ổn định (Vị trí tức thì) Sử dụng không gian màn hình để đặt nội dung. Ban đầu sử dụng độ sâu ước tính do ứng dụng cung cấp. Hoạt động tức thì, nhưng tư thế và chiều sâu thực tế sẽ thay đổi sau khi ARCore có thể xác định hình dạng cảnh thực tế +Y hướng lên trên, ngược với trọng lực Đặt một vật thể trên mặt phẳng (sàn hoặc tường) bằng cách sử dụng toàn bộ hình dạng của máy bay, mà ở đó vị trí nhanh là rất quan trọng, và trải nghiệm có thể chịu được độ sâu và tỷ lệ ban đầu không xác định ARRaycastManager.AddRaycast(Vector2 screenPoint, float estimatedDistance)

Thực hiện truyền phát tia chuẩn

Gọi ARRaycastManager.Raycast(Vector2, List<ARRaycastHit>, TrackableType) để thực hiện phương thức truyền tia (hit-test). ARRaycastManager hỗ trợ tất cả TrackableType.

var touch = Input.GetTouch(0);
if (touch.phase != TouchPhase.Began)
    return;

// Raycast against planes and feature points.
const TrackableType trackableTypes =
    TrackableType.FeaturePoint |
    TrackableType.PlaneWithinPolygon;
List<ARRaycastHit> hits = new List<ARRaycastHit>();
// Perform the raycast.
if (raycastManager.Raycast(touch.position, hits, trackableTypes))
{
    // Raycast hits are sorted by distance, so the first one will be the closest hit.
    var hit = hits[0];
    // Do something with hit.
}

Tiến hành truyền tia bằng cách sử dụng hướng và tia tuỳ ý

Tia phát sóng thường được xem là tia từ thiết bị hoặc máy ảnh của thiết bị. Tuy nhiên, bạn có thể dùng Raycast(Ray, List<ARRaycastHit>, TrackableType) để truyền bằng tia quang tuỳ ý trong toạ độ không gian thế giới thay vì điểm không gian trên màn hình.

Tạo một Neo bằng ARRaycastHit

Sau khi có một lượt truy cập raycast, hãy sử dụng GameObject.AddComponent<ARAnchor> để tạo Neo và thêm thành phần đó làm thành phần vào GameObject, sử dụng lượt truy cập truyền phát tia làm đầu vào. Thành phần ARAnchor sẽ liên tục cập nhật Transform của đối tượng trò chơi để đối tượng trò chơi vẫn được đính kèm vào Trackable cơ bản cho kết quả lượt truy cập.

Truyền tia ổn định (Vị trí tức thì)

Truyền tia ổn định sử dụng vị trí màn hình và khoảng cách ước tính đến một bề mặt làm dữ liệu đầu vào để tạo ARRaycast mới nhằm đặt nội dung thực tế tăng cường trong cảnh của bạn. Trong ARCore, tính năng này được gọi là Vị trí tức thì.

Gọi ARRaycastManager.AddRaycast() để tạo một ARRaycast tiếp tục tự động cập nhật cho đến khi bạn gọi ARRaycastManager.RemoveRaycast() hoặc tắt ARRaycastManager.

Ban đầu, khoảng cách của ARRaycast sẽ là khoảng cách đã cho trong lệnh gọi AddRaycast(). Sau khi ARCore đã lập bản đồ hình học cục bộ và tìm thấy một mặt phẳng giao nhau, khoảng cách sẽ được cập nhật thành khoảng cách thực tế. Sự thay đổi về khoảng cách có thể ảnh hưởng đến "kích thước" rõ ràng hoặc tỷ lệ nhận thấy của vật thể.

Bước tiếp theo