TextGeometry.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { ExtrudeGeometry } from './ExtrudeGeometry';
  2. import { Geometry } from '../../core/Geometry';
  3. /**
  4. * @author zz85 / http://www.lab4games.net/zz85/blog
  5. * @author alteredq / http://alteredqualia.com/
  6. *
  7. * Text = 3D Text
  8. *
  9. * parameters = {
  10. * font: <THREE.Font>, // font
  11. *
  12. * size: <float>, // size of the text
  13. * height: <float>, // thickness to extrude text
  14. * curveSegments: <int>, // number of points on the curves
  15. *
  16. * bevelEnabled: <bool>, // turn on bevel
  17. * bevelThickness: <float>, // how deep into text bevel goes
  18. * bevelSize: <float> // how far from text outline is bevel
  19. * }
  20. */
  21. function TextGeometry( text, parameters ) {
  22. this.isTextGeometry = this.isExtrudeGeometry = this.isGeometry = true;
  23. parameters = parameters || {};
  24. var font = parameters.font;
  25. if ( (font && font.isFont) === false ) {
  26. console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );
  27. return new Geometry();
  28. }
  29. var shapes = font.generateShapes( text, parameters.size, parameters.curveSegments );
  30. // translate parameters to ExtrudeGeometry API
  31. parameters.amount = parameters.height !== undefined ? parameters.height : 50;
  32. // defaults
  33. if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;
  34. if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;
  35. if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;
  36. ExtrudeGeometry.call( this, shapes, parameters );
  37. this.type = 'TextGeometry';
  38. };
  39. TextGeometry.prototype = Object.create( ExtrudeGeometry.prototype );
  40. TextGeometry.prototype.constructor = TextGeometry;
  41. export { TextGeometry };