Снимок SCNRenderer не всегда применяет сглаживание - PullRequest
0 голосов
/ 11 марта 2020

Вот проблема. Слева находится то, что я вижу в моем scnView. Справа - то, что я получаю от SCNRenderer'а snapshot этой сцены. Я нахожусь на Каталине.

enter image description here

У меня есть сцена и способ в пользовательском интерфейсе сделать снимок этой сцены. Вот как я это делаю

snapshotRenderer.scene = scnView.scene    
snapshotRenderer.snapshot(atTime: mySceneTime, with: mySize, antialiasingMode: SCNAntialiasingMode.multisampling4X)

То, что я пробовал

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

Итак, без удачи я попытался запустить цикл с

snapshotRenderer.scene!.isPaused = false
snapshotRenderer.isPlaying = false

и

self.snapshotRenderer.update(atTime: mySceneTime)

, а также с SCNTransaction.begin() и .commit(). Но ничего не работает.

Я также попытался подождать 3 секунды с DispatchQueue.main.asyncAfter после вышеуказанных попыток, а затем вызвать моментальный снимок. Это тоже не сработало.

1 Ответ

1 голос
/ 11 марта 2020

Установлено ли для isJitteringEnabled значение true? Снимок экрана, кажется, включает сглаживание, но, возможно, это только потому, что изображение было уменьшено, когда оно было загружено туда.

...