如何排除模型自身的阴影?
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
的按位与结果为零,节点将不考虑光照,因此不再有自阴影。投射的阴影模型仍将保留在场景中。
我有一个 SCNLight
,类型为 SCNLightTypeDirectional
。渲染场景时,模型会在自身上投射阴影,这出乎我的意料。如何排除模型自身的阴影?
或者如何平滑阴影边缘?现在看起来很不自然。
场景是这样的:
好吧,我找到了一个简单的方法来实现这个,但丢失了一些 material 细节。
将 material 的光照模型更改为 SCNLightingModelConstant
并将模型从 SCNLight
的光照计算中排除。
1.设置灯光模型
SCNLightingModelConstant
只考虑环境光来着色,所以我们需要环境光来保持模型可见。
model.geometry.materials.firstObject.lightingModelName = SCNLightingModelConstant;
2。设置模型和灯光的类别位掩码
model.categoryBitMask = 1;
directionalLight.categoryBitMask = ~1UL;
如果categoryBitMask
的按位与结果为零,节点将不考虑光照,因此不再有自阴影。投射的阴影模型仍将保留在场景中。