gpt4 book ai didi

ios - 向具有清晰背景的 SCNPlane 添加阴影的问题

转载 作者:行者123 更新时间:2023-12-01 16:20:21 25 4
gpt4 key购买 nike

我正在尝试在 SCNPlane 上添加阴影,一切正常,但我无法使 SCNPlane 透明以仅显示阴影而不显示白色背景。这是代码:

        let flourPlane = SCNPlane()
let groundPlane = SCNNode()


let clearMaterial = SCNMaterial()
clearMaterial.lightingModel = .constant
//clearMaterial.colorBufferWriteMask = []
clearMaterial.writesToDepthBuffer = true
clearMaterial.transparencyMode = .default

flourPlane.materials = [clearMaterial]

groundPlane.scale = SCNVector3(200, 200, 200)
groundPlane.geometry = flourPlane
groundPlane.castsShadow = false
groundPlane.eulerAngles = SCNVector3Make(-Float.pi/2, 0, 0)
groundPlane.position = SCNVector3(x: 0.0, y: shadowY, z: 0.0)
node.addChildNode(groundPlane)

// Create a ambient light
let ambientLight = SCNNode()
ambientLight.light = SCNLight()
ambientLight.light?.shadowMode = .deferred
ambientLight.light?.color = UIColor.white
ambientLight.light?.type = SCNLight.LightType.ambient
ambientLight.position = SCNVector3(x: 0,y: 5,z: 0)

// Create a directional light node with shadow
let myNode = SCNNode()
myNode.light = SCNLight()
myNode.light?.type = .directional
myNode.light?.castsShadow = true
myNode.light?.automaticallyAdjustsShadowProjection = true
myNode.light?.shadowSampleCount = 80
myNode.light?.shadowBias = 1
myNode.light?.orthographicScale = 1
myNode.light?.shadowMode = .deferred
myNode.light?.shadowMapSize = CGSize(width: 2048, height: 2048)
myNode.light?.shadowColor = UIColor.black.withAlphaComponent(0.5)
myNode.light?.shadowRadius = 10.0
myNode.eulerAngles = SCNVector3Make(-Float.pi/2, 0, 0)
node.addChildNode(ambientLight)
node.addChildNode(myNode)

当我添加 clearMaterial.colorBufferWriteMask = []影子消失!如何创建透明 Material 以仅显示阴影。

enter image description here

白色区域是 SCNPlane,红色是背景。

最佳答案

您可以将 Material “颜色”设置为 .clear,如下所示:

extension SCNMaterial {
convenience init(color: UIColor) {
self.init()
diffuse.contents = color
}
convenience init(image: UIImage) {
self.init()
diffuse.contents = image
}
}

let clearColor = SCNMaterial(color: .clear)
flourPlane.materials = [clearColor]

关于ios - 向具有清晰背景的 SCNPlane 添加阴影的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61676888/

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