RealityKit для виртуальной реальности

#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)