编辑: 现在我有两个使用第一个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
是否已正确应用于场景?
答案 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建议的其他材质类型。
我常常发现光太小而不能被注意到,或者它被放置在我想要照亮的网格太远的地方。也许这也是你的情况。