2014-11-04 5 views
6

Есть ли способ заставить SCNView визуализировать новый кадр по запросу, если в сцене нет анимации? Если сцена статична, SCNView отображает ровно один раз, а затем только после того, как что-то изменится.Как заставить SCNView визуализировать новый кадр?

Обычно это имеет смысл, но я работаю вместе с каркасом дополненной реальности Vuforia, который требует от меня визуализации нового кадра каждый раз, когда он обрабатывает новый видеокадр с камеры. Я работал над этой проблемой, создав свой собственный UIView с CAEAGLLayer, который отображает содержимое SceneKit с помощью SCNRenderer. Это отлично работает, но мне любопытно, есть ли способ сделать это с помощью SCNView, поэтому я могу избежать прямого касания OpenGL ES.

ответ

13

вы можете установить его свойство playing в YES

+0

Спасибо, это было быстро. Не могу поверить, что я забыл это свойство. Но это не совсем то, что я ищу, мне нужен способ немедленного рендеринга одного кадра. – Sven

+1

SCNView привязан к линии отображения, что означает, что он представляет 60 кадров в секунду и синхронизируется с обновлением дисплея. Если вы хотите решить, когда сцена рисована, вы должны использовать SCNRenderer. – mnuages

+0

Я не вижу свойство 'play' в SCNView - https://developer.apple.com/reference/scenekit/scnview, было ли оно удалено? – blueether

0

Как UIView, вы можете использовать один и тот же механизм, чтобы запросить обновление, как вы бы любой другой UIView: [_sceneView setNeedsDisplay]; Однако, как было отмечено, это не должны быть использованы как основной способ управлять обновлениями, поскольку он не будет синхронизироваться с дисплеем.

0

Вы можете увеличивать sceneTime вот так:

sceneView.sceneTime += 1 

Он будет оказывать один кадр.

Смежные вопросы