Skip to content

Commit 26789e7

Browse files
committed
Added text labels.
1 parent c6b8fbd commit 26789e7

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

utils/Label.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
@author David Piegza
3+
4+
Implements a label for an object.
5+
6+
It creates an text in canvas and sets the text-canvas as
7+
texture of a cube geometry.
8+
9+
Parameters:
10+
text: <string>, text of the label
11+
12+
Example:
13+
var label = new THREE.Label("Text of the label");
14+
label.position.x = 100;
15+
label.position.y = 100;
16+
scene.addObject(label);
17+
*/
18+
19+
THREE.Label = function(text, parameters) {
20+
var parameters = parameters || {};
21+
22+
var labelCanvas = document.createElement( "canvas" );
23+
24+
function create() {
25+
var xc = labelCanvas.getContext("2d");
26+
var fontsize = "40pt";
27+
28+
// set font size to measure the text
29+
xc.font = fontsize + " Arial";
30+
var len = xc.measureText(text).width;
31+
32+
labelCanvas.setAttribute('width', len);
33+
34+
// set font size again cause it will be reset
35+
// when setting a new width
36+
xc.font = fontsize + " Arial";
37+
xc.textBaseline = 'top';
38+
xc.fillText(text, 0, 0);
39+
40+
var geometry = new THREE.CubeGeometry(len, 200);
41+
var xm = new THREE.MeshBasicMaterial( { map: new THREE.Texture( labelCanvas ), transparent: true } );
42+
xm.map.needsUpdate = true;
43+
44+
// set text canvas to cube geometry
45+
var labelObject = new THREE.Mesh( geometry, [ xm ] );
46+
return labelObject;
47+
}
48+
49+
return create();
50+
}

0 commit comments

Comments
 (0)