Cocos3D 1.2.0 shadowMap产生的阴影会出现穿透效果?

如下图:
角色模型A 产生光照阴影,投射到 几个模型B(阴影投射方式为OFF)上,出现的效果是:
不仅模型B上会出现阴影,地面也出现了阴影

感觉不是很合理,为何会出现2个阴影效果?
是否有办法,在不开启模型B的阴影投射方式的情况下,把地面的阴影隐藏??

您好,非常感谢您使用Cocos3D v1.2.0引擎,关于您的疑问我来帮您回答。

  • 基于真实的物理渲染,物体 A ,物体 B都会产生阴影,且物体 A 会 B上产生阴影,物体 A ,B 会在地面上产生阴影,在真实的情况下地面上会看到小人 A,跟 B物体混合后的阴影。
  • 当你关闭了 B 物体投射阴影,那么就会出现反真实现象的效果–B 物体,地面都产生了同一个阴影,看上去类似穿透了。

问题解决

  • 地面模型可以关闭阴影接收。ReceiveShadow = OFF 时,就能获取到你想要的效果

关键是 如果把地面设置为 ReceiveShadow = OFF,
那么地面的阴影都会消失,如下图:

不可以只让阴影c 消失,阴影a跟b 存在吗?

既然模型B上面都产生了投影,为啥会出现穿透,跟真实物理渲染 相悖把,还是说,只能通过 把 模型B的(阴影投射方式改为ON)才能解决。

说下关闭 模型B 阴影投射方式的原因把,就是想减少 开启阴影 而导致的面数,所以 整个游戏当中,所以我们只开启 角色模型A的实时阴影。

一般来说B的阴影选项要么都开要么就都关掉,技术上实现你这个需求肯定是不太好弄的。
如果你对摄像机还有光线的角度没有要求的话,可以考虑让光线和摄像机方向在水平面的夹角小一点,这样是可以做到看不到阴影C的要求的。

提供一个demo方便官方修复