ThreeJs的学习:阴影的产生

要产生阴影,需要在三个地方设置属性,

光源、物体、地板

    光源和物体设置castShadow = true;

    地板设置receiveShadow = true;

例子:

    1. 光源:

    var pointLight = new THREE.PointLight( 0xffffff, 0.8 );
    pointLight.position.set(50, 60, 50);
    pointLight.castShadow = true;

    2. 物体

    物体是指建立在地板上的任何东西。

    var mesh = new THREE.Mesh(bufferGeometry, new THREE.MeshBasicMaterial({ color: Math.random() * 0x00ffff } ))
    mesh.castShadow = true; // 产生阴影
    mesh.receiveShadow = true; // 接受阴影

    3.地板

    var mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial(  { side: THREE.DoubleSide, map: texture }  ) );
    mesh.receiveShadow = true;

    4. 柔和的阴影

    发现前三步产生的阴影比较生硬,那就再加一个光源:AmbientLight。
    var ambientLight = new THREE.AmbientLight( 0xffffff );
    scene.add(ambientLight)

 

一些人说是不是所有的光源或所有的材质都可以引起阴影,或者有些操作会让阴影消失。
上面的AmbientLight确实没有castShadow属性。

你可能感兴趣的:(Canvas与WebGL)