gpt4 book ai didi

ios - 具有半透明图层内容的 SCNMaterial 显示为白色

转载 作者:行者123 更新时间:2023-11-29 00:14:32 25 4
gpt4 key购买 nike

我正在尝试为我的 SCNBox 创建一个带有彩色边框和透明边的 Material 。这是我用于创建 Material 的代码:

class CubeSide: UIView {
override func draw(_ rect: CGRect) {
let path = UIBezierPath(rect: rect)

UIColor.yellow.setStroke()
path.stroke()
}
}

let sideView = CubeSide(frame: rect)
sideView.backgroundColor = UIColor.clear

let material = SCNMaterial()
material.diffuse.contents = sideView

material.isDoubleSided = true
box.materials = [material]

它工作正常,但中心部分是白色而不是透明的。我用 SCNMaterial 的透明属性和透明模式尝试了很多实验,但由于我对 3D 渲染的理解有限,我无法让它工作。我在这里缺少什么?

谢谢!

最佳答案

来自 SCNMaterialProperty.contents 上的苹果文档:

SceneKit cannot use a layer that is already being displayed elsewhere (for example, the backing layer of a UIView object).

所以我们需要自己新建一个图层:

// Create the geometry
let box = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0)

// Create the layer
let layer = CALayer()
layer.frame = CGRect(x: 0, y: 0, width: 1000, height: 1000)
layer.borderColor = UIColor.red.cgColor
layer.borderWidth = 10

// Create a material from the layer and assign it
let material = SCNMaterial()
material.diffuse.contents = layer
material.isDoubleSided = true
box.materials = [material]

结果应该是这样的:

enter image description here

关于ios - 具有半透明图层内容的 SCNMaterial 显示为白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45601458/

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