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 };
							 |