Javascript 灯光问题(使用three.js)
我从blender导出了一个简单的室内场景。它有一个房间,天花板上有3个球体,里面有各自的光源。每个灯光本身都工作良好,但当我在场景中插入所有灯光时,只有一个灯光工作!有时与2人合作,但从不与其中3人合作。 以下是我的灯光代码:Javascript 灯光问题(使用three.js),javascript,three.js,Javascript,Three.js,我从blender导出了一个简单的室内场景。它有一个房间,天花板上有3个球体,里面有各自的光源。每个灯光本身都工作良好,但当我在场景中插入所有灯光时,只有一个灯光工作!有时与2人合作,但从不与其中3人合作。 以下是我的灯光代码: luz_sala1 = new THREE.PointLight(0xFFFFFF,0.5, 50.0); luz_sala1.position = new THREE.Vector3(16.14323,2.52331,13.93375); scene.add(luz_
luz_sala1 = new THREE.PointLight(0xFFFFFF,0.5, 50.0);
luz_sala1.position = new THREE.Vector3(16.14323,2.52331,13.93375);
scene.add(luz_sala1);
luz_sala2 = new THREE.PointLight(0xFFFFFF, 0.5, 50.0);
luz_sala2.position = new THREE.Vector3(27.70114,2.52331,-6.20571);
scene.add(luz_sala2);
luz_sala3 = new THREE.PointLight(0xFFFFFF, 0.5, 50.0);
luz_sala3.position = new THREE.Vector3(21.50580,3.10719,-27.82775);
scene.add(luz_sala3);
如果我将距离设置为0,效果很好,但我需要这些灯光只影响它们所在的区域。
我也尝试过使用THREE.Spotlight(0xFFFFFF,0.5,50.0,Math.PI,0),但结果相同。
当它们共享相同的距离时,看起来像是相互抵消了
请帮忙,这很让人困惑
编辑:另外,房间的另一部分有一些聚光灯模型(我有大约4个),但是当我将另外4个聚光灯添加到场景中时,我会遇到着色器编译错误。搜索问题后,我发现需要在渲染器中设置maxLights属性。我将其设置为10,但问题仍然存在,场景中的灯光不能超过4个。还有什么我能做的吗
编辑2:这里有一些图片。作为参考,“luz_sala1”是离电视较近的一个,“luz_sala2”是中间的一个,“luz_sala3”是较远的一个
这是一个与上述代码(所有3个灯光),除了0.8强度。
这是在2和3打开的情况下(注释为“scene.add(luz_sala1)”):
因此,正如您所看到的,两个点光源可以很好地协同工作,但对于三个点光源,它们似乎“相加”到第一个点光源?maxLight属性没有任何效果很可能是由于您的硬件、驱动程序或角度(将WebGL转换为Direct3D的库)在着色器中不支持足够的可变向量-每个灯光也需要一个和其他东西。这也可能是您的一般问题的背景 要拥有更多灯光,有三个选项:
另外值得一提的是,目前聚光灯只是向一个方向投射阴影的点光源。我在两台机器上进行了尝试,一台装有带ATI HD5850的Windows 7,另一台装有Windows XP(记不清该卡),两台机器上的情况都是一样的。我可以试着上传,但是代码太大了。我会很快发布一些图片。发布了2张图片。如果灯光是聚光灯而不是点光源,也会发生同样的情况。