我正在Messages extension
中使用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
}
其余代码来自使用Apple的UIKit示例。
答案 0 :(得分:0)
很抱歉无法提供最新答案,但至关重要的是纹理分辨率(不是文件大小)。将.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 RAM。
有关更多信息,我强烈推荐此WWDC video。