我已经在ARKit中设置了阴影,但是结果并不令人满意,我们需要与野生动物园中的快速查看相同的阴影。请帮助我如何设置它。我们已经附上了两张图片。
代码
var light = SCNLight()
var lightNode = SCNNode()
light.castsShadow = true
light.automaticallyAdjustsShadowProjection = true
light.maximumShadowDistance = 20.0
light.orthographicScale = 1
light.type = .directional
light.shadowMapSize = CGSize(width: 2048, height: 2048)
light.shadowMode = .deferred
light.shadowSampleCount = 128
light.shadowRadius = 3
light.shadowBias = 32
light.zNear=1;
light.zFar=1000;
light.shadowColor = UIColor.black.withAlphaComponent(0.36)
lightNode.light = light2
lightNode.eulerAngles = SCNVector3(-Float.pi / 2, 0, 0)
self.sceneView.scene.rootNode.addChildNode(lightNode)
提供阴影偏移并增加阴影半径。玩这些值以获得所需的输出。
light.shadowOffset = CGSize(width: 1, height: 1) //controls spread
light.shadowOpacity = 0.5 // controls opacity
light.shadowRadius = 5.0 // controls blur level
如果场景中的阴影需要更模糊,请为shadowRadius
实例属性使用更大的值:
var shadowRadius: CGFloat { get set }
// or
spotLight.shadowRadius = 20.0
Apple文档说:
shadowRadius
是一个数字,指定光线投射的阴影边缘周围的模糊量。 SceneKit通过将几何图形的轮廓渲染为2D阴影贴图,然后使用来自阴影贴图的多个加权样本来确定渲染场景中每个像素的阴影强度,从而生成软边阴影。此属性控制阴影贴图采样的半径。较低的数字会导致阴影具有清晰定义的边缘像素,较高的数字会导致阴影模糊。