如果没有光源,就不可能看到任何渲染结果。
如果往其中添加SpotLight光源的如图2(因为使用了聚光灯光源才能照亮物体并产生了阴影)
对于环境光的设置只需要设置颜色即可
结论======>环境光使用的主要目的是弱化阴影或添加一些颜色。
....
....
// 创建一个方块
var cubeGeometry = new THREE.BoxGeometry(4, 4, 4);
var cubeMaterial = new THREE.MeshLambertMaterial({color: 0xff0000});
var cube = new THREE.Mesh(cubeGeometry, cubeMaterial);
....
....
var ambiColor = "#0c0c0c";
var ambientLight = new THREE.AmbientLight(ambiColor);//设置颜色
scene.add(ambientLight);
通过更改环境光的颜色可以感受环境光颜色的变化对于在场景中的物体渲染结果的变化。
var pointColor = "#ccffcc";
var pointLight = new THREE.PointLight(pointColor);
pointLight.distance = 100;
pointLight.intensity = 1;
scene.add(pointLight);
可以通过修改光源光照的强度来查看强度为渲染效果的影响
pointLight.intensity = 1时
pointLight.intensity = 2.1时
感受完美
制造产生阴影的几个步骤,让球体和方块将阴影投影到地上,哪些物体投射阴影,哪些物体接受阴影
var pointColor = "#ffffff";
var spotLight = new THREE.SpotLight(pointColor);
spotLight.position.set(-40, 60, -10);
spotLight.castShadow = true;
spotLight.shadowCameraNear = 2;
spotLight.shadowCameraFar = 200;
spotLight.shadowCameraFov = 30;
spotLight.target = plane;//光照照向地面
spotLight.distance = 0;
spotLight.angle = 0.4;
scene.add(spotLight);
说到那个很好用的属性shadowCameraVisible=true,如果设置了那么效果将是这样的。能显示光源,光的角度大小,光源的distance等信息,这个对于调试设置等有很好的效果
也可以让光源的target只照射其中一个如方块
一个值得注意的是 有一个非常光亮的光束,离中心越远衰减地越快。可以使用小的exponent衰减值和小的angle值来创建同样的聚光效果。不过如果角度很小,可能会产生光线渲染失真。
另一个值得注意的是:如果看起来阴影有点模糊,可以增加shadowMapWidth和shadowMapHeight来配置。
距离很远的光,如太阳般,照射到地球上每一束光都是平行的。
shadowCameraBottom
前后左右上下的位置,参考正投影相机
var pointColor = "#ff5808";
var directionalLight = new THREE.DirectionalLight(pointColor);
directionalLight.position.set(-40, 60, -10);
directionalLight.castShadow = true;
directionalLight.shadowCameraNear = 2;
directionalLight.shadowCameraFar = 200;
directionalLight.shadowCameraLeft = -50;
directionalLight.shadowCameraRight = 50;
directionalLight.shadowCameraTop = 50;
directionalLight.shadowCameraBottom = -50;
directionalLight.distance = 0;
directionalLight.intensity = 0.5;
directionalLight.shadowMapHeight = 1024;
directionalLight.shadowMapWidth = 1024;
scene.add(directionalLight);