Threejs:可见光聚光灯

时间:2014-01-23 15:58:45

标签: javascript three.js webgl light

在我目前的项目中,我需要制作一个可见的聚光灯,就像一个叫蝙蝠侠的聚光灯。我的意思是那个光锥,你可以在夜空中看到。 我没有任何图形或3D体验,我只是无法使光线可见。 如果你能告诉我这是怎么做的,或者给出一些建议,那就太好了。

以下是codepen的实验。 非常感谢。

P.S。我需要可见的整个圆锥体,而不仅仅是盒子的反射。

1 个答案:

答案 0 :(得分:2)

JSFiddle Demo of batsignal-type spotlight

由于许多原因,灯光(和阴影)可能很棘手。它们有很多参数,需要进行大量调整才能看起来正确。只是让光线显示出来可能有点反直觉,这就是为什么这行代码是你最好的朋友:

light.shadowMapVisible = true;

灯光对象不可见。如果你看一眼,你就不会看到任何东西。如果你想让天空中的太阳照亮你的场景,你必须创建光源太阳对象,如果你想要看到的东西。

让光线显现通常意味着提供光线可以照射的表面。在上面的例子中,该表面是围绕着我们的球体。在我们的例子中,我们还构建了一个黄色透明锥体来伪造光束。尝试在此锥体中添加纹理以获得更大的真实感。在现实生活中,这个锥体可以看作来自聚光灯的光线,反射出空气中的微小颗粒。在我们的3D世界中,除非我们将它们放在那里,否则没有可以反射的粒子,因此锥体。祝你好运!

提示:

  • 请记住,有很多种灯。有些人可以投下阴影,有些则不能。有些只影响某些材料。

  • 渲染器有一个名为" maxLights"默认为4。