要产生阴影,需要在三个地方设置属性,
光源、物体、地板
光源和物体设置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属性。