Thực hiện ánh xạ tia (raycast) hoặc kiểm thử 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í đúng sẽ đảm bảo nội dung AR hiển thị ở kích thước (rõ ràng) thích hợp.
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 thể hiện trong bảng sau.
Loại kết quả lượt truy cập | 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 về chiều sâu từ toàn bộ cảnh để xác định chiều 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 đối tượng ả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ì chế độ này mới hoạt động.ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.Depth)
|
Máy bay | Chạm vào các bề mặt nằm ngang và/hoặc dọc để xác định chiều 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ể lên một 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áy bay đó. Cần tỷ lệ chính xác ngay lập tức. Dự phòng cho kiểm tra lượt truy cập theo chiều 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 trực quan 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 đối tượng trên một bề mặt tuỳ ý (không chỉ trên sàn và tường) |
ARRaycastManager.Raycast(Vector2 screenPoint, List<ARRaycastHit> hitResults, TrackableType trackableTypes TrackableType.FeaturePoint)
|
Raycast liên tục (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 học cảnh thực | +Y hướng lên, trái với trọng lực | Đặt một vật thể lên một mặt phẳng (sàn hoặc tường) bằng cách sử dụng hình học đầy đủ của máy bay, trong đó vị trí nhanh là rất quan trọng và trải nghiệm này có thể chịu được độ sâu và quy mô ban đầu chưa biết |
ARRaycastManager.AddRaycast(Vector2 screenPoint, float estimatedDistance)
|
Thực hiện truyền tia chuẩn
Gọi ARRaycastManager.Raycast(Vector2, List<ARRaycastHit>, TrackableType)
để thực hiện quá trình truyền tia (kiểm thử nhấn). 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.
}
Truyền tia bằng cách sử dụng một tia và hướng tuỳ ý
Tia tia thường được coi là tia từ thiết bị hoặc camera của thiết bị, nhưng bạn có thể sử dụng Raycast(Ray, List<ARRaycastHit>, TrackableType)
để truyền tia truyền bằng cách sử dụng một tia tuỳ ý trong toạ độ không gian thế giới thay vì điểm trong không gian màn hình.
Tạo một neo bằng ARRaycastHit
Sau khi bạn có một truy cập raycast, sử dụng GameObject.AddComponent<ARAnchor>
để tạo một Anchor (Neo) và thêm thành phần này làm thành phần cho GameObject
, sử dụng truy cập raycast làm dữ liệu đầ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.
Tia truyền ổn định (Vị trí tức thì)
Truyền tia phát liên tục 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 vào cảnh của bạn. Trong ARCore, vị trí 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à quãng đường đã cung cấp trong lệnh gọi AddRaycast()
. Sau khi ARCore đã ánh xạ 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" biểu kiến hoặc tỷ lệ cảm nhận được của vật thể.