Я пытаюсь отобразить файл реальности с помощью ARView, но когда модель открывается, она очень мала, и жесты не работают. Может кто-нибудь указать мне, что я делаю не так? Файл реальности должен отображаться без использования камеры телефона.
struct AugmentedRealityView: UIViewRepresentable {
var name: String
var url: URL
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
arView.cameraMode = .nonAR
load(url: url, name: name) {
result in
switch result {
case .success(let model):
let anchor = AnchorEntity()
arView.scene.addAnchor(anchor)
let parentEntity = ModelEntity()
parentEntity.addChild(model)
// Handle the gestures for rotation and scale
let entityBounds = model.visualBounds(relativeTo: parentEntity)
parentEntity.collision = CollisionComponent(shapes: [ShapeResource.generateBox(size: entityBounds.extents).offsetBy(translation: entityBounds.center)])
arView.installGestures(.all, for: parentEntity)
anchor.addChild(parentEntity)
case .failure(let error):
print("\nError: \(error)")
}
}
return arView
}
func updateUIView(_ uiView: ARView, context: Context) { }
private func load(url: URL, name: String, completionHandler: @escaping (Result<Entity, Error>) -> ()) {
var cancellable: AnyCancellable? = nil
cancellable = ModelEntity.loadAsync(contentsOf: url, withName: name)
.sink(
receiveCompletion: { loadCompletion in
if case let .failure(error) = loadCompletion {
completionHandler(.failure(error))
}
cancellable?.cancel()
},
receiveValue: { model in
completionHandler(.success(model))
})
}
}