在JavaScript中的三个3dObject中从字符串转换为十六进制代码(0x000000)?

在JavaScript中的三个3dObject中从字符串转换为十六进制代码(0x000000)?,javascript,three.js,webgl,Javascript,Three.js,Webgl,我试图一次写出大量的对象,我希望颜色褪色。但是,在使用.toString 16生成字符串后,它不会在代码中读取新的三.MeshBasicMaterial{color:'0x'+color,线框:false,不透明度:0.5} 以下是当前的代码: for (var i = 0; i < 10; i++) { for (var j = 0; j < 10; j++) { for (var k = 0; k < 10; k++) {

我试图一次写出大量的对象,我希望颜色褪色。但是,在使用.toString 16生成字符串后,它不会在代码中读取新的三.MeshBasicMaterial{color:'0x'+color,线框:false,不透明度:0.5}

以下是当前的代码:

    for (var i = 0; i < 10; i++) {
        for (var j = 0; j < 10; j++) {
            for (var k = 0; k < 10; k++) {
                geometry = new THREE.CubeGeometry(50, 50, 50);
                colorr = 254 / 10 * k;
                colorr = Math.round(colorr);
                colorr = colorr.toString(16);
                colorg = 254 / 10 * k;
                colorg = Math.round(colorg);
                colorg = colorg.toString(16);
                colorb = 254 / 10 * k;
                colorb = Math.round(colorb);
                colorb = colorb.toString(16);
                color = '0x' + colorr + colorg + colorb;
                material[i] = new THREE.MeshBasicMaterial({ color: color, wireframe: false, opacity: 0.5 });


                mesh[i] = new THREE.Mesh(geometry, material[i]);
                mesh[i].position.x = -500 + (k * 100);
                mesh[i].position.y = -500 + (j * 100);
                mesh[i].position.z = -500 + (i * 100);
                scene.add(mesh[i]);
                objects.push(mesh[i]);

            }
        }
    }

但是,它只会产生灰黑色

将组件从0设置为1并使用

var color = new THREE.Color().setRGB(r, g, b);
15066597

> parseInt('0xe5e5e5', 16)
15066597

> parseInt('0xe5e5e5', 16)

长话短说,0x只是一种方便的十六进制数字书写方式,因此看起来像CSS颜色,但JavaScript将以这种方式书写的数字视为普通的十进制数字,Three.js也是如此。给定适当的基数,parseInt函数将正确地将字符串从十六进制转换为十进制,因此您可以将颜色构造为十六进制字符串并将其转换为数字。

您是否查看了颜色字符串以查看实际生成的内容?是的,最后是0xE5。我甚至试着用引号“0x0099ff”来写它,结果证明不起作用。因此,它与字符串有关如果要使用字符串,则需要使用而不是“0x”:material.color.setStyle 0099ff;three.js r.60你确定吗?我想我试过了,但没用。或者您的意思是同时使用和setStyle函数?