0

我在我的 Xcode 项目中添加了一个 USDZ 文件。USDZ 文件在我的 Mac 上打开的 Xcode 项目中正常显示,但是,当我尝试使用 modelIO 库通过代码加载它时,它会加载网格,但不会加载纹理。

在下面的快照中有一个我尝试加载的蜜蜂模型。第二个是蜜蜂和飞机,蜜蜂纹理没有渲染,而飞机纹理加载没有问题。我还将 USDZ 文件转换为 scn 文件,它工作正常。我认为问题不在于文件,而是我使用的代码无法正确加载 USDZ 文件。我正在尝试通过代码加载 USDZ 文件,而我使用的库并不重要。如果您有其他建议,我愿意倾听。

我使用以下代码加载我的模型:

    let fileName = “bee”
       let ext = “usdz”
       let asset = MDLAsset(url: Bundle.main.url(forResource:fileName, withExtension: ext)!)
       let loadedScene = SCNScene(mdlAsset: asset)
           for child in loadedScene.rootNode.childNodes {
              child.geometry?.firstMaterial?.lightingModel = .physicallyBased
}

这里有一些快照来展示我得到的结果: - 来自我 Mac 上 Xcode 查看器的快照,成功地显示了带有纹理的蜜蜂:

在此处输入图像描述

  • 手机、蜜蜂和飞机上的应用程序快照,蜜蜂纹理不可见:

在此处输入图像描述

  • 在 Xcode 控制台上,我收到以下错误日志:

在此处输入图像描述

我在这里缺少什么将模型文件(包括纹理)完全加载到我的场景中?

4

1 回答 1

7

我找到了解决方案。MDLAsset 中有一个方法是 MDLAsset.loadTextures() 来加载纹理。当你调用它时,它会加载纹理。

于 2019-09-11T09:28:13.647 回答