Ios 如何减少在AR中查看.usdz对象所需的内存?

Ios 如何减少在AR中查看.usdz对象所需的内存?,ios,arkit,Ios,Arkit,我在消息扩展中玩ARKit,我可以加载和显示示例电视和手推车文件,但是我收到了电视的内存警告,它实际上没有那么大 是否有任何技术可以用来减少使用此对象文件的内存需求?这是来自SCNNode的一个子类 func loadModel() { let bundle = Bundle(for: VirtualObject.self) guard let fileURL = bundle.url(forResource: "retrotv", withExtension: "usdz")

我在
消息扩展中玩ARKit,我可以加载和显示示例电视和手推车文件,但是我收到了电视的内存警告,它实际上没有那么大

是否有任何技术可以用来减少使用此对象文件的内存需求?这是来自SCNNode的一个子类

func loadModel() {
    let bundle = Bundle(for: VirtualObject.self)
    guard let fileURL = bundle.url(forResource: "retrotv", withExtension: "usdz")
        , let modelNode = SCNReferenceNode(url: fileURL)
        else { return }

    modelNode.load()
    modelNode.scale = SCNVector3(0.005, 0.005, 0.005)

    self.addChildNode(modelNode)
    modelLoaded = true
}

其余代码来自苹果的UIKit示例。

很抱歉回答得太晚,但关键是纹理分辨率(而不是文件大小)。当您将.USDZ文件重命名为.ZIP时,您实际上可以将其解压缩并查看其中的内容。有纹理+.USDC文件。这里的纹理是RGB(3B/px)或灰度(2B/px),它们都是2k(2048px x 2048px)

例如,如果你有iPhone X,它的视网膜显示可以将图像的每一面缩放3倍,这意味着该设备需要(2048*3)*(2048*3)*3=113MB的RAM内存来显示2k RGB图像

这台复古电视有四个2k RGB纹理和四个2k灰度纹理,我们可以计算出,仅纹理一个就差不多了。(4*113MB)+(4*75MB)=752MB内存

要了解更多信息,我强烈推荐这个