转换的SCN文件(来自DAE文件)不会显示在sceneView中

14w*_*wml 5 augmented-reality scenekit ios11 xcode9-beta arkit

DAE这里下载了一个Collada文件,我最近打开Xcode beta并将其转换为SCN文件.

我使用此方法加载场景对象(其中modelName= model,fileExtension= scn):

private func loadModel() {
    guard let virtualObjectScene = SCNScene(named: "\(modelName).\(fileExtension)", inDirectory: "art.scnassets/\(modelName)") else {
        return
    }           
    let wrapperNode = SCNNode()

    for child in virtualObjectScene.rootNode.childNodes {
        wrapperNode.addChildNode(child)
    }      
    self.addChildNode(wrapperNode)
}
Run Code Online (Sandbox Code Playgroud)

但是,没有任何显示!当我加载dae文件时(通过改变fileExtension= dae),恐龙只显示出来,但恐龙闪烁的确非常奇怪.

我不明白为什么这不是因为如果苹果公司已经从提供的转换工作dae,以scnXcode我觉得这应该是很容易使用生成的scn文件.

任何帮助,将不胜感激!

Dinosaur.swift

class Dinosaur: VirtualObject {

    override init() {
        super.init(modelName: "model", fileExtension: "scn", title: "Dinosaur")
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}
Run Code Online (Sandbox Code Playgroud)

VirtualObject.swift

class VirtualObject: SCNNode {

    var modelName: String = ""
    var fileExtension: String = ""
    var title: String = ""

    override init() {
        super.init()
        self.name = "Virtual object root node"
    }

    init(modelName: String, fileExtension: String, title: String) {
        super.init()
        self.name = "Virtual object root node"
        self.modelName = modelName
        self.fileExtension = fileExtension
        self.title = title

        loadModel()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    private func loadModel() {
        guard let virtualObjectScene = SCNScene(named: "\(modelName).\(fileExtension)", inDirectory: "art.scnassets/\(modelName)") else {
            return
        }

        let wrapperNode = SCNNode()

        for child in virtualObjectScene.rootNode.childNodes {
            wrapperNode.addChildNode(child)
        }          
        self.addChildNode(wrapperNode)
    }

    private func unloadModel() {
        for child in self.childNodes {
            child.removeFromParentNode()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ViewController.swift

var newObject: VirtualObject = Dinosaur()

@IBAction func loadAd(_ sender: UIButton) {
    newObject.removeFromParentNode()
    newObject.position = SCNVector3(0, 0, -1)   
    sceneView.scene.rootNode.addChildNode(newObject)
}
Run Code Online (Sandbox Code Playgroud)

小智 0

我有同样的问题。我的解决方案:将 .dae 文件拖到项目中并通过“复制”按钮进行转换。执行此操作后,.scn 文件出现并且可见。