首页 > 建站教程 > WebGL教程 Threejs教程 >  Three.js的GLTFLoader加载的模型是黑色的正文

Three.js的GLTFLoader加载的模型是黑色的

我爱模板网在使用THREE.JS的GLTFLoader加载模型时,加载出来的是黑色的。首先,我用windows自带的3D工具打开是下面的效果:

0.png


然后,我设置的光线如下:

1const directionLight = new THREE.DirectionalLight(0xffffff, .6)
2directionLight.position.set(400, 200, 200)
3scene.add(directionLight)
4const ambientLight = new THREE.AmbientLight(0xffffff, 1)
5scene.add(ambientLight)


加载的glb代码如下:

1const loader2 = new GLTFLoader()
2loader2.load('/img/tree_small.glb', (glb) => {
3    glb.scene.scale.set(1000, 1000, 1000)
4    scene.add(glb.scene)
5})


但是最终结果却是下图:

1.png


经过一番摸索,发现,对加载的模型的材质和颜色重新赋值即可:

01const loader2 = new GLTFLoader()
02loader2.load('/img/tree_small.glb', (glb) => {
03// 遍历所有的Mesh,重新赋值颜色和材质
04    glb.scene.traverse(item => {
05        if(item.type === 'Mesh'){
06            item.material = new THREE.MeshPhongMaterial({
07                map: item.material.map,
08                color: item.material.color
09            })
10        }
11    })
12    glb.scene.scale.set(1000, 1000, 1000)
13    scene.add(glb.scene)
14})


最终效果如下:

2.png