关于3.0 ShadowMap的疑问

问题:shadowMap阴影错误。
/**
*我平时做的项目都很小,用CCC2D 2.44。H5展示类。一个项目两星期的样子。
*3.0很多新的特性吸引我,所以新项目开始用3.0。
*旧框架代码移植无痛,(吐槽一下一些接口的莫名改动,比如Vec2 的mag改成了length ),但是这个shadowMap我是怎么弄都弄不好,无奈本人3D小白。
**/

搞了好久,还是没搞明白这个shadowMap,弄成这样。shadowmap.zip (8.8 KB)

估摸是shadowMap的大小或者镜头之类的参数有问题,阴影总会有奇怪的错误。
逛了好久论坛,QQ群,都找不到解决方案,发帖求助。@panda @jare

1赞

:top::top::top::top::top:

你好,感谢您使用3.0版本的引擎。

我下载了一下测试场景,首先在 plane 组件的设置中,需要将 ReceiveShadow 开关设置为 ON ,plane 接收产生的阴影效果。


其次,除了这个问题外。为什么看起来还是感觉不太对呢?

问题出在这个蓝色的 Spot Light 上。在现实世界中理灯很近的地方不产生阴影,同理引擎中也是这么渲染的。

我们稍微将蓝色的 Spot Light 向后离开一点点:

  • 此时蓝色的聚光灯阴影没有因为距离过近而产生畸变。
  • 红色灯光产生的阴影,仍在蓝色灯光最亮的范围内,所以还是没有红色灯光产生的阴影效果

然后,再将蓝色的 Spot Light 向后移动,使最亮的部分离开阴影产生的范围:


运行预览效果:

2021-02-22_15-28-49
感谢
不过我还是有问题,聚光灯阴影,好像是有一个梯形范围,超出梯形范围阴影就不能显示了?

聚光灯的阴影是这样的。超出灯光效果范围就不产生阴影了



我比较在意左右两边的阴影,很容易就碰到边界了。
现在的灯光阴影范围感觉是图1,能不能做成图2这样的?

可以如图二所示。


图 1 到图 2 需要两步操作:

  • 缩小 Spot Light 中 SpotAngle 大小
  • 将 Spot Light 节点的位置,向光源方向推进

或者:

  • 改变接收平面的大小

我明白了,感谢帮助