1.每个面设置不同的颜色

            let geometry = new THREE.BoxGeometry( 1000, 1000, 1000);

            for(let i = 0;i<geometry.faces.length;i++){
                let hex = Math.random() * 0xffffff;
                geometry.faces[ i ].color.setHex( hex );
            }            

            let material = new THREE.MeshBasicMaterial( {
            vertexColors: THREE.FaceColors
            } );

            let mesh=new THREE.Mesh(geometry,material);
            scene.add(mesh);

效果

Three.js每个面设置不同的颜色、每个面设置不同的材质

2.每个面设置不同的材质

            var geometry = new THREE.BoxGeometry( 1000, 1000, 1000);
            let mats=[];

            for(var i = 0;i<geometry.faces.length;i++){
                let material = new THREE.MeshBasicMaterial({ color: new THREE.Color(Math.random() * 0xffffff)});
                mats.push(material);
            }

            let mesh=new THREE.Mesh(geometry,mats);
            
            scene.add(mesh);
            objects.push(mesh);

效果:

Three.js每个面设置不同的颜色、每个面设置不同的材质

但是这里还是看不太懂怎么赋予的材质,通过F12可以发现,实际上是给每个面增加了一个材质的索引。

Three.js每个面设置不同的颜色、每个面设置不同的材质

搞懂这个原理后,我们就明白怎么控制面的颜色了,举个例子,比如一个立方体,我们需要把他第一个面设置为一个颜色,其他的面都设置为同一个颜色:

            var geometry = new THREE.BoxGeometry( 1000, 1000, 1000);
            let mats=[];

            for(var i = 0;i<geometry.faces.length;i++){
                let material = new THREE.MeshBasicMaterial({ color: new THREE.Color(Math.random() * 0xffffff)});
                mats.push(material);
            }

            let mesh=new THREE.Mesh(geometry,mats);
            
            for(let j=0;j< geometry.faces.length;j++){
                if(j>1){
                    geometry.faces[j].materialIndex=1;
                }
            }
            
            scene.add(mesh);
            objects.push(mesh);

Three.js每个面设置不同的颜色、每个面设置不同的材质

相关文章:

  • 2022-12-23
  • 2021-10-21
  • 2021-12-19
  • 2021-07-15
  • 2022-12-23
  • 2021-04-25
  • 2022-12-23
  • 2021-07-14
猜你喜欢
  • 2021-11-16
  • 2022-12-23
  • 2021-10-03
  • 2022-01-24
  • 2021-09-29
相关资源
相似解决方案