Hey everyone, how are you doing?
I was here making a chart, and I’ve used a lot of times text resources.
I don’t really know if it was necessary making a function for that, but it made things easier for me.
Inpired on the makeTextSprite from stemkoski I made a function to generate text for me, where I can set some parameters.
You can see it in a live example right here
Here is the code, and also examples of how to use it to generate the texts on the image above.
function generateText(message, parameters) {
    let text;
    fontLoader.load('font/gentilis_regular.typeface.json', function(font) {
        const opacity = parameters.hasOwnProperty("opacity") ?
            parameters["opacity"] : 1;
        if (parameters === undefined) parameters = {};
        const color = parameters.hasOwnProperty("color") ?
            parameters["color"] : 0x006699;
        const matLite = new THREE.MeshBasicMaterial({
            color: color,
            side: THREE.DoubleSide,
            transparent: true,
            opacity: opacity
        });
        var fontsize = parameters.hasOwnProperty("fontsize") ?
            parameters["fontsize"] : 2;
        const shapes = font.generateShapes(message, fontsize);
        const geometry = new THREE.ShapeGeometry(shapes);
        geometry.computeBoundingBox();
        const xMid = -0.5 * (geometry.boundingBox.max.x - geometry.boundingBox.min.x);
        geometry.translate(xMid, 0, 0);
        text = new THREE.Mesh(geometry, matLite);
        scene.add(text);
        var x = parameters.hasOwnProperty("x") ?
            parameters["x"] : text.position.x;
        var y = parameters.hasOwnProperty("y") ?
            parameters["y"] : text.position.y;
        var z = parameters.hasOwnProperty("z") ?
            parameters["z"] : text.position.z;
        var rotx = parameters.hasOwnProperty("rotx") ?
            parameters["rotx"] : text.rotation.x;
        var roty = parameters.hasOwnProperty("roty") ?
            parameters["roty"] : text.rotation.y;
        var rotz = parameters.hasOwnProperty("rotz") ?
            parameters["rotz"] : text.rotation.z;
        var name = parameters.hasOwnProperty("name") ?
            parameters["name"] : 'createdText';
        var countZ = parameters.hasOwnProperty("countZ") ?
            parameters["countZ"] : '---';
        text.position.set(x, y, z)
        text.rotation.set(rotx, roty, rotz)
        text.name = name;
        text.countZ = countZ;
    });
}
I would appreciate any comments: suggestions for improvements, criticism…
It helped me a lot, hope it can help someone else.
Best regards…
