anchor.diff:        m.castShadows = true;
         mesh = m;
       });
  +
  +    var row = new html.DivElement();
  +    row.className = "row";
  +    var radio = new html.CheckboxInputElement();
  +    radio.id = "rotate_camera";
  +    radio.name = "rotate_camera";
  +    radio.value = "rotate_camera";
  +    radio.onClick.listen((e) {
  +      rotateCamera = !rotateCamera;
  +    });
  +    var label = new html.LabelElement();
  +    label.htmlFor = radio.id;
  +    label.text = "Rotate Camera";
  +    row.children.add(radio);
  +    row.children.add(label);
  +    controllers.children.add(row);
   
       var plane = _createPlane(6.0);// new Plane(width: 10, height: 10);
       plane.rotation.rotateX(-PI / 2);
  
positive.code:   exit() {
      // TODO: implement exit
    }
  
    @override
    update(num elapsed, num interval) {
      super.update(elapsed, interval);
  
      camera.update(interval);
      camera.position.setValues(cos(elapsed / 1000) * 4.0, 2.0, sin(elapsed / 1000) * 4.0);
      camera.lookAt(new Vector3.zero());
    }
  }
  
  
negative.code:     loader.load(device.ctx, url).then((m) {
        m.position.setValues(0.0, -1.0, -1.0);
        m.animator.switchAnimation("Idle");
        m.animator.animations.forEach((n, a) {
          var row = new html.DivElement();
          row.className = "row";
  