- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Swift/MDLAsset
加载“.obj
”的常见方法使用如下代码
import ModelIO
var theURL: URL
var theAsset: MDLAsset
theURL = Bundle.main.url(forResource: "cube", withExtension: "obj")!
theAsset = MDLAsset(url: theURL)
这仅适用于应用主 bundle
中的文件(在 macOS
上的 app/Contents/Resource
中)。但我希望我的应用程序能够从文件系统上的任何位置读取文件。所以我尝试了以下方法
// 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)
它们都失败了(错误消息“无法打开 OBJ 文件”
)。仅当“cube.obj”
文件不在app/Contents/Resources
下时才会发生这种情况。
我天真的结论是,MDLAsset
似乎是短视的——它只关注一个地方:app/Contents/Resources。
我确信一定有一个解决方案(除了总是将我的 obj 文件复制到应用程序的资源中)。
最佳答案
该问题并非特定于 ModelIO 或 MDLAsset;这是沙盒应用程序的普遍问题。沙盒应用程序无法访问任意用户文件,它只能访问自己沙盒中的文件,除非用户交互授予其访问其他文件的权限。
例如,如果您的应用程序要使用文件打开对话框 (NSOpenPanel
) 要求用户选择模型对象文件,并且用户要这样做,那么您的应用程序将获得对该文件的访问权限。
关于swift - ModelIO/MDLAsset 是短视吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59539225/
使用 Swift/MDLAsset 加载“.obj”的常见方法使用如下代码 import ModelIO var theURL: URL var theAsset: MDLAsset theURL =
我有一个包含 obj、mtl 和纹理的目录。如果我这样做 let asset = MDLAsset(url: url) 然后加载网格,但不加载纹理。现在,如果我将 model.mtl 文件重命名为 m
当使用 MDLAsset(url:) 初始化程序(最终将模型放入 SceneKit)将 OBJ 加载到 MDLAsset 中时,该操作在 iOS14 上频繁且不一致地失败。此操作适用于以前 iOS 版
我正在演示使用 ModelIO 加载和构造 .OBJ 文件。当我使用本地文件时,下面的代码工作正常。 guard let url = Bundle.main.url(forResource: "myV
我正在努力尝试遍历通过加载 SCNScene 文件 (.scn) 创建的 MDLAsset 实例。 我想识别并提取 MDLMesh 以及摄像头和灯光。我认为没有直接的方法可以做到这一点。 例如,我在
我是一名优秀的程序员,十分优秀!