Ios 具有半透明层内容的SCN材质显示为白色
我正在尝试为我的Ios 具有半透明层内容的SCN材质显示为白色,ios,scenekit,scnnode,scnmaterial,Ios,Scenekit,Scnnode,Scnmaterial,我正在尝试为我的SCNBox创建一种带有彩色边框和透明边的材质。以下是我用于创建材质的代码: class CubeSide: UIView { override func draw(_ rect: CGRect) { let path = UIBezierPath(rect: rect) UIColor.yellow.setStroke() path.stroke() } } let sideView = CubeSide(fr
SCNBox
创建一种带有彩色边框和透明边的材质。以下是我用于创建材质的代码:
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渲染的理解有限,我无法让它工作。我错过了什么
谢谢大家! 来自苹果公司的文档: SceneKit无法使用已在其他位置显示的图层(例如,UIView对象的背景图层) 因此,我们需要自己创建一个新层:
// 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]
这将导致如下结果:
如果UIView没有在其他地方显示,该怎么办?