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