Ios 是否可以在ARKit中隐藏要素点?

Ios 是否可以在ARKit中隐藏要素点?,ios,swift,augmented-reality,arkit,Ios,Swift,Augmented Reality,Arkit,我想在我的应用程序中引入一个切换,允许用户启用或禁用功能点 我所说的功能是: self.sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints] 是否可以禁用它,或者仅以一种方式禁用它 谢谢大家! 如果功能点是您启用的唯一调试选项,则可以通过将调试选项设置为空集轻松地将其与所有其他调试选项一起禁用: self.sceneView.debugOptions = [] 如果已经设置了其他调试选项,并且只想删除一个功能点,则需要获

我想在我的应用程序中引入一个切换,允许用户启用或禁用功能点

我所说的功能是:

self.sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints]
是否可以禁用它,或者仅以一种方式禁用它


谢谢大家!

如果功能点是您启用的唯一调试选项,则可以通过将调试选项设置为空集轻松地将其与所有其他调试选项一起禁用:

self.sceneView.debugOptions = []

如果已经设置了其他调试选项,并且只想删除一个功能点,则需要获取当前的debugOptions值,并应用一些方法删除不需要的选项。然后将调试选项设置为修改集。

如果功能点是唯一打开的调试选项,则可以通过将调试选项设置为空集轻松地将其与所有其他调试选项一起关闭:

self.sceneView.debugOptions = []
如果已经设置了其他调试选项,并且只想删除一个功能点,则需要获取当前的debugOptions值,并应用一些方法删除不需要的选项。然后将debugOptions设置为修改的集

答案是肯定的

即使启用了其他调试选项,也可以启用/禁用功能点。您可以通过使用insert\ux:和remove\ux:实例方法来实现这一点

下面是代码Xcode 10.2.1、Swift 5.0.1和ARKit 2.0:

let configuration = ARWorldTrackingConfiguration()
@IBOutlet weak var `switch`: UISwitch!
var debugOptions = SCNDebugOptions()


override func viewDidLoad() {
    super.viewDidLoad()
    sceneView.delegate = self
    let scene = SCNScene(named: "art.scnassets/model.scn")!
    
    debugOptions = [.showWorldOrigin]
    sceneView.debugOptions = debugOptions
    sceneView.scene = scene
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    sceneView.session.run(configuration)
}

@IBAction func featurePointsOnOff(_ sender: Any) {

    if `switch`.isOn == true {
        debugOptions.insert(.showFeaturePoints)
        sceneView.debugOptions = debugOptions
        print("'showFeaturePoints' option is \(debugOptions.contains(.showFeaturePoints))")

    } else if `switch`.isOn == false {
        debugOptions.remove(.showFeaturePoints)
        sceneView.debugOptions = debugOptions
        print("'showFeaturePoints' option is \(debugOptions.contains(.showFeaturePoints))")
    }
}
希望这有帮助

答案是肯定的

即使启用了其他调试选项,也可以启用/禁用功能点。您可以通过使用insert\ux:和remove\ux:实例方法来实现这一点

下面是代码Xcode 10.2.1、Swift 5.0.1和ARKit 2.0:

let configuration = ARWorldTrackingConfiguration()
@IBOutlet weak var `switch`: UISwitch!
var debugOptions = SCNDebugOptions()


override func viewDidLoad() {
    super.viewDidLoad()
    sceneView.delegate = self
    let scene = SCNScene(named: "art.scnassets/model.scn")!
    
    debugOptions = [.showWorldOrigin]
    sceneView.debugOptions = debugOptions
    sceneView.scene = scene
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    sceneView.session.run(configuration)
}

@IBAction func featurePointsOnOff(_ sender: Any) {

    if `switch`.isOn == true {
        debugOptions.insert(.showFeaturePoints)
        sceneView.debugOptions = debugOptions
        print("'showFeaturePoints' option is \(debugOptions.contains(.showFeaturePoints))")

    } else if `switch`.isOn == false {
        debugOptions.remove(.showFeaturePoints)
        sceneView.debugOptions = debugOptions
        print("'showFeaturePoints' option is \(debugOptions.contains(.showFeaturePoints))")
    }
}

希望这能有所帮助。

最后!非常感谢你!这非常简单,但在一个艰难的开发过程中,要想的东西太多了……终于!非常感谢你!这非常简单,但在一个艰难的开发过程中,需要考虑的东西太多了。。。