使用以下代码加载“ .obj
”的常用方法Swift/MDLAsset
import ModelIO
var theURL: URL
var theAsset: MDLAsset
theURL = Bundle.main.url(forResource: "cube", withExtension: "obj")!
theAsset = MDLAsset(url: theURL)
这仅适用于应用程序主目录中的文件bundle
(在app/Contents/Resource
s on 中macOS
)。但我希望我的应用程序能够从我的文件系统上的任何位置读取文件。所以我尝试了以下
// 1st attempt
theURL = URL(string: "file:///Users/me/cube.obj")!
theAsset = MDLAsset(url: theURL)
// 2nd attempt
theURL = URL(fileURLWithPath: "/Users/me/cube.obj")
theAsset = MDLAsset(url: theURL)
// 3rd attempt
theURL = URL(string: "cube.obj", relativeTo: URL(string:"/Users/me/")!)!
theAsset = MDLAsset(url: theURL)
他们都失败了(带有错误消息"Could not open OBJ file"
)。这只发生在"cube.obj"
文件不在app/Contents/Resources
.
我天真的结论是这MDLAsset
似乎是短视的——它只在一个地方看:app/Contents/Resources.
我确信必须有一个解决方案(除了总是将我的 obj 文件复制到应用程序的资源中)。