编辑:
现在,我有两个使用第一个MeshBasicMaterial和第二个MeshLambertMaterial的准系统示例:

PointLight_sucks__MeshBasicMaterial.html

PointLight_sucks__MeshLambertMaterial.html

两者都使用PointLight的光源,但是LambertMaterial的几何图形并没有完全照亮(但屏幕上似乎有小的闪烁点?)。



我有一个用MeshBasicMaterial制成的几何。它以某种方式照亮了自己:



我也有一个PointLight

light = new THREE.PointLight( 0xaaaaaa );
light.position.set = new THREE.Vector3(-400, 0, 0);
makeScene.scene.add( light );


但对现场没有影响。我希望场景仅由PointLight照明。

我为我的几何体尝试了多种其他材料,例如MeshPhongMaterial,MeshNormalMaterial,MeshLambertMaterial和MeshFaceMaterial。

这就是我应用MeshBasicMaterial的方法:

material = new THREE.MeshBasicMaterial( { map: texture } );
mesh = new THREE.Mesh(aGeometry, material);


我怀疑我的PointLight可能有问题。如何验证PointLight是否正确应用于场景?

最佳答案

THREE.MeshBasicMaterial()不受光线影响。将其更改为THREE.MeshLambertMaterial()THREE.MeshPhongMaterial()

编辑:

另外,根据http://threejs.org/docs/#Reference/Lights/PointLightTHREE.PointLight()不会影响THREE.MeshBasicMaterial()

根据PointLight()以及与MeshLambertMaterial()的交互,您的代码中有一个错误:
线

light1.position.set = new THREE.Vector3(0, -120, 150);
light2.position.set = new THREE.Vector3(0,  120, 150);


应该

light1.position.set (0, -120, 150);
light2.position.set (0,  120, 150);

关于javascript - PointLight不会照亮任何东西,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29415263/

10-08 21:36