+[SCNTransaction setCompletionBlock:] always invokes the block immediately

It’s supposed to invoke your block when all the animations in the current transaction have completed. It doesn’t; it runs it as soon as the transaction is committed. Le sigh. It does appear to do it from the main runloop at least, as documented. So there is technically a delay, as a consequence of that… Read more

SCNView frame rate

There’s no API to get any kind of performance information from an SCNView, even as basic as a rolling frame rate.  But it’s not hard to add – you can be notified when each frame is drawn by overriding the -draw method.  For example: Update:However, if you’re layer-backed the “draw” method isn’t used. Instead you… Read more

SCNGeometrys can be shared by multiple SCNNodes

It’s not explicitly documented either way, but it is perfectly valid, evidently, to attach the same SCNGeometry to multiple SCNNodes.  Works as you’d expect – changes to the geometry are reflected across all the nodes identically. It doesn’t appear to have any performance impact though, oddly.  At least not in fairly trivial scenes.  It might… Read more

Animations only work when the node is already in the scene

If you try to add an animation to an SCNNode that’s not yet part of a scene graph, nothing will happen.  It won’t give any indication of failing, and the performance of rendering implies it’s still running them, but there will be no visible effect.  So, addChildNode: and then addAnimation:forKey:.

Radar or GTFO

Just ran across this old post by Daniel Pasco, which showed again up in NetNewsWire presumably because of some RSS reboot on their end.  Anyway, it reminded me of dealing with 3rd party developers – mostly indirectly, through Developer Relations – and the trials it involved. I particularly like the captioned picture of Mike.  Nice.… Read more