three.js - 使用 Three.js 实现真实光照(阳光)?

标签 three.js lighting

我正在尝试使用 Three.js 创建一个小型第一人称游戏,但我在光照方面遇到了问题。基本上我想模拟太阳并让它旋转,将光线转换到所有物体上。我目前使用的是 THREE.DirectionalLight,它只照亮一个方向,因此立方体的侧面保持黑色/黑暗。

我是否必须使用多个灯才能照亮所有东西?或者我可以以某种方式反射地面/物体上的光吗?

最佳答案

是的,您必须使用多个灯光来实现此目的,伪造反射光。计算真实反射光不是内置的(并且计算非常复杂/昂贵)。您有多种选择。

第二个定向光可能始终处于与太阳相反的位置和方向。

保持恒定的半球光。半球照明获得天空颜色、底色和强度,并为您的照明增添了额外的深度。

//                                    sky color ground color intensity 
hemiLight = new THREE.HemisphereLight( 0x0000ff, 0x00ff00, 0.6 ); 

这是一个工作示例 https://threejs.org/examples/#webgl_lights_hemisphere

您可以使用不同灯光的任意组合,但要小心,这会影响性能。

还值得一提的是半朗伯着色,这是通过在 Material 中将wrapAround属性设置为true来启用的。这会给黑色带来更好的衰减,从而减少刺眼的照明。更多的中间色调和更少的黑色。

关于three.js - 使用 Three.js 实现真实光照(阳光)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15478093/

相关文章:

c++ - 多边形上的 OpenGL 光照

opengl - 在球体内部照明?

unity3d - Threejs从右手系统到左手系统的旋转unity3d

javascript - MeshPhongMaterial没有出现

javascript - Three.js 鼠标悬停在对象上而不是背景上

c++ - OpenGL 漫反射着色器,对象不显示

c++ - 光影在 opengl 和 c++ 中不起作用

javascript - 如何在 three.js 中使用反射?

javascript - Three.js之光不是一成不变的

opengl - 使用 openGL