2014-11-04 61 views
6

如果場景中沒有動畫,是否有強制SCNView按需渲染新幀的方法?如果場景是靜態的,SCNView只會渲染一次,然後纔會發生變化。如何強制SCNView渲染一個新的框架?

通常這是有道理的,但我正在與Vuforia增強現實框架一起工作,這需要我每次從相機處理新視頻幀時渲染一個新幀。我通過使用SCNRenderer呈現SceneKit內容的CAEAGLLayer創建自己的UIView來解決此問題。這很好,但我很好奇,如果有辦法用SCNView來做到這一點,所以我可以避免直接觸摸OpenGL ES。

回答

13

可以將其playing屬性設置爲YES

+0

謝謝,這很快。我不敢相信我忽略了這個屬性。但是這不是我正在尋找的,我需要一種立即渲染單個幀的方法。 – Sven 2014-11-04 22:42:50

+1

SCNView綁定到顯示鏈接,這意味着它呈現60fps並與刷新顯示同步。如果你想決定什麼時候繪製場景,那麼你必須使用SCNRenderer。 – mnuages 2014-11-04 22:52:40

+0

我在SCNView上看不到「播放」屬性 - https://developer.apple.com/reference/scenekit/scnview,它被刪除了嗎? – blueether 2017-01-11 22:29:01

0

作爲一個UIView,您可以使用相同的機制來要求更新,你會任何其他的UIView:[_sceneView setNeedsDisplay];然而,正如指出的那樣,這不應該被使用作爲驅動更新的主要方式,因爲它不會與顯示同步。

0

可以遞增sceneTime像這樣:

sceneView.sceneTime += 1 

它將然後渲染一幀。