Javascript 通过For循环添加TextGeometry THREE.js

Javascript 通过For循环添加TextGeometry THREE.js,javascript,for-loop,three.js,Javascript,For Loop,Three.js,我正试图用3.TextGeometry()沿三维网格构建数字 但它只生成一个数字。 什么是使此代码正常工作的解决方案 “current”变量是一个从-10到10的数字,跳过0 我的IDE(PyCharm)告诉我“可变”变量可以从闭包中访问” 我不知道我做错了什么,也不知道如何解决,谢谢 函数createGridNumbersX(大小){ var grpGridNumbersX=new THREE.Group(); grpGridNumbersX.name='grpGridNrsX'; var l

我正试图用3.TextGeometry()沿三维网格构建数字

但它只生成一个数字。 什么是使此代码正常工作的解决方案

“current”变量是一个从-10到10的数字,跳过0 我的IDE(PyCharm)告诉我“可变”变量可以从闭包中访问”

我不知道我做错了什么,也不知道如何解决,谢谢

函数createGridNumbersX(大小){

var grpGridNumbersX=new THREE.Group();
grpGridNumbersX.name='grpGridNrsX';
var loader=new THREE.FontLoader();
var fontType='font/helvetiker_regular.typeface.json';
var textMaterial=new THREE.MeshBasicMaterial({color:0xffffff});

对于(i=0;i),您很可能需要等待字体加载一次

var grpGridNumbersX = new THREE.Group();
grpGridNumbersX.name = 'grpGridNrsX' ;

var loader = new THREE.FontLoader();
var fontType = 'fonts/helvetiker_regular.typeface.json';
var textMaterial = new THREE.MeshBasicMaterial({ color: 0xffffff});
loader.load(fontType, createText);

function createText(font) {
    for (let i=0; i<(size*2)+1; i++) {

        var counter = i + 1;
        var start = -size - 1;
        var current = start + counter;

        if (i === size) {
            continue
        }

        console.log('current ' + current);

            var textGeometry = new THREE.TextGeometry(**current**, {
                font: font,
                size: 0.3,
                height: false,
            });

            var mesh = new THREE.Mesh(textGeometry, textMaterial);
            mesh.name = 'xNr' + i;
            mesh.position.x = current;

            grpGridNumbersX.add(mesh);
    }

    scene.add(grpGridNumbersX);

} 
var grpGridNumbersX=new THREE.Group();
grpGridNumbersX.name='grpGridNrsX';
var loader=new THREE.FontLoader();
var fontType='font/helvetiker_regular.typeface.json';
var textMaterial=new THREE.MeshBasicMaterial({color:0xffffff});
loader.load(fontType,createText);
函数createText(字体){
对于(设i=0;i溶液:
*在Loader.load中创建“For循环”
*将“当前变量转换为字符串”

仍在研究如何将每个数字对准摄影机,在我第一次加载场景时,它会正确地将其对准,但当我移动摄影机时,注视不会更新

函数createGridNumbersX(大小){

var grpGridNumbersX=new THREE.Group();
grpGridNumbersX.name='grpGridNrsX';
var loader=new THREE.FontLoader();
var fontType='font/helvetiker_regular.typeface.json';
var textMaterial=new THREE.MeshBasicMaterial({color:0xffffff});
loader.load(字体类型,函数(字体){

对于(i=0;i谢谢,我找到了解决方案,for循环需要在文本几何体函数的创建中,而不是在for循环中创建文本几何体
var grpGridNumbersX = new THREE.Group();
grpGridNumbersX.name = 'grpGridNrsX' ;

var loader = new THREE.FontLoader();
var fontType = 'fonts/helvetiker_regular.typeface.json';
var textMaterial = new THREE.MeshBasicMaterial({ color: 0xffffff});
loader.load(fontType, createText);

function createText(font) {
    for (let i=0; i<(size*2)+1; i++) {

        var counter = i + 1;
        var start = -size - 1;
        var current = start + counter;

        if (i === size) {
            continue
        }

        console.log('current ' + current);

            var textGeometry = new THREE.TextGeometry(**current**, {
                font: font,
                size: 0.3,
                height: false,
            });

            var mesh = new THREE.Mesh(textGeometry, textMaterial);
            mesh.name = 'xNr' + i;
            mesh.position.x = current;

            grpGridNumbersX.add(mesh);
    }

    scene.add(grpGridNumbersX);

} 
var grpGridNumbersX = new THREE.Group();
grpGridNumbersX.name = 'grpGridNrsX';

var loader = new THREE.FontLoader();
var fontType = 'fonts/helvetiker_regular.typeface.json';
var textMaterial = new THREE.MeshBasicMaterial({color: 0xffffff});

loader.load( fontType, function (font) {

    for (i=0; i<(size*2)+1; i++) {

        var counter = i + 1;
        var start = -size - 1;
        var current = start + counter;

        if (i === size) {
            continue
        }

        var str = current.toString();

        var textGeometry = new THREE.TextGeometry(str, {
            font: font,

            size: 0.2,
            height: false,
        });

        var mesh = new THREE.Mesh(textGeometry, textMaterial);
        mesh.position.x = current;
        mesh.name = 'xAxeNr' + i;
        mesh.lookAt(camera.position);


        grpGridNumbersX.add(mesh);
    }
});


scene.add(grpGridNumbersX);