2016-03-09 39 views
2

我有一个绘制球体的简单示例。我在位置(x,y,z)=(0,100,0)和(0,-100,0)(即在南半球和北半球)上增加了两盏灯。你可以看到this linkWebGL - 获取灯光的静态位置

我想阻止灯光跟随鼠标旋转,我看到了OpenGL的不同方法,但我不知道如何使用WebGL实现它。

下面的代码片段定义这2个灯:

// Lights for scene 
    var lights = []; 
    lights[0] = new THREE.PointLight(0xffffff, 1, 0); 
    lights[1] = new THREE.PointLight(0xffffff, 1, 0); 

    lights[0].position.set(0, 100, 0); 
    lights[1].position.set(0, -100, 0); 

    scene.add(lights[0]); 
    scene.add(lights[1]); 

回答

0

你应该灯光添加到摄像机,而不是场面。这样的灯光位置是相对于相机的:

camera.add(lights[0]) 
camera.add(lights[1]) 

,并确保你添加灯光之后相机添加到场景:

scene.add(camera) 
+0

看来灯带您的解决方案消失并且球体的颜色也被修改。你确定这是一个好的解决方案吗? – youpilat13

+0

在将灯光添加到场景后,您是否将相机添加到了场景中?这可能是这个问题(如在说:http://stackoverflow.com/questions/25740277/three-js-add-light-to-camera)。 (我更新了答案) – vabada

+0

谢谢,它的工作原理! – youpilat13