Sidebar.Geometry.TeapotGeometry.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import { UIRow, UIText, UIInteger, UICheckbox, UINumber } from './libs/ui.js';
  2. import { TeapotGeometry } from '../../examples/jsm/geometries/TeapotGeometry.js';
  3. function GeometryParametersPanel( signals, object ) {
  4. var container = new UIRow();
  5. var parameters = object.geometry.parameters;
  6. // size
  7. var sizeRow = new UIRow();
  8. var size = new UINumber( parameters.size ).onChange( update );
  9. sizeRow.add( new UIText( 'Size' ).setWidth( '90px' ) );
  10. sizeRow.add( size );
  11. container.add( sizeRow );
  12. // segments
  13. var segmentsRow = new UIRow();
  14. var segments = new UIInteger( parameters.segments ).setRange( 1, Infinity ).onChange( update );
  15. segmentsRow.add( new UIText( 'Segments' ).setWidth( '90px' ) );
  16. segmentsRow.add( segments );
  17. container.add( segmentsRow );
  18. // bottom
  19. var bottomRow = new UIRow();
  20. var bottom = new UICheckbox( parameters.bottom ).onChange( update );
  21. bottomRow.add( new UIText( 'Bottom' ).setWidth( '90px' ) );
  22. bottomRow.add( bottom );
  23. container.add( bottomRow );
  24. // lid
  25. var lidRow = new UIRow();
  26. var lid = new UICheckbox( parameters.lid ).onChange( update );
  27. lidRow.add( new UIText( 'Lid' ).setWidth( '90px' ) );
  28. lidRow.add( lid );
  29. container.add( lidRow );
  30. // body
  31. var bodyRow = new UIRow();
  32. var body = new UICheckbox( parameters.body ).onChange( update );
  33. bodyRow.add( new UIText( 'Body' ).setWidth( '90px' ) );
  34. bodyRow.add( body );
  35. container.add( bodyRow );
  36. // fitted lid
  37. var fitLidRow = new UIRow();
  38. var fitLid = new UICheckbox( parameters.fitLid ).onChange( update );
  39. fitLidRow.add( new UIText( 'Fitted Lid' ).setWidth( '90px' ) );
  40. fitLidRow.add( fitLid );
  41. container.add( fitLidRow );
  42. // blinn-sized
  43. var blinnRow = new UIRow();
  44. var blinn = new UICheckbox( parameters.blinn ).onChange( update );
  45. blinnRow.add( new UIText( 'Blinn-scaled' ).setWidth( '90px' ) );
  46. blinnRow.add( blinn );
  47. container.add( blinnRow );
  48. function update() {
  49. object.geometry.dispose();
  50. object.geometry = new TeapotGeometry(
  51. size.getValue(),
  52. segments.getValue(),
  53. bottom.getValue(),
  54. lid.getValue(),
  55. body.getValue(),
  56. fitLid.getValue(),
  57. blinn.getValue()
  58. );
  59. object.geometry.computeBoundingSphere();
  60. signals.geometryChanged.dispatch( object );
  61. }
  62. return container;
  63. }
  64. export { GeometryParametersPanel };