Проблема с памятью при загрузке файлов usdz

Я загружаю файл .usdz в свой ARSCNView, и пока он работает нормально, за исключением того факта, что когда я загружаю несколько объектов в свою сцену, приложение вылетает с сообщением: Прервано из-за проблемы с памятью.

Я использую образцы Apple по умолчанию .usdz (https://developer.apple.com/augmented-reality/quick-look/), а размер файла робота составляет около 13,5 МБ.

Он работает с 4-5 экземплярами, а затем вылетает.

Неужели лимит для приложения ARKit такой маленький, или я что-то делаю не так?

Вот мой код:

// My touch point on the screen
let touchLocation = sender.location(in: sceneView)    

// We have a touch point on an ARPlane
if let result = self.sceneView.hitTest(touchLocation, types: ARHitTestResult.ResultType.existingPlaneUsingExtent).last {

    let position = SCNVector3Make(result.worldTransform.columns.3.x, result.worldTransform.columns.3.y, result.worldTransform.columns.3.z)

    // Load the .usdz model        
    guard let usdzURL = Bundle.main.url(forResource: "toy_robot_vintage", withExtension: "usdz") else {
        return
    }

    // Create a node, set position and scale
    let referenceNode = SCNReferenceNode(url: usdzURL)!
    referenceNode.load()
    referenceNode.position = position
    referenceNode.scale = SCNVector3Make(0.01, 0.01, 0.01)

    // Add node to scene
    sceneView.scene.rootNode.addChildNode(referenceNode)
}

person Pikebu    schedule 19.06.2019    source источник


Ответы (1)


Приложение может выделить определенный объем памяти, и если он превышает его, ОС автоматически уничтожает его. Я протестировал простое приложение ARKit на iPhone 6S, добавив один файл usdz размером около 13,5 МБ, добавив около 280 МБ к использованию памяти приложением, а ограничение памяти для приложения составляет 1,37 ГБ, как показано в разделе отчета о памяти Xcode:

введите здесь описание изображения

Вы можете увидеть, как увеличивается использование памяти каждый раз, когда в сцену снова добавляется тот же файл usdz. Таким образом, технически вы не можете (и, вероятно, не должны) добавлять в свое приложение более пары файлов usdz одновременно.

person M Reza    schedule 19.06.2019