如何仅将定向光应用于 Three.js 中的有限区域?

Posted

技术标签:

【中文标题】如何仅将定向光应用于 Three.js 中的有限区域?【英文标题】:How apply directional light only for a limited zone in Three.js? 【发布时间】:2021-11-10 21:48:29 【问题描述】:

我想以与定向光对整个场景的作用类似的方式照亮玩家周围的一切。因为我在做一个俯视图项目,我应该能够看到地面上的一个椭圆形光

我尝试通过使用 2 层来实现该效果:一层用于除待照明区域之外的所有内容,另一层包含待照明区域和额外的光源:

new three.SpotLight(0xffffff, .6, 0, Math.PI / 3, 0, 0);

光总是在玩家的顶部,玩家就是它的目标

有效,但有两个问题:它不是定向光,所以我无法在不同的脸上实现那些好看的阴影;并且光线不会一直在做椭圆:

当灯光投射到导入的模型上时,它确实是玩家周围地面上的一个很好的椭圆,但对于以编程方式制作的几何图形,情况似乎并非如此。我的猜测是,一张脸只能从光源应用 1 种颜色,但是使几何图形更复杂会在适当的光照计算之上增加额外的开销

我在想是否可以将定向光限制在球体内

【问题讨论】:

【参考方案1】:

我认为你可以使用图层:https://threejs.org/docs/#api/en/core/Layers

另外,请尝试使用来自 HDR(检查 PMREM 生成器)的灯光,它可以提供很好的效果,您可以将其与灯光相结合,让场景看起来更好。

【讨论】:

以上是关于如何仅将定向光应用于 Three.js 中的有限区域?的主要内容,如果未能解决你的问题,请参考以下文章

循环中的对象不会在Three.js的整个lopop上投射阴影

如何仅将加载状态应用于 livewire 中的特定组件

Wordpress:如何仅将 widget_title 过滤器应用于某个侧边栏中的小部件?

Three.js-仅渲染场景背景,但不渲染几何图形

Three.js 中的 BoxBufferGeometry 与 BoxGeometry 有啥区别?

仅将样式应用于可编辑内容中的选定文本 <p>