1、材质问题, 比如MeshNormalMaterial材质不可以

2、引入图片问题

//这种引入方式不可以
loader.load('./ylj.jpg', function(texture) {}
//这种引入方式可以:
var ylj = require('./ylj.jpg')
loader.load(ylj, function(texture) {}

3、渲染方法在图片加载之前调用了

这种错误最有可能,添加其他模型流程是同步的:

添加mesh----渲染

纹理图片添加是异步的:

添加mesh-->加载纹理图片--->渲染--->纹理图片加载成功---->??(加载成功了没有重新渲染一次)

//一种正确的写法
var ylj = require('./ylj.jpg')
var loader = new THREE.TextureLoader()
loader.load(ylj, function(texture) {
    var planeGeometry = new THREE.PlaneGeometry(400, 200);
    var planeMaterial = new THREE.MeshLambertMaterial({
        map:texture,
        color: 0xaaaaaa
    });
    let plane = new THREE.Mesh(planeGeometry, planeMaterial);
    plane.rotation.x = -0.5 * Math.PI;
    plane.position.y = -5;
    plane.receiveShadow = true;
    scene.add(plane);
    //这行渲染的方法,必须保证要在load图片成功后调用一次才可以,要么成功回调中调用一次,要么这里不调用但是渲染的方法是循环执行的
    renderer.render(scene,camera)
})
posted on 2021-12-07 15:12  occc  阅读(1643)  评论(0编辑  收藏  举报