render(time, frame) {
    var renderer = this.renderer;
    this.frame = frame;
    this.delta = this.clock.getDelta() * 1000;
    this.time = this.clock.elapsedTime * 1000;
    if (this.isPlaying) {
      this.tick(this.time, this.delta);
    }
    var savedBackground = null;
    if (this.is('ar-mode')) {
      // In AR mode, don't render the default background. Hide it, then
      // restore it again after rendering.
      savedBackground = this.object3D.background;
      this.object3D.background = null;
    }
    renderer.render(this.object3D, this.camera);
    if (savedBackground) {
      this.object3D.background = savedBackground;
    }
    if (this.isPlaying) {
      var renderCamera = renderer.xr.isPresenting ? renderer.xr.getCamera() : this.camera;
      this.tock(this.time, this.delta, renderCamera);
    }
  }
The render loop.

Updates animations.
Updates behaviors.
Renders with request animation frame.