一、问题
打光的时候总是很随机,要不就是场景全是黑的,要不就是打完光之后总是有的墙一整个照不到,然后黑黑的一面墙,虽然threejs中文文档里面有告诉我们具体可以打哪几种光,但是并没有告诉我们如何点亮一整个房间。
二、问题具体描述
原:
用我的方法打完光之后:
房间里面的每一个面都显示出来了,没有黑的面了。
三、解决方法
主要思路:给三维坐标系的每个象限都打上光,那么整个场景就应该都被点亮了。
下面是具体的打光代码,不需要环境光,直接设置我的光就可以看清场景里面的每一个角落了:
// 添加定向光
var directionalLight0 = new THREE.DirectionalLight(0xffffff, 2); // 颜色和强度
directionalLight0.position.set(1, 1, 1); // 光源位置
this.scene.add(directionalLight0);
var directionalLight1 = new THREE.DirectionalLight(0xffffff, 2); // 颜色和强度
directionalLight1.position.set(-1, 1, 1); // 光源位置
this.scene.add(directionalLight1);
var directionalLight2 = new THREE.DirectionalLight(0xffffff, 2); // 颜色和强度
directionalLight2.position.set(-1, 1, -1); // 光源位置
this.scene.add(directionalLight2);
var directionalLight3 = new THREE.DirectionalLight(0xffffff, 2); // 颜色和强度
directionalLight3.position.set(1, 1, -1); // 光源位置
this.scene.add(directionalLight3);
var directionalLight4 = new THREE.DirectionalLight(0xffffff, 2); // 颜色和强度
directionalLight4.position.set(1, -1, 1); // 光源位置
this.scene.add(directionalLight4);
var directionalLight5 = new THREE.DirectionalLight(0xffffff, 2); // 颜色和强度
directionalLight5.position.set(-1, -1, 1); // 光源位置
this.scene.add(directionalLight5);
var directionalLight6 = new THREE.DirectionalLight(0xffffff, 2); // 颜色和强度
directionalLight6.position.set(1, -1, -1); // 光源位置
this.scene.add(directionalLight6);
var directionalLight7 = new THREE.DirectionalLight(0xffffff, 2); // 颜色和强度
directionalLight7.position.set(-1, -1, -1); // 光源位置
this.scene.add(directionalLight7);