[英]Scenekit low FPS and high memory usage issue
我已经使用Scenekit
创建了一个360度的图像查看器。 在此查看器中,我只是创建一个sphere node
并将其附加到scene
的root node
。 我正在使用Aleta
相机捕获的高分辨率图像作为该球体节点的纹理。
我不明白为什么场景工具包占用太多内存来显示360度图像。 我的图片大小为12MB
, resolution
为11520 x 5760
。 当我将场景加载到场景视图中时,我的内存使用量高达400 MB,这非常可怕,而且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)
}
从摄像机捕获图像后,我将使用捕获的图像设置素材的内容。
请让我知道是否有人遇到了scenekit's
内存问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.