Ошибка памяти при загрузке файлов usdz - PullRequest
1 голос
/ 19 июня 2019

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

Я использую стандартные образцы .usdz от Apple (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)
}

1 Ответ

0 голосов
/ 19 июня 2019

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

enter image description here

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

...