/** * @author zz85 / http://www.lab4games.net/zz85/blog * @author alteredq / http://alteredqualia.com/ * * Text = 3D Text * * parameters = { * font: , // font * * size: , // size of the text * height: , // thickness to extrude text * curveSegments: , // number of points on the curves * * bevelEnabled: , // turn on bevel * bevelThickness: , // how deep into text bevel goes * bevelSize: // how far from text outline is bevel * } */ import { Geometry } from '../core/Geometry.js'; import { ExtrudeBufferGeometry } from './ExtrudeGeometry.js'; // TextGeometry function TextGeometry( text, parameters ) { Geometry.call( this ); this.type = 'TextGeometry'; this.parameters = { text: text, parameters: parameters }; this.fromBufferGeometry( new TextBufferGeometry( text, parameters ) ); this.mergeVertices(); } TextGeometry.prototype = Object.create( Geometry.prototype ); TextGeometry.prototype.constructor = TextGeometry; // TextBufferGeometry function TextBufferGeometry( text, parameters ) { parameters = parameters || {}; var font = parameters.font; if ( ! ( font && font.isFont ) ) { console.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' ); return new Geometry(); } var shapes = font.generateShapes( text, parameters.size ); // translate parameters to ExtrudeGeometry API parameters.depth = parameters.height !== undefined ? parameters.height : 50; // defaults if ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10; if ( parameters.bevelSize === undefined ) parameters.bevelSize = 8; if ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false; ExtrudeBufferGeometry.call( this, shapes, parameters ); this.type = 'TextBufferGeometry'; } TextBufferGeometry.prototype = Object.create( ExtrudeBufferGeometry.prototype ); TextBufferGeometry.prototype.constructor = TextBufferGeometry; export { TextGeometry, TextBufferGeometry };