three.js对光源效果

不知道你们在写的过程中有没有遇到过这种事情,明明我已经加上光源了,但是为什么就是没有效果呢,加的位置啥的也没有错误啊,这是为什么呢?

我也遇到过这样的问题一是光源没加对,有错误,二是光源正确,但是材质的问题,材质对光源不反应

我们加上光源

three.js对光源效果_第1张图片

 但是得到的效果依旧没有加上

three.js对光源效果_第2张图片

 这时候会有人问,是不是我们的光源写错了呢?其实并不是的,而是THREE.MeshBasicMaterial是最基本的材质,也是不会对光源产生反应的材质,所以才不会对光源有反应,这个时候,我们只需要吧THREE.MeshBasicMaterial换成THREE.MeshLambertMaterial就可以啦,然后就会出现光源了。

代码如下:

         // 物体
        var geometry = new THREE.BoxGeometry(1, 1, 1);
        // MeshBasicMaterial 对光源无效
        // var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
        // 所以需要改成 MeshLambertMaterial
        var material = new THREE.MeshLambertMaterial({ color: 0x00ff00 });
        var cube = new THREE.Mesh(geometry, material);
        scene.add(cube);

       

        // 光源
        var spotLight = new THREE.SpotLight(0xffffff);
        spotLight.position.set(-40, 60, -10);
        scene.add(spotLight);

这个时候我们就可以得到一个带有光源的旋转正方体了

three.js对光源效果_第3张图片

 okk,本篇到这里就完啦

是看了这篇博客得到的启发啊这里这里 ,想记录一下

你可能感兴趣的:(前端)