Sidebar.Geometry.TeapotBufferGeometry.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /**
  2. * @author tschw
  3. */
  4. Sidebar.Geometry.TeapotBufferGeometry = function ( signals, object ) {
  5. var container = new UI.Row();
  6. var parameters = object.geometry.parameters;
  7. // size
  8. var sizeRow = new UI.Row();
  9. var size = new UI.Number( parameters.size ).onChange( update );
  10. sizeRow.add( new UI.Text( 'Size' ).setWidth( '90px' ) );
  11. sizeRow.add( size );
  12. container.add( sizeRow );
  13. // segments
  14. var segmentsRow = new UI.Row();
  15. var segments = new UI.Integer( parameters.segments ).setRange( 1, Infinity ).onChange( update );
  16. segmentsRow.add( new UI.Text( 'Segments' ).setWidth( '90px' ) );
  17. segmentsRow.add( segments );
  18. container.add( segmentsRow );
  19. // bottom
  20. var bottomRow = new UI.Row();
  21. var bottom = new UI.Checkbox( parameters.bottom ).onChange( update );
  22. bottomRow.add( new UI.Text( 'Bottom' ).setWidth( '90px' ) );
  23. bottomRow.add( bottom );
  24. container.add( bottomRow );
  25. // lid
  26. var lidRow = new UI.Row();
  27. var lid = new UI.Checkbox( parameters.lid ).onChange( update );
  28. lidRow.add( new UI.Text( 'Lid' ).setWidth( '90px' ) );
  29. lidRow.add( lid );
  30. container.add( lidRow );
  31. // body
  32. var bodyRow = new UI.Row();
  33. var body = new UI.Checkbox( parameters.body ).onChange( update );
  34. bodyRow.add( new UI.Text( 'Body' ).setWidth( '90px' ) );
  35. bodyRow.add( body );
  36. container.add( bodyRow );
  37. // fitted lid
  38. var fitLidRow = new UI.Row();
  39. var fitLid = new UI.Checkbox( parameters.fitLid ).onChange( update );
  40. fitLidRow.add( new UI.Text( 'Fitted Lid' ).setWidth( '90px' ) );
  41. fitLidRow.add( fitLid );
  42. container.add( fitLidRow );
  43. // blinn-sized
  44. var blinnRow = new UI.Row();
  45. var blinn = new UI.Checkbox( parameters.blinn ).onChange( update );
  46. blinnRow.add( new UI.Text( 'Blinn-scaled' ).setWidth( '90px' ) );
  47. blinnRow.add( blinn );
  48. container.add( blinnRow );
  49. function update() {
  50. object.geometry.dispose();
  51. object.geometry = new THREE.TeapotBufferGeometry(
  52. size.getValue(),
  53. segments.getValue(),
  54. bottom.getValue(),
  55. lid.getValue(),
  56. body.getValue(),
  57. fitLid.getValue(),
  58. blinn.getValue()
  59. );
  60. object.geometry.computeBoundingSphere();
  61. signals.geometryChanged.dispatch( object );
  62. }
  63. return container;
  64. };