         @setFrame()
         @setCamera()
         @setOrbitControls()
-
-        @runChangeHooks()
-
-        @render_scene()
+        @setLight()
+
+        # borrow the renderer to do the initial render
+        owner = _sceneUsingRenderer
+        wasDynamic = false
+        if owner? and owner.rendererType is 'dynamic'
+            wasDynamic = true
+
+        @opts.renderer ?= _defaultRendererType
+        @setDynamicRenderer() # used to do the first render
+
+        @setStaticRenderer()
+
+        # then give it back to whoever had it (if they were using it)
+        if wasDynamic
+            owner.setDynamicRenderer()
 
         # possibly show the canvas warning.
         if @opts.renderer is 'canvas'


        @scene.add @camera

    runChangeHooks: ->
        if @rendererType is 'dynamic'
            for hook in @changeHooks
                hook()

            @renderer.render @scene, @camera

    setOrbitControls: ->
        # set up camera controls
        @controls = new OrbitControls @camera, @renderer.domElement

        @controls.target = @center


    _addSpherePoint: (opts) ->
        if not @_points?
            @_points = []
            @renderHooks.push =>
                for point in @_points
                    scale = @camera.position.distanceTo point.position
                    point.scale.set scale, scale, scale
