I stumbled on another library to get inspiration from today: SceneJS (and xeoEngine, which I think builds on top of SceneJS). Notes:

  • It’s WebGL only
  • has an interesting API feature where scenes are created declaratively with JSON
  • has a plugin system.
  • Can set the FPS on a per-scene basis.
  • Uses event system for everything, so creating an update loop is like the following:
    let node = scene.getNode('nodeId')
    scene.on('tick', function() {
        node.setAngle(node.getAngle() + 0.5)