#swift #virtual-reality #realitykit #reality-composer
#swift #виртуальная реальность #realitykit #реальность-композитор
Вопрос:
Пытаюсь использовать свой проект RealityKit в качестве основы для экранного приложения (VR) вместо проецирования на реальный мир (AR) с задней камеры.
Кто-нибудь знает, как загрузить проект RealityKit асинхронно с .nonAR
опцией камеры, чтобы он отображался в приложении вместо использования камеры заднего вида?
Создаю ли я информацию о местоположении в коде Swift или в проекте Reality Composer?
Ответ №1:
Вот как вы можете асинхронно загружать .usdz
VR-модель с помощью .loadModelAsync()
метода экземпляра RealityKit и AnyCancellable
типа Combine.
import UIKit
import RealityKit
import Combine
class VRViewController: UIViewController {
@IBOutlet var arView: ARView!
var anyCancellable: AnyCancellable? = nil
let anchorEntity = AnchorEntity(world: [0, 0,-2])
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
arView.backgroundColor = .black
arView.cameraMode = .nonAR
anyCancellable = ModelEntity.loadModelAsync(named: "horse").sink(
receiveCompletion: { _ in
self.anyCancellable?.cancel()
},
receiveValue: { [self] (object: Entity) in
if let model = object as? ModelEntity {
self.anchorEntity.addChild(model)
self.arView.scene.anchors.append(self.anchorEntity)
} else {
print("Can't load a model due to some issues")
}
}
)
}
}
Однако, если вы хотите перемещаться внутри 3D-среды, вместо использования .nonAR
режима камеры используйте:
arView.environment.background = .color(.black)