要使場景中物體有陰影先對renderer和mesh設定
renderer.shadowMap.enabled = true;
renderer.shadowMapType = THREE.PCFShadowMap; //陰影類型
THREE.BasicShadowMap = 0; //預設
THREE.PCFShadowMap = 1; //漸淡
THREE.PCFSoftShadowMap = 2; //漸淡柔化
BasicShadowMap
PCFShadowMap
PCFSoftShadowMap
物體陰影設定
mesh.castShadow = true; //顯示自身陰影
mesh.receiveShadow = true; //顯示其他物體投射的陰影 material類型需為(MeshPhongMaterial或MehsLamberMtaerial)
DirectionalLight設定
var light = new THREE.DirectionalLight(0xf6e86d, 1); //光照顔色 強度
light.castShadow = true; //顯示陰影
//陰影暗度 盡量保持為1 可以通過調整環境光(THREE.AmbientLight)強度來改變陰影暗度 light.shadowDarkness = 1;
//陰影對應紋理的像素寬高 值越大 陰影越細緻
light.shadowMapWidth = 500;light.shadowMapHeight = 500;
//光源位置
light.position.set(1000, 1500, 1000);
//光照投影錐形體的各個參數 其中left right top bottom 值越小陰影越細緻 投影面積也越小
light.shadowCameraFar = 2500;
light.shadowCameraNear = 500;
light.shadowCameraLeft = -1000;light.shadowCameraRight = 1000;light.shadowCameraTop = 1000;light.shadowCameraBottom = -1000;
left=-200 right=200 top=200 bottom=-200 陰影
left=-1000 right=1000 top=1000 bottom=-1000 放大五倍 陰影
//light.shadowCameraVisible = true; // 錄影機顯示
scene.add(light);