Viewport.Info.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. Viewport.Info = function ( editor ) {
  5. var signals = editor.signals;
  6. var container = new UI.Panel();
  7. container.setId( 'info' );
  8. container.setPosition( 'absolute' );
  9. container.setLeft( '10px' );
  10. container.setBottom( '10px' );
  11. container.setFontSize( '12px' );
  12. container.setColor( '#fff' );
  13. var objectsText = new UI.Text( '0' ).setMarginLeft( '6px' );
  14. var verticesText = new UI.Text( '0' ).setMarginLeft( '6px' );
  15. var trianglesText = new UI.Text( '0' ).setMarginLeft( '6px' );
  16. container.add( new UI.Text( 'objects' ), objectsText, new UI.Break() );
  17. container.add( new UI.Text( 'vertices' ), verticesText, new UI.Break() );
  18. container.add( new UI.Text( 'triangles' ), trianglesText, new UI.Break() );
  19. signals.objectAdded.add( update );
  20. signals.objectRemoved.add( update );
  21. signals.geometryChanged.add( update );
  22. //
  23. function update() {
  24. var scene = editor.scene;
  25. var objects = 0, vertices = 0, triangles = 0;
  26. for ( var i = 0, l = scene.children.length; i < l; i ++ ) {
  27. var object = scene.children[ i ];
  28. object.traverseVisible( function ( object ) {
  29. objects ++;
  30. if ( object instanceof THREE.Mesh ) {
  31. var geometry = object.geometry;
  32. if ( geometry instanceof THREE.Geometry ) {
  33. vertices += geometry.vertices.length;
  34. triangles += geometry.faces.length;
  35. } else if ( geometry instanceof THREE.BufferGeometry ) {
  36. if ( geometry.index !== null ) {
  37. vertices += geometry.index.count * 3;
  38. triangles += geometry.index.count;
  39. } else {
  40. vertices += geometry.attributes.position.count;
  41. triangles += geometry.attributes.position.count / 3;
  42. }
  43. }
  44. }
  45. } );
  46. }
  47. objectsText.setValue( objects.format() );
  48. verticesText.setValue( vertices.format() );
  49. trianglesText.setValue( triangles.format() );
  50. }
  51. return container;
  52. }