【问题标题】:Can I load both obj and materials as an MDLAsset?我可以将 obj 和材质都加载为 MDLAsset 吗?
【发布时间】:2022-04-28 01:10:41
【问题描述】:

我有一个包含 obj、mtl 和纹理的目录。如果我这样做了

let asset = MDLAsset(url: url) 然后它加载网格,但没有纹理。现在,如果我将 model.mtl 文件重命名为 model.abc 并运行相同的代码,我会在控制台上看到以下内容

020-10-08 19:24:36.277305-0700 ModelLoader2[1607:11820939] Unable to find mtl file /Users/myname/Documents/ModelLoader2/Models/model/model.mtl

这告诉我MDLAsset 确实找到了 mtl 文件,但它没有正确加载纹理。有没有办法让它也加载纹理?我看到一些名为MDLAssetResolver 的协议具有以下定义,但互联网上绝对没有文档和0 useful hits on github

public protocol MDLAssetResolver : NSObjectProtocol {

    
    func canResolveAssetNamed(_ name: String) -> Bool

    func resolveAssetNamed(_ name: String) -> URL
}

我的问题是,

  1. 加载 obj 文件的最佳方式是什么?我本来打算使用 Model I/O,以便可以导出为 .usdz 和其他格式
  2. 模型 I/O 是否不值得投入时间来处理,或者我应该转向其他方法吗?似乎有一些 WWDC 演讲大肆宣传它是一个强大的框架,但到目前为止,由于缺乏文档,它似乎毫无用处。

【问题讨论】:

    标签: ios swift scenekit apple-model-io


    【解决方案1】:

    您是否尝试过asset.loadTextures(),因为您已经加载了资产?

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2020-02-15
    • 1970-01-01
    相关资源
    最近更新 更多