PointLight不会点亮任何东西

时间:2015-04-02 14:19:55

标签: javascript three.js

编辑: 现在我有两个使用第一个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是否已正确应用于场景?

2 个答案:

答案 0 :(得分:3)

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

修改

此外,THREE.PointLight()根据http://threejs.org/docs/#Reference/Lights/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);

答案 1 :(得分:1)

MeshBasicMaterial不受灯光影响,请使用gaitat建议的其他材质类型。

我常常发现光太小而不能被注意到,或者它被放置在我想要照亮的网格太远的地方。也许这也是你的情况。