             f()
 
     render_scene: (force = false) ->
-        if @renderer_type isnt 'dynamic'
+        if @rendererType isnt 'dynamic'
             # if we don't have the renderer, swap it in, make a static image,
             # then give it back to whoever had it.
             owner = _sceneUsingRenderer


        @renderer.setClearColor @background, 1
        @renderer.setSize @opts.width, @opts.height
        if @controls?
            @controls.enabled = true
            if @last_canvas_pos?
                @controls.object.position.copy @last_canvas_pos
            if @last_canvas_target?
                @controls.target.copy @last_canvas_target
        if @opts.spin
            @animate render: false
        @render_scene true

    setStaticRenderer: ->
        if @renderer_type is 'static'
            # already have it
            return

        if not @static_image?
            @static_image = document.createElement 'img'
            @static_image.className = 'math-3d-static-renderer'
            @static_image.style.width = @opts.width
            @static_image.style.height = @opts.height
        @static_image.src = @data_url()

        @renderer_type = 'static'
        if @controls?
            @controls.enabled = false
            @last_canvas_pos = @controls.object.position
            @last_canvas_target = @controls.target

        # remove the current renderer (if it exists)
        removeElement @element.lastChild

        # place renderer in correct place in the DOM
        @element.appendChild @static_image

    # On mouseover, we switch the renderer out to use webgl, if available, and also enable spin animation.
    init_on_mouseover: ->

        @_animate opts

    _animate: (opts) ->
        if @rendererType is 'static'
            # will try again when we switch to dynamic renderer
            @_animate_started = false
            return
