首页 > 解决方案 > 如何摆脱这个是错误的。它在“守卫”之后显示预期的“{”

问题描述

我正在尝试创建一个 AR 应用程序,用网格替换你的脸。但是,我一直遇到这个错误。

完整的代码是: -

import PlaygroundSupport
import ARKit
class ARViewController:UIViewController{
    lazy var arView = ARSCNView(frame: UIScreen.main.bounds)
    
    override func viewDidLoad() {
        
        guard ARFaceTrackingConfiguration.isSupported else{fatalError()}
        arView.delegate = self
        
    }
    override func viewDidAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        setupARView()
        
    }
    override func viewWillAppear(_ animated: Bool) {
        arView.session.pause()
        
    }
    
    
    func setupARView(){
        //Step 1: Create a new scene 
        let scene = SCNScene()
        arView.scene = scene
        
        //Step 2: Configure session for tracking 
        let config = ARFaceTrackingConfiguration()
        arView.session.run(config)
        
        // Step 3: Assign arView to vc view 
        self.view = arView
        
        
    }
    
}
extension ARViewController: ARSCNViewDelegate{
    func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
        guard let faceAnchor = anchor as? ARFaceAnchor, let device = render.device else(return nil)
        let faceGeometry = ARSCNFaceGeometry(device:device)
        let node = SCNNode(geometry: faceGeometry)
        node.geometry?.firstMaterial?.fillMode = .lines
            return node 
    
        
    }
    
    func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
        guard let faceAnchor = anchor as? ARFaceAnchor, let faceGeometry = node.geometry as? ARSCNFaceGeometry else {return}
        faceGeometry.update (from: faceAnchor.geometry)
        
    }
}


PlaygroundPage.current.liveView = ARViewController()
PlaygroundPage.current.needsIndefiniteExecution = true

请帮助我,因为我离实现我想做的事情只有一步之遥。如果您对您的解决方案进行解释,我们将不胜感激!

标签: swift

解决方案


当你在你的方法中返回时,你正在使用(而不是。它应该如下所示:{renderer

func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
    guard let faceAnchor = anchor as? ARFaceAnchor, let device = render.device else { return nil } 
    let faceGeometry = ARSCNFaceGeometry(device:device)
    let node = SCNNode(geometry: faceGeometry)
    node.geometry?.firstMaterial?.fillMode = .lines
    return node 
}

推荐阅读