[使用Swift从URL加载材质纹理的图像

问题描述 投票:0回答:1

我正在尝试从远程图像创建自定义材质,以使用RealityKit添加到ModelEntity。与本地图像完全正常工作,但尝试任何远程操作时我都遇到加载错误。

致命错误:“尝试!”表达式意外引发错误:RealityKit.TextureResource。($ 1b9817f08处的未知上下文)。LoadError.importFailureWithURL(https://upload.wikimedia.org/wikipedia/commons/1/1b/Demetrius_III_bust.png

我尝试了来自不同来源的多个图像,包括http,https,.png,.jpg。在任何地方都找不到可行的示例。如果很重要,我传递给withName的ID是一个UUID。

func createMaterial(id: String, imageURL: String) -> Material{
        var material = SimpleMaterial()
        material.metallic = MaterialScalarParameter(floatLiteral: 0.0)
        material.roughness = MaterialScalarParameter(floatLiteral: 1.0)
        let texture: TextureResource = try! TextureResource.load(contentsOf: URL(string:imageURL)!, withName: id)

        let materialTexture: MaterialColorParameter = MaterialColorParameter.texture(texture)
        material.baseColor = materialTexture
        return material
 }

PS,如果有人可以推荐一个好的库来处理这种用例的加载和缓存图像,那将是巨大的帮助。我发现的所有内容似乎都针对UIImages或SwiftUI Images。

更新1:这是将行包装在catch中后的完整错误:

https://upload.wikimedia.org/wikipedia/commons/1/1b/Demetrius_III_bust.png

无法从“ https://upload.wikimedia.org/wikipedia/commons/1/1b/Demetrius_III_bust.png”导入实体

我还更新了Info.plist的应用程序传输安全设置以允许任意加载

ios swift url swift5 realitykit
1个回答
0
投票
看起来像contentsOfTextureResource.load()参数需要内部文件URL,而不是外部URL。在我的情况下,我通过手动下载需要的图像来解决了这个问题。
© www.soinside.com 2019 - 2024. All rights reserved.