2014-11-04 2 views
6

C'è un modo per forzare SCNView a rendere un nuovo frame su richiesta se non c'è animazione all'interno della scena? Se la scena è statica, SCNView esegue il rendering esattamente una volta e solo dopo che qualcosa cambia.Come forzare SCNView a eseguire il rendering di un nuovo frame?

Di solito questo ha senso, ma sto lavorando insieme al framework di realtà aumentata di Vuforia che mi richiede di eseguire il rendering di un nuovo frame ogni volta che ha elaborato un nuovo frame video dalla fotocamera. Ho risolto questo problema creando il mio UIView personale con un CAEAGLLayer che esegue il rendering del contenuto di SceneKit utilizzando un SCNRenderer. Funziona alla grande, ma sono curioso di sapere se c'è un modo per farlo con SCNView, così posso evitare di toccare direttamente OpenGL ES.

risposta

13

è possibile impostare la proprietà playing a YES

+0

Grazie, è stato veloce. Non posso credere di aver trascurato questa proprietà. Ma questo non è esattamente quello che sto cercando, ho bisogno di un metodo per il rendering immediato di un singolo frame. – Sven

+1

SCNView è collegato al collegamento di visualizzazione, il che significa che presenta 60 fps ed è sincronizzato con l'aggiornamento del display. Se si desidera decidere quando viene disegnata la scena, è necessario utilizzare un SCNRenderer. – mnuages

+0

Non vedo una proprietà 'playing' su SCNView - https://developer.apple.com/reference/scenekit/scnview, è stata rimossa? – blueether

0

Come UIView, è possibile utilizzare lo stesso meccanismo per richiedere un aggiornamento, come si farebbe con qualsiasi altro UIView: [_sceneView setNeedsDisplay]; Tuttavia, come ha sottolineato, questo non dovrebbe essere utilizzato come il modo principale per guidare gli aggiornamenti in quanto non sarebbe sincronizzato con il display.

0

È possibile incrementare il sceneTime in questo modo:

sceneView.sceneTime += 1 

sarà poi il rendering di un singolo fotogramma.