CSS3DRenderer class
class CSS3DRenderer implements Renderer {
 Projector _projector;
 Element domElement;
 Element cameraElement;
 num _width, _height, _widthHalf, _heightHalf;
 CSS3DRenderer() {
    _projector = new Projector();
   domElement = new Element.tag( 'div' )
   ..style.overflow = 'hidden'
   ..style.transformStyle = 'preserve-3d'
   ..style.perspectiveOrigin = '50% 50%';
   // TODO: Shouldn't it be possible to remove cameraElement?
   cameraElement = new Element.tag( 'div' )
   ..style.transformStyle = 'preserve-3d';
   domElement.children.add( cameraElement );
 }
 setSize( num width, num height ) {
   _width = width;
   _height = height;
   _widthHalf = _width / 2;
   _heightHalf = _height / 2;
   domElement.style
   ..width = '${width}px'
   ..height = '${height}px';
   cameraElement.style
   ..width = '${width}px'
   ..height = '${height}px';
 }
 epsilon( num value ) => ( value.abs() < 0.000001 ) ? 0 : value;
 getCameraCSSMatrix( matrix ) {
   return 'matrix3d('
         '${epsilon( matrix[ 0 ] )},'
         '${epsilon( - matrix[ 1 ] )},'
         '${epsilon( matrix[ 2 ] )},'
         '${epsilon( matrix[ 3 ] )},'
         '${epsilon( matrix[ 4 ] )},'
         '${epsilon( - matrix[ 5 ] )},'
         '${epsilon( matrix[ 6 ] )},'
         '${epsilon( matrix[ 7 ] )},'
         '${epsilon( matrix[ 8 ] )},'
         '${epsilon( - matrix[ 9 ] )},'
         '${epsilon( matrix[ 10 ] )},'
         '${epsilon( matrix[ 11 ] )},'
         '${epsilon( matrix[ 12 ] )},'
         '${epsilon( - matrix[ 13 ] )},'
         '${epsilon( matrix[ 14 ] )},'
         '${epsilon( matrix[ 15 ] )}'
         ')';
 }
 getObjectCSSMatrix( matrix ) {
   return 'translate3d(-50%,-50%,0px) matrix3d('
         '${epsilon( matrix[ 0 ] )},'
         '${epsilon( matrix[ 1 ] )},'
         '${epsilon( matrix[ 2 ] )},'
         '${epsilon( matrix[ 3 ] )},'
         '${epsilon( matrix[ 4 ] )},'
         '${epsilon( matrix[ 5 ] )},'
         '${epsilon( matrix[ 6 ] )},'
         '${epsilon( matrix[ 7 ] )},'
         '${epsilon( matrix[ 8 ] )},'
         '${epsilon( matrix[ 9 ] )},'
         '${epsilon( matrix[ 10 ] )},'
         '${epsilon( matrix[ 11 ] )},'
         '${epsilon( matrix[ 12 ] )},'
         '${epsilon( matrix[ 13 ] )},'
         '${epsilon( matrix[ 14 ] )},'
         '${epsilon( matrix[ 15 ] )}'
         ') scale3d(1,-1,1)';
 }
 render( scene, camera ) {
   var fov = 0.5 / Math.tan( camera.fov * Math.PI / 360 ) * _height;
   domElement.style.perspective = "${fov}px";
   var style = "translate3d(0,0,${fov}px)${getCameraCSSMatrix( camera.matrixWorldInverse )} translate3d(${_widthHalf}px,${_heightHalf}px, 0)";
   cameraElement.style.transform = style;
   var objects = _projector.projectScene( scene, camera, false ).objects;
   var il = objects.length;
   for ( var i = 0; i < il; i ++ ) {
     var object = objects[ i ].object;
     if ( object is CSS3DObject ) {
       var element = object.element;
       style = getObjectCSSMatrix( object.matrixWorld );
       element.style.transform = style;
       if ( element.parent != cameraElement ) {
         cameraElement.children.add( element );
       }
     }
   }
 }
}
Implements
Constructors
new CSS3DRenderer() #
Creates a new Object instance.
Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.
docs inherited from Object 
CSS3DRenderer() {
  _projector = new Projector();
 domElement = new Element.tag( 'div' )
 ..style.overflow = 'hidden'
 ..style.transformStyle = 'preserve-3d'
 ..style.perspectiveOrigin = '50% 50%';
 // TODO: Shouldn't it be possible to remove cameraElement?
 cameraElement = new Element.tag( 'div' )
 ..style.transformStyle = 'preserve-3d';
 domElement.children.add( cameraElement );
}
Methods
dynamic getCameraCSSMatrix(matrix) #
getCameraCSSMatrix( matrix ) {
 return 'matrix3d('
       '${epsilon( matrix[ 0 ] )},'
       '${epsilon( - matrix[ 1 ] )},'
       '${epsilon( matrix[ 2 ] )},'
       '${epsilon( matrix[ 3 ] )},'
       '${epsilon( matrix[ 4 ] )},'
       '${epsilon( - matrix[ 5 ] )},'
       '${epsilon( matrix[ 6 ] )},'
       '${epsilon( matrix[ 7 ] )},'
       '${epsilon( matrix[ 8 ] )},'
       '${epsilon( - matrix[ 9 ] )},'
       '${epsilon( matrix[ 10 ] )},'
       '${epsilon( matrix[ 11 ] )},'
       '${epsilon( matrix[ 12 ] )},'
       '${epsilon( - matrix[ 13 ] )},'
       '${epsilon( matrix[ 14 ] )},'
       '${epsilon( matrix[ 15 ] )}'
       ')';
}
dynamic getObjectCSSMatrix(matrix) #
getObjectCSSMatrix( matrix ) {
 return 'translate3d(-50%,-50%,0px) matrix3d('
       '${epsilon( matrix[ 0 ] )},'
       '${epsilon( matrix[ 1 ] )},'
       '${epsilon( matrix[ 2 ] )},'
       '${epsilon( matrix[ 3 ] )},'
       '${epsilon( matrix[ 4 ] )},'
       '${epsilon( matrix[ 5 ] )},'
       '${epsilon( matrix[ 6 ] )},'
       '${epsilon( matrix[ 7 ] )},'
       '${epsilon( matrix[ 8 ] )},'
       '${epsilon( matrix[ 9 ] )},'
       '${epsilon( matrix[ 10 ] )},'
       '${epsilon( matrix[ 11 ] )},'
       '${epsilon( matrix[ 12 ] )},'
       '${epsilon( matrix[ 13 ] )},'
       '${epsilon( matrix[ 14 ] )},'
       '${epsilon( matrix[ 15 ] )}'
       ') scale3d(1,-1,1)';
}
dynamic render(scene, camera) #
render( scene, camera ) {
 var fov = 0.5 / Math.tan( camera.fov * Math.PI / 360 ) * _height;
 domElement.style.perspective = "${fov}px";
 var style = "translate3d(0,0,${fov}px)${getCameraCSSMatrix( camera.matrixWorldInverse )} translate3d(${_widthHalf}px,${_heightHalf}px, 0)";
 cameraElement.style.transform = style;
 var objects = _projector.projectScene( scene, camera, false ).objects;
 var il = objects.length;
 for ( var i = 0; i < il; i ++ ) {
   var object = objects[ i ].object;
   if ( object is CSS3DObject ) {
     var element = object.element;
     style = getObjectCSSMatrix( object.matrixWorld );
     element.style.transform = style;
     if ( element.parent != cameraElement ) {
       cameraElement.children.add( element );
     }
   }
 }
}