SceneKit didApplyAnimationsAtTime время расчета - PullRequest
1 голос
/ 24 сентября 2019

Привет. Я пытаюсь вычислить время, необходимое моему рендереру для запуска действий и анимации.Из того, что я понимаю здесь: https://developer.apple.com/documentation/scenekit/scnscenerendererdelegate

Свойство time в rendererDiDSomething: время должно быть разным в каждом обратном вызове, если вашей игре требуется время для отображения на экране.

У меня сложная сцена сПри использовании фальшивых анимаций, используя статистику SceneView, я вижу, что анимация занимает много каждого кадра.Но когда я проверяю свойство времени в обратном вызове, они все одинаковы.Я также пытался вычислить разницу во времени между кадрами, и она всегда равна 0,0

Что мне здесь не хватает?

Фрагмент для иллюстрации:

func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
    print(time)
}

func renderer(_ renderer: SCNSceneRenderer, didApplyAnimationsAtTime time: TimeInterval) {
    print(time)
}

func renderer(_ renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: TimeInterval) {
    print(time)
}

Спасибо!

1 Ответ

0 голосов
/ 28 сентября 2019

Я думаю, что все методы экземпляра renderer() SceneKit с аргументом time показывают нам одинаковые значения, поскольку на этот раз системное время (выраженное в секундах и миллисекундах) представлено псевдонимом типа TimeInterval класса Double.

Похоже, что в этом API у нас нет возможности выяснить, что такое время субкадра в цикле рендеринга, например, когда точно выполняется оценка ограничений или когдаанимация была применена.

...