Viewport.Info.js 2.0 KB

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