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

然后,我设置的光线如下:
const directionLight = new THREE.DirectionalLight(0xffffff, .6) directionLight.position.set(400, 200, 200) scene.add(directionLight) const ambientLight = new THREE.AmbientLight(0xffffff, 1) scene.add(ambientLight)
加载的glb代码如下:
const loader2 = new GLTFLoader()
loader2.load('/img/tree_small.glb', (glb) => {
glb.scene.scale.set(1000, 1000, 1000)
scene.add(glb.scene)
})但是最终结果却是下图:

经过一番摸索,发现,对加载的模型的材质和颜色重新赋值即可:
const loader2 = new GLTFLoader()
loader2.load('/img/tree_small.glb', (glb) => {
// 遍历所有的Mesh,重新赋值颜色和材质
glb.scene.traverse(item => {
if(item.type === 'Mesh'){
item.material = new THREE.MeshPhongMaterial({
map: item.material.map,
color: item.material.color
})
}
})
glb.scene.scale.set(1000, 1000, 1000)
scene.add(glb.scene)
})最终效果如下:

