gpt4 book ai didi

swift - 为什么我的阴影在 SceneKit 中像素化/断断续续?

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:31 32 4
gpt4 key购买 nike

我无法在 SceneKit 中获得平滑的阴影。您将在下面找到将灯光和图片添加到我的场景的代码。我圈出了像素化的区域。

即使是 SceneKit 提供的基本几何图形也无法正确着色。

有谁知道我该如何解决这个问题?

谢谢!

        let directionalLight = SCNNode()
directionalLight.light = SCNLight()
directionalLight.light?.type = .directional
directionalLight.light?.castsShadow = true
directionalLight.eulerAngles = SCNVector3(0, -toRadians(angle: 45), -toRadians(angle: 60))
self.scene.rootNode.addChildNode(directionalLight)
let ambientLight = SCNNode()
ambientLight.light = SCNLight()
ambientLight.light?.type = .ambient
ambientLight.light?.color = UIColor.darkGray
ambientLight.light?.intensity = 5000
self.scene.rootNode.addChildNode(ambientLight)

See Picture

最佳答案

SceneKit 使用一种称为“阴影映射”的技术来渲染阴影。这些效果对于这种技术来说是正常的,但在您的情况下有点极端。

有很多关于阴影贴图以及如何从中获得最佳结果的信息,如果您想了解更多,值得在 Google 上查询

在你的情况下,我认为首先要看的是 position您的 directionalLight 节点和 shadowMapSize其中的 SCNLight

为什么定向光的位置?SceneKit 将从灯光角度渲染场景的深度图像,然后使用此图像计算最终渲染上的像素是否在阴影中。如果光源位置远离您的场景,那么场景将只占据此阴影贴图的一小部分。

另一种确保您的场景在阴影贴图 上有大量可用像素的方法是使用shadowMapSize 属性简单地增加阴影贴图大小。这将增加渲染时间和 GPU 内存使用量,因此请尝试在此处找到“最佳位置”。

关于swift - 为什么我的阴影在 SceneKit 中像素化/断断续续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53965822/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com