ARKIT: наблюдайте отставание при рисовании линии между одним SCNNode другим SCNNode - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть рисовать линии и создать окно с размером.Проблема с запаздыванием на iPhone 8 и выше, но без проблем на iPhone 7.

Для обновления строк:

fileprivate func updateLine(_ line: SCNNode, from position: SCNVector3, distance: Float, axis: SCNVector3.Axis) {
        guard let box = line.geometry as? SCNBox else {
            fatalError("Tried to update something that is not a line")
        }

        let absDistance = CGFloat(abs(distance))
        let offset = distance * 0.5
        switch axis {
        case .x:
            box.width = absDistance
            line.position = position + SCNVector3(x: offset, y: 0, z: 0)
        case .y:
            box.height = absDistance
            line.position = position + SCNVector3(x: 0, y: offset, z: 0)
        case .z:
            box.length = absDistance
            line.position = position + SCNVector3(x: 0, y: 0, z: offset)
        }
    }

enter image description here

iPhone 7:

Процессор: 48%

Память: 199 МБ

FPS: 60

Время рендеринга кадров: 1,9 мс

iPhone 8 Plus: Процессор: 48%

Память: 236 МБ

Графический процессор: 4,5

FPS:60

Время рендеринга кадра: 16,6 мс

В проекте нет утечек памяти.

1 Ответ

0 голосов
/ 04 февраля 2019

Я столкнулся с запаздывающей проблемой для iphone 8 plus и выше, но рисование линии работало на iPhone7 плавно, поэтому я реализовал

 // Show statistics such as fps and timing information
        sceneView.showsStatistics = true

Чтобы сравнить разницу между iPhone7 и iPhone8-plus, я заметил, что iPhone 8Plus ивыше 18 мс время рендеринга кадра и для iphone 7 это было всего 1 мс время рендеринга кадра , поэтому я уменьшил FPS со значения по умолчанию 60FPS

sceneView.preferredFramesPerSecond = 40

Теперь отстаетпроблема решена

enter image description here

...