SceneKit USDZ 文件显示错误的模型

问题描述 投票:0回答:1
  1. 我购买了 3D 模型文件及其 FBX 格式。我在搅拌机中打开它,模型如下所示:

enter image description here

  1. 然后我在Apple的Reality Converter中打开它,它看起来像这样:

enter image description here

  1. 然后我将其转换为 USDZ 文件。并将其导入到我的 Xcode 项目中,如下所示:

enter image description here

  1. 然后我写了一些代码,把它放在屏幕上。你猜怎么着 - 模型变成了完全不同的东西:

enter image description here

我在这里附加了一个示例项目:https://drive.google.com/file/d/1NMhiYPR5u4ghw0voxbyOjiXOutj8aoEG/view?usp=sharing

我不知道模型文件是怎么回事。出售它的公司似乎是合法的。也许他们导出了错误的 FBX 文件?但为什么它在搅拌机和现实转换器中显示正确的模型呢?

ios swift scenekit
1个回答
0
投票

看来,您用来导入模型的方法确实有一种不准确的解释......

我通过使用稍微不同的导入机制让你的模型(USDZ 和/或转换后的 SCN)工作)

在某处添加此扩展:

extension SCNNode {
    convenience init(named name: String) {
        self.init()
        guard let scene = SCNScene(named: name) else {return}
        for childNode in scene.rootNode.childNodes {addChildNode(childNode)}
    }
}

然后像这样使用它:

override init() {
    super.init()
    
    let camera = SCNCamera()
    let cameraNode = SCNNode()
    cameraNode.camera = camera
    cameraNode.position = SCNVector3(x: 0, y: 0, z: 50)
    rootNode.addChildNode(cameraNode)
    
    // *** Changed Section ***
    let geo32 = SCNNode(named: "Audio_07.usdz") // or Audio_07.scn, if you converted it to SCN
    geo32.scale = SCNVector3(0.5, 0.5, 0.5) // OPTIONAL
    geo32.eulerAngles = SCNVector3(CGFloat.pi/2, 0.0, 0.0) // OPTIONAL
    rootNode.addChildNode(geo32)
    
}

这是结果:

对于USDZ(我没有安装编辑器,可能需要调整材质) USDZ example

对于转换后的SCN(我在材质中添加了一些颜色) SCN example

希望这对您有帮助。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.