-1

我创建了一个带高度的 THREE.PlaneGeometry,在最高点找到一个 THREE.PointLight,但这会照亮从该点看不到的区域。为什么?我只想要从一个点看到的区域的光。

4

1 回答 1

0

默认情况下,表面上任何给定点的外观都是使用灯光、它们的属性,当然还有材质属性来计算的——它不考虑场景的其余部分,因为这在计算上会非常昂贵。各种光线追踪渲染器都可以做到这一点,但它们真的很慢,而且这不是 WebGL 和 Three.js 的工作方式。

你想要的是阴影。Three.js 能够使用 Shadow Map 方法渲染阴影。在 net 和 Three.js 示例文件夹中都有各种使用阴影贴图的示例。

不过要提醒一句,如果你没有很好地掌握基础知识,那么让阴影很好地工作可能会很困难——你可能需要做一些学习。如果没有正确配置和微调,阴影会减慢您的应用程序(特别是有许多灯光)并且看起来很丑。另外我认为阴影贴图只支持 SpotLight 和 DirectionalLight,PointLights 比较棘手。

于 2013-02-26T19:53:22.367 回答