天天看點

DirectionalLight與shadow

要使場景中物體有陰影先對renderer和mesh設定

renderer.shadowMap.enabled = true;
renderer.shadowMapType = THREE.PCFShadowMap; //陰影類型      
THREE.BasicShadowMap = 0;   //預設      
THREE.PCFShadowMap = 1;     //漸淡      
THREE.PCFSoftShadowMap = 2; //漸淡柔化      
DirectionalLight與shadow
BasicShadowMap       
DirectionalLight與shadow
PCFShadowMap       
DirectionalLight與shadow
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;
DirectionalLight與shadow
left=-200 right=200 top=200 bottom=-200  陰影      
DirectionalLight與shadow
left=-1000 right=1000 top=1000 bottom=-1000 放大五倍 陰影      
DirectionalLight與shadow
//light.shadowCameraVisible = true;  // 錄影機顯示
scene.add(light);      

繼續閱讀