SceneKit中的软阴影,阴影模糊(所需结果与ARKit Quickview阴影相同)

问题描述 投票:0回答:2

我已经在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)

ARQuickviewOur App Result

ios swift scenekit arkit
2个回答
0
投票

提供阴影偏移并增加阴影半径。玩这些值以获得所需的输出。

light.shadowOffset = CGSize(width: 1, height: 1) //controls spread
light.shadowOpacity = 0.5  // controls opacity
light.shadowRadius = 5.0 // controls blur level

0
投票

如果场景中的阴影需要更模糊,请为shadowRadius实例属性使用更大的值:

var shadowRadius: CGFloat { get set }

// or

spotLight.shadowRadius = 20.0

Apple文档说:

shadowRadius是一个数字,指定光线投射的阴影边缘周围的模糊量。 SceneKit通过将几何图形的轮廓渲染为2D阴影贴图,然后使用来自阴影贴图的多个加权样本来确定渲染场景中每个像素的阴影强度,从而生成软边阴影。此属性控制阴影贴图采样的半径。较低的数字会导致阴影具有清晰定义的边缘像素,较高的数字会导致阴影模糊

© www.soinside.com 2019 - 2024. All rights reserved.