Scenekit FPS低和内存使用率高的问题

时间:2019-11-27 11:01:04

标签: ios swift memory-leaks scenekit frame-rate

我已经使用Scenekit创建了360度图像查看器。在此查看器中,我只是创建一个sphere node并将其附加到root node的{​​{1}}上。我正在使用scene相机拍摄的高分辨率图像作为该球节点的纹理。

我不明白为什么场景套件占用太多内存来显示360度图像。我的图片大小为Aleta,而12MBresolution。当我将场景加载到场景视图中时,我的内存使用量高达400 MB,这非常可怕,而且11520 x 5760急剧下降到FPS

以下是我创建场景的代码:

10-20 FPS

//设置纹理...

 // Camera node and sphere node...

  var sphereNode : SCNNode!

  lazy var cameraNode: SCNNode = {
        let node = SCNNode()
        let camera = SCNCamera()
        node.camera = camera
        return node
    }()

// Material...

func getMaterial() -> SCNMaterial {
    let material = SCNMaterial()
    material.diffuse.mipFilter = .nearest
    material.diffuse.magnificationFilter = .linear
    material.diffuse.contentsTransform = SCNMatrix4MakeScale(-1, 1, 1)
    material.diffuse.wrapS = .repeat
    material.cullMode = .front
    material.isDoubleSided = false
    return material
} 

// Setup scene...

func setup() {
    self.scene?.rootNode.addChildNode(cameraNode)
    let sphere = SCNSphere(radius: 8)
    sphereNode = SCNNode()
    sphere.segmentCount = 300
    sphere.firstMaterial = getMaterial()
    sphereNode.geometry = sphere
    self.scene?.rootNode.addChildNode(sphereNode)
}

//纹理方法:

  room.getSceneTexture { (image) in
            DispatchQueue.main.async {
                self.sceneView.updateMaterialTexture(image: image)
            }
        }

从摄像机捕获图像后,我将设置所捕获图像的内容。

请让我知道是否有人遇到func getSceneTexture(completion: @escaping (UIImage?) -> Void) { guard let url = fileURL else { completion(nil) return } DispatchQueue.global().async { guard let data = try? Data(contentsOf: url) else { completion(nil) return } DispatchQueue.main.async { let image = UIImage(data: data) completion(image) } } return completion(nil) } 内存问题。

0 个答案:

没有答案