TextGeometry.js 1.5 KB

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