查看: 2680|回复: 10

大场景阴影实现

[复制链接]

该用户从未签到

发表于 2013-1-11 16:54:13 | 显示全部楼层 |阅读模式
本帖最后由 sumingnan 于 2013-1-15 17:33 编辑

大家好,我现在就是想在大场景中实现阴影,比如说地图中实现阴影,我是用OpenGL ES做的,阴影算法是shadow mapping做的,现在一个问题就是,如果光源固定在一个位置的话,就只能得到一部分场景的阴影,如果光源跟着相机移动的话,阴影切换比较明显,效果不大明显,所以诸位大侠有什么好的方法。谢谢。

光源固定

光源固定

该用户从未签到

发表于 2013-1-14 09:47:39 | 显示全部楼层
如果光源固定在一个位置的话,就只能得到一部分场景的阴影,如果光源跟着相机移动的话,阴影切换比较明显
我无法理解您这句话,shadow mapping这个方法很成熟了,是否您自己的实现存在问题,osgShadow库可能不能用于GLES,不过您还是可以参考一下其中的做法

该用户从未签到

 楼主| 发表于 2013-1-15 17:31:15 | 显示全部楼层
首先谢谢array,我的意思是说,首先我场景是一个地图,场景比较大,如果我把光源固定在一个位置的话,就只能得到离光源较近的地方有阴影,较远就得不到阴影(是否在光源位置绘制深度图的时候投影矩阵没有设置好?),后来我是用光源跟随相机这样子,在路径导航的时候,光源会跟着相机动,这样在当前窗口的模型都有阴影,但是随着的问题是在路径导航的时候会有明显的阴影移动(光源动造成阴影动),我不知道是不是由于我的那个MVP矩阵没有设置好?我就是使用shadow mapping算法来实现的。
谢谢。

该用户从未签到

发表于 2013-1-16 09:54:14 | 显示全部楼层
您的shadow map真的是正确的么?场景比较大的时候,sm会因为分辨率的问题而变得非常模糊和锯齿化,而不是近处有远处没有,那样我更相信是您的light space matrix计算有问题或者没有考虑实际的远近平面;处理大场景必须考虑csm或者pssm的方案,单纯一个shadow map是远远不够的

该用户从未签到

发表于 2013-1-16 09:55:21 | 显示全部楼层
另外阴影边缘的锯齿可以通过最简单的pcf来改善,或者高级一点就是vsm和esm的方法来处理

该用户从未签到

 楼主| 发表于 2013-1-16 13:59:28 | 显示全部楼层
我也是这样觉得的,应该是我的矩阵有问题,大场景确实需要CSM等,不然很难实现比较理想的阴影算法。。谢谢array。

该用户从未签到

 楼主| 发表于 2013-1-16 15:15:06 | 显示全部楼层
那如果设置这些light space matrix矩阵以及远近面,是根据哪些参数来设置的呢。。

该用户从未签到

发表于 2013-1-22 11:01:22 | 显示全部楼层
当然是根据您的光照方向和场景被当前split段裁减后的大小来设置了。。。

该用户从未签到

 楼主| 发表于 2013-1-22 11:30:27 | 显示全部楼层
您有实现过opengl es 2.0 + csm算法吗。。现在遇到一些问题没有想通。。。

该用户从未签到

发表于 2013-1-22 13:27:52 | 显示全部楼层
没有,不过我认为没有什么特别的难点存在

该用户从未签到

 楼主| 发表于 2013-1-22 13:38:00 | 显示全部楼层
ok ,我自己看看啊。。谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表