39 lines
		
	
	
		
			1018 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1018 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import * as THREE from 'three';
 | 
						|
 | 
						|
function createText( message, height ) {
 | 
						|
 | 
						|
	const canvas = document.createElement( 'canvas' );
 | 
						|
	const context = canvas.getContext( '2d' );
 | 
						|
	let metrics = null;
 | 
						|
	const textHeight = 100;
 | 
						|
	context.font = 'normal ' + textHeight + 'px Arial';
 | 
						|
	metrics = context.measureText( message );
 | 
						|
	const textWidth = metrics.width;
 | 
						|
	canvas.width = textWidth;
 | 
						|
	canvas.height = textHeight;
 | 
						|
	context.font = 'normal ' + textHeight + 'px Arial';
 | 
						|
	context.textAlign = 'center';
 | 
						|
	context.textBaseline = 'middle';
 | 
						|
	context.fillStyle = '#ffffff';
 | 
						|
	context.fillText( message, textWidth / 2, textHeight / 2 );
 | 
						|
 | 
						|
	const texture = new THREE.Texture( canvas );
 | 
						|
	texture.needsUpdate = true;
 | 
						|
 | 
						|
	const material = new THREE.MeshBasicMaterial( {
 | 
						|
		color: 0xffffff,
 | 
						|
		side: THREE.DoubleSide,
 | 
						|
		map: texture,
 | 
						|
		transparent: true,
 | 
						|
	} );
 | 
						|
	const geometry = new THREE.PlaneGeometry(
 | 
						|
		( height * textWidth ) / textHeight,
 | 
						|
		height
 | 
						|
	);
 | 
						|
	const plane = new THREE.Mesh( geometry, material );
 | 
						|
	return plane;
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
export { createText };
 |