如何排除模型自身的阴影?

How to exclude model's shadows on itself?

我有一个 SCNLight,类型为 SCNLightTypeDirectional。渲染场景时,模型会在自身上投射阴影,这出乎我的意料。如何排除模型自身的阴影?

或者如何平滑阴影边缘?现在看起来很不自然。

场景是这样的:

好吧,我找到了一个简单的方法来实现这个,但丢失了一些 material 细节。

将 material 的光照模型更改为 SCNLightingModelConstant 并将模型从 SCNLight 的光照计算中排除。

1.设置灯光模型

SCNLightingModelConstant只考虑环境光来着色,所以我们需要环境光来保持模型可见。

model.geometry.materials.firstObject.lightingModelName = SCNLightingModelConstant;

2。设置模型和灯光的类别位掩码

model.categoryBitMask = 1;
directionalLight.categoryBitMask = ~1UL;

如果categoryBitMask的按位与结果为零,节点将不考虑光照,因此不再有自阴影。投射的阴影模型仍将保留在场景中。