2017-06-15 66 views
14

阴影模糊我添加一个节点,并尝试设置阴影与SceneKit模糊软阴影,在SceneKit

这里是我的光的配置,我也尝试设置shadowRadius

light = [SCNLight light]; 
light.type = SCNLightTypeDirectional; 
light.castsShadow = true; 
light.shadowMode = SCNShadowModeForward; 
light.shadowRadius = 5; 
light.shadowMapSize=CGSizeMake(4000, 4000); 
light.orthographicScale=25; 
light.zNear=1; 
light.zFar=1000; 

,但结果不是更柔软比我不设置shadowRadius 它在这里: enter image description here

我也尝试添加samplecount

light = [SCNLight light]; 
light.type = SCNLightTypeDirectional; 
light.castsShadow = true; 
light.shadowMode = SCNShadowModeForward; 
light.shadowRadius = 5; 
// add samplecount 
light.shadowSampleCount = 5; 
light.shadowMapSize=CGSizeMake(4000, 4000); 
light.orthographicScale=25; 
light.zNear=1; 
light.zFar=1000; 

结果看起来像以下 enter image description here

阴影似乎软但这个影子从节点的底部开始(Z坐标是0)。我花了很多时间只在节点边缘设置软阴影,而不是从底部开始。但没有结果。当添加两个节点跨越(不只是节点和几何形状SCNFloor)

我的问题是如何与方向上的光获得阴影模糊(软阴影)

这个问题也时有发生。

任何帮助将不胜感激!

回答

1

我真的可以用orthographicScale做阴影模糊。我不知道为什么,但这个伎俩对我有用。希望可以帮助别人

light.shadowMapSize=CGSizeMake(4000, 4000); 
light.orthographicScale=100; // bigger is softer 

我也改变shadowMapSize到更大的价值,并设置isJitteringEnabledantialiasingMode减少走样。

1

斯威夫特4 /的Xcode 9.2

我买了这些设置一个相当不错的结果:

light2.castsShadow = true 
light2.automaticallyAdjustsShadowProjection = true 
light2.maximumShadowDistance = 20.0 
light2.orthographicScale = 1 

light2.shadowMapSize = CGSize(width: 2048, height: 2048) 
light2.shadowMode = .forward 
light2.shadowSampleCount = 128 
light2.shadowRadius = 3 
light2.shadowBias = 32 

增加shadowRadius 12帮助了很多与我的模型,但我需要增加shadowSampleCountshadowBias不会得到文物。