Table of Contents
Giới thiệu về việc xây dựng những kinh nghiệm thực tế với mục đích thực tế
Khung đồ họa thực tế đã được đăng tải (AR) chứa nội dung số vào thế giới vật lý, tạo ra những trải nghiệm tương tác hòa trộn thực tế với các vật thể ảo. Khung thực tế của Apple cung cấp cho các nhà phát triển với mức độ cao, trình bày các ứng dụng AROS để tạo ra các ứng dụng AR cho iOS. Bài này mở rộng trên các cơ bản, khung bao gồm, thực thể cấu trúc, tương tác người dùng, hoạt hình, vật lý, sự hợp tác và tối ưu hóa.
Bắt đầu: Thiết lập và yêu cầu dự án
Để phát triển các ứng dụng AR với thực tế Kit, bạn cần Xcccra 13 hoặc sau đó, một thiết bị iOS vật lý với một chip A9 hoặc mới (iPhones SE, 6s, và sau đó; iPads 5gen và sau đó), và một tài khoản nhà phát triển Apple. Bộ mô phỏng dạng iOS không hỗ trợ máy ảnh hay dữ liệu cảm biến, vì vậy kiểm tra thiết yếu thiết yếu thiết yếu thiết yếu thiết yếu.
Tạo một dự án Xcode mới và chọn [FLT: 0] Ứng dụng thực tế [FLT: 1]. Chọn mục « REMUI » hay UIKit » phụ thuộc vào sở thích của bạn — Thực tế Kit Kit hoạt động không ngừng với cả hai. Mẫu cung cấp một [FLT: 0] và một thiết lập cảnh cơ bản.
Thay vào đó, bạn có thể tự thêm Kit thực tế vào một dự án đã có bằng cách nhập khuôn khổ:
import RealityKit
import ARKit
Bảo đảm SNSCameraUsageDescription ) được đặt trong của bạn – một dây người dùng giải thích tại sao ứng dụng cần truy cập máy ảnh.
Để biết thêm chi tiết, hãy nhắc đến tài liệu [FLT: 0] của Apple [FLT:] ) và AR Kit .
Hiểu hệ thống đa dạng của thực thể
Thực tế Kit sử dụng một công cụ là một công cụ chứa các thành phần. Thành phần xác định hành vi, hình thức, vật lý và các thuộc tính khác của thực thể. Ví dụ, [FL:4] định nghĩa một hình ảnh 3D [FLT:] là một [FT:] [FT] có các vị trí/ quy mô/ quy mô, và [F:] cho phép mô phỏng vật lý.
Cách tiếp cận này giúp cho nó dễ sáng tác các vật phức tạp. Bạn tạo ra các thực thể, gắn kết các thành phần, và sắp xếp chúng theo thứ tự.
Tạo ra neo và thêm nội dung
Cái neo thông dụng nhất là cái neo, gắn liền với bề mặt ngang hoặc dọc, và đây là cách đặt mô hình 3D trên bất cứ mặt phẳng nào được nhận diện:
// Load a USDZ model
guard let model = try? ModelEntity.load(named: "robot") else { return }
// Create an anchor on any horizontal plane
let anchor = AnchorEntity(plane: .horizontal, classification: .any, minimumBounds: [0.2, 0.2])
// Attach the model to the anchor
anchor.addChild(model)
// Add the anchor to the ARView’s scene
arView.scene.addAnchor(anchor)
Bạn cũng có thể tạo neo ở những vị trí cụ thể thế giới bằng hoặc gắn nội dung để phát hiện hoặc mặt bằng hoặc .
Xây dựng một cảnh ART cơ bản với thực tế Kit
Ngoài việc đặt chỗ đơn giản, bạn cần quản lý chiếc xe đạp xem cuộc sống của AR. Trong một ứng dụng UIKit, thêm vào bộ điều khiển xem:
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
arView.session.delegate = self
// Configure session
let config = ARWorldTrackingConfiguration()
config.planeDetection = [.horizontal, .vertical]
arView.session.run(config)
loadContent()
}
func loadContent() {
// Create and add anchors
}
}
Đối với vội vàng, embed cầu nối vào phân cấp của trường phái REM.
Người dùng tương tác: Điệu bộ và nhấn địa điểm
Để làm cho ứng dụng AR của bạn tương tác, bạn cần phải xử lý các cú gõ, kéo và xoay. Thực tế Kit cung cấp hit thử nghiệm để xác định thực thể nào người dùng chạm vào.
Mở cửa hoặc giao tiếp
Trong bộ quản lý cử chỉ, gọi để lấy lại thực thể dưới ngón tay:
arView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap(_:))))
@objc func handleTap(_ sender: UITapGestureRecognizer) {
let location = sender.location(in: arView)
if let entity = arView.entity(at: location) {
// Scale the entity
var transform = entity.transform
transform.scale *= 1.2
entity.move(to: transform, relativeTo: entity.parent, duration: 0.3, timingFunction: .easeInOut)
} else {
// Place a new object at the tapped location
placeObject(at: location)
}
}
func placeObject(at screenPoint: CGPoint) {
let results = arView.raycast(from: screenPoint, allowing: .estimatedPlane, alignment: .any)
guard let result = results.first else { return }
let anchor = AnchorEntity(world: result.worldTransform)
let box = ModelEntity(mesh: .generateBox(size: 0.1), materials: [SimpleMaterial(color: .blue, isMetallic: false)])
anchor.addChild(box)
arView.scene.addAnchor(anchor)
}
Việc phóng to lên bề mặt thế giới thực đáng tin cậy hơn việc thực thể đánh vào mục kiểm tra khi bạn muốn đặt nội dung trên máy bay.
Kéo và quay với điệu bộ
Để kéo, hãy đính và cập nhật vị trí của thực thể dọc theo mặt phẳng.
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
arView.addGestureRecognizer(panGesture)
@objc func handlePan(_ sender: UIPanGestureRecognizer) {
let location = sender.location(in: arView)
guard let entity = arView.entity(at: location) else { return }
guard let parent = entity.parent as? HasAnchoring else { return }
// Translate the entity in the anchor’s local plane
let translation = sender.translation(in: arView)
// ... (convert to 3D movement)
}
Để thực hiện một cách hùng hồn, hãy xem xét việc dùng từ gói thực , hoặc tài sản cử chỉ trong iOS 16+.
Tính năng cấp cao: Hoạt hình, vật lý và hợp tác
Hoạt ảnh
Kit thực sự hỗ trợ cả hai hoạt hình xương (từ tập tin USDZ) và tài sản dựa trên hoạt hình hoạt hình dựa trên BAR của USDZ. Để kích hoạt hoạt một hoạt hình Xây dựng cho mô hình có tài nguyên hoạt họa:
guard let model = try? ModelEntity.load(named: "dancing_character") else { return }
model.playAnimation(model.availableAnimations[0].repeat(duration: .infinity), transitionDuration: 0.5, startsPaused: false)
Bạn cũng có thể hoạt cảnh biến đổi, mờ đục hoặc tham số tùy chỉnh bằng phương pháp được xem trước đó. Để có chuỗi phức tạp, hãy dùng hoặc .
Mô phỏng vật lý
Đính kèm một để cho phép lực hấp dẫn, va chạm và lực tác động:
let box = ModelEntity(mesh: .generateBox(size: 0.1), materials: [SimpleMaterial(color: .red, isMetallic: false)])
box.position = [0, 0.5, 0] // above a plane
let physicsBody = PhysicsBodyComponent(
massProperties: .default,
material: .generate(staticFriction: 0.8, dynamicFriction: 0.5, restitution: 0.3),
mode: .dynamic
)
box.components.set(physicsBody)
let collision = CollisionComponent(shapes: [.generateBox(size: [0.1, 0.1, 0.1])])
box.components.set(collision)
// Add box to anchor
anchor.addChild(box)
Hộp sẽ rơi lên máy bay và phản ứng lại với va chạm.
Phiên chạy AR hợp tác
Với các buổi hợp tác của ARKit, nhiều thiết bị có thể chia sẻ cùng một thế giới AR, và cho phép sự hợp tác của buổi họp bằng cách chọn lựa:
config.collaborationEnabled = true
arView.session.run(config)
Gửi cho các bạn cùng lứa qua một khung mạng (v. d., multipeer Converness). Mỗi cảnh thực tế của Kit vẫn được đồng bộ hóa. Lý tưởng này cho nhiều người chơi trò chơi hoặc xem lại thiết kế.
Cách làm báp têm cho kinh nghiệm AR mịn
Ứng dụng AR đòi hỏi tỷ lệ khung cao (60 fps) để tránh bệnh chuyển động.
- Dùng các mô hình ít [FLT: 1] và tối ưu hóa tập tin USDZ. Giữ vertex đếm thấp và sử dụng kết cấu nén (KTX hay PNG).
- Hãy đánh giá số thực thể trong bối cảnh. Hãy dùng để tính lỗi.
- Vẽ ) bằng cách sử dụng ) để chia sẻ cùng một mô hình trên nhiều thực thể.
- Chỉ vẽ chất lượng ) với thiết bị cũ.
- Mô hình tải để tránh chặn sợi chính. Hãy tải mô hình trong hàng đợi nền và trình bày khi sẵn sàng.
- Điều khiển xe đạp đời sống AR ): gọi khi ứng dụng đi đến nền, và chạy lại cấu hình trên khung cảnh.
Để biết thêm chi tiết, xin xem kinh nghiệm AR lnst ) ) ) ) ), đọc kinh nghiệm AR .
Giao diện AR trực quan thiết kế
Kinh nghiệm người dùng trong AR khác với ứng dụng truyền thống.
- Phản hồi nhận dạng khuôn mặt [FLT: 1]: hình dung máy bay có lưới hoặc đường nét để người dùng biết vị trí của đối tượng.
- Các đường cong nên cảm thấy tự nhiên [FLT: 1]]: sử dụng thao tác trực tiếp (tap, kéo, giật) thay vì điều khiển trừu tượng.
- Gợi ý hình ảnh [FLT: 1]]: tô sáng các thực thể tương tác hoặc hiển thị một dấu chéo khi người dùng chỉ trên một máy bay hợp lệ.
- Ánh sáng : thực tế Kit có thể tự động ước lượng ánh sáng thế giới thực và áp dụng nó cho các đối tượng ảo. Hãy dùng để điều chỉnh cường độ.
- Test trong nhiều môi trường [FLT: 1]]: ánh sáng, kết cấu và kích cỡ phòng khác nhau ảnh hưởng đến việc theo dõi AR. Giá trị cho điều kiện trung bình.
Phụ đề dịch thuật viên đáp ứng các lỗi lầm và thử nghiệm
Thử ra thiết bị thật không phải là thay đổi. Dùng mã X [FLT: 0]AR Kit [FLT: 1]]:
- Hãy bật để hiển thị các điểm, nguồn gốc thế giới và khung dây vật lý.
- Dùng bản ghi để xem khi nào người ta phát hiện được bề mặt.
- Thêm để theo dõi trạng thái và lỗi.
- Thử nghiệm trên nhiều thế hệ thiết bị (v. d., iPhone 8 vs. iPhone 14 Pro) để đo hiệu suất.
Để kiểm tra UI tự động, bạn có thể chế biến dữ liệu AR, nhưng kiểm tra bằng tay vẫn là cần thiết cho độ chính xác.
Kết luận
Thực tế Kit trừu tượng phần lớn sự phức tạp của việc phát triển AR, nhưng việc xây dựng một kinh nghiệm bóng loáng đòi hỏi sự chú ý đến kiến trúc, tương tác giữa người dùng, hiệu quả và thiết kế.