1

考虑这个简单的房子 3d 模型。它有一个简单的立方体展开,应用了一些平铺纹理。

在此处输入图像描述

当我在它前面添加点光源时,房子看起来很正常,但是周围的地面(它是大型地形网格的一部分)没有被照亮。

在此处输入图像描述

在房屋网格内部,照明应用很有趣,以某种方式与顶点相关,而不是正确计算和添加颜色。请注意光照分布不均匀,但您实际上可以在那里看到一个多边形:

在此处输入图像描述 在此处输入图像描述

我想这就是为什么巨大的地形网格忽略了光的原因,因为多边形非常巨大,只有几个顶点。似乎灯光需要附近有一个顶点才能显示出来。

这是没有灯光的巨大地形网格的一部分: 在此处输入图像描述

我加了一个灯: 在此处输入图像描述

请注意灯光位置如何不直接靠近顶点: 在此处输入图像描述

当我将灯光靠近顶点时,效果突然变得超级强烈 在此处输入图像描述

当我把灯放在中间时几乎没有效果 在此处输入图像描述

无论模型的大小和它的顶点数量如何,我怎样才能让我的模型到处都有光?

4

2 回答 2

2

您必须停止进行逐顶点照明并开始进行逐片段照明。您需要一个片段着色器来获取点的位置和法线,以及光的位置/方向,并执行各种光照计算。

于 2013-08-24T23:54:38.033 回答
2

感谢@WestLangley,最终找到了它

我之前使用的是 MeshLambertMaterial,现在我切换到 PhongMaterial 并设置material.perPixel为 true。

material.needsUpdate如果您要动态添加灯光,也不要忘记设置为 true!(就像我的情况一样)

于 2013-08-25T09:12:02.637 回答