0

尝试使用我的 RealityKit 项目作为屏幕应用程序 (VR) 的基础,而不是从后置摄像头投射到现实世界 (AR) 上。

任何人都知道如何使用.nonAR相机选项异步加载 RealityKit 项目,因此它会在应用程序中投影,而不是利用后置摄像头?

我应该在 Swift 代码或 Reality Composer 项目中创建位置信息吗?

4

1 回答 1

1

下面介绍如何.usdz借助 RealityKit 的.loadModelAsync()实例方法和 Combine 的AnyCancellable类型异步加载 VR 模型。

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)
于 2020-08-27T09:45:17.783 回答