如何确保灯不会照亮角落后面的墙壁?
How to ensure that a light doesn't lit walls behind corner?
美好的一天,我正在使用 Babylon JS 玩 webgl,我需要有关灯光的建议。我创建了一个测试洞穴,并在一面墙上放了一个手电筒 (BABYLON.PointLight)。但是灯光也照亮了角落后面的墙壁。见截图:
var light = new BABYLON.PointLight("light1", new BABYLON.Vector3(x, y, z), scene);
light.intensity = 0.5
light.range = 50;
这个洞穴不是一个单一的网格,而是由单独的矩形面组成的。我怎样才能确保被点亮的墙角后面的墙没有被点亮?
提前谢谢你。 Vojtech
灯光仅根据从像素到灯光的方向、像素的法线(表面角度)和观察方向为像素着色。因此,光本身不考虑光源是否实际到达像素,必须通过阴影算法单独计算。
正如所建议的那样,您可以为灯光添加阴影。显然,点光源的阴影已在 v2.3 中引入(参见 http://www.html5gamedevs.com/topic/18285-point-light-shadow-mapping/)。另一件可以尝试的事情是将范围设置为较低的数字,这样光线就不会到达后墙。 yourLight.range = 0.5
之类的东西可能会起作用。
要记住的一件事是场景中最多只能有 4 个灯(这是为了确保性能的限制)。
美好的一天,我正在使用 Babylon JS 玩 webgl,我需要有关灯光的建议。我创建了一个测试洞穴,并在一面墙上放了一个手电筒 (BABYLON.PointLight)。但是灯光也照亮了角落后面的墙壁。见截图:
var light = new BABYLON.PointLight("light1", new BABYLON.Vector3(x, y, z), scene);
light.intensity = 0.5
light.range = 50;
这个洞穴不是一个单一的网格,而是由单独的矩形面组成的。我怎样才能确保被点亮的墙角后面的墙没有被点亮?
提前谢谢你。 Vojtech
灯光仅根据从像素到灯光的方向、像素的法线(表面角度)和观察方向为像素着色。因此,光本身不考虑光源是否实际到达像素,必须通过阴影算法单独计算。
正如所建议的那样,您可以为灯光添加阴影。显然,点光源的阴影已在 v2.3 中引入(参见 http://www.html5gamedevs.com/topic/18285-point-light-shadow-mapping/)。另一件可以尝试的事情是将范围设置为较低的数字,这样光线就不会到达后墙。 yourLight.range = 0.5
之类的东西可能会起作用。
要记住的一件事是场景中最多只能有 4 个灯(这是为了确保性能的限制)。