环境阴影侧面会丢失三维阴影/照明

时间:2010-12-28 18:26:36

标签: opengl 3d shader lighting

你们如何处理3D游戏中的阴影?我有一个定向光源,遮住了立方体制成的树的一面。剩下的3个侧面都只有环境阴影。因此,当观察两个环境阴影侧时,3d效果会丢失。我错过了什么吗?我是否应该将距离光源最远的一侧遮挡更暗?我试着看着辐射3,它看起来有点像他们所做的但是Minecraft似乎遮住了一个草墩,两个相对的两侧是光线,剩下的两个相对的两侧是黑暗的,这样的效果是两个方向灯有两个方向灯阴影侧和阴影侧的环境光。

3 个答案:

答案 0 :(得分:1)

听起来你的光源当前是轴对齐的(例如,有方向:x,y,0或0,y,z)。这将完全照亮树木面向光线的一侧,而不是照亮其他光线。你可以做的一件事就是稍微移动光线(通过在x或z上添加一个0来表示)。这将意味着两个面被不同的量点亮(假设0增加到介于0和x / z值之间的某个位置)。然后你只有两个不亮的脸。如有必要,第二盏灯将使它们不那么相似。

答案 1 :(得分:1)

使用立方体制作的物体,可以保证物体的一侧将处于黑暗中。使用环境光,你会稍微照亮它,但边缘仍然没有阴影。您可以使用以下几种选项:

  1. 使用立方体的纹理来帮助显示立方体的形状
  2. 多次通过,从镜面反射光线(价格昂贵!)
  3. 制作第二个光源(虽然这可能看起来非常不自然)
  4. 听起来你正在做的事情应该非常简单,所以我说你当前的实现似乎很令人满意。

答案 2 :(得分:0)

首先,尝试调用glLightModeli将GL_LIGHT_MODEL_TWO_SIDE设置为GL_TRUE。