首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >半透明层内容的SCNMaterial显示为白色。

半透明层内容的SCNMaterial显示为白色。
EN

Stack Overflow用户
提问于 2017-08-09 22:15:06
回答 1查看 969关注 0票数 1

我正试图为我的SCNBox创建一个彩色边框和透明边框的材料。下面是我用来创建材料的代码:

代码语言:javascript
复制
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]

它工作很好,但中心部分是白色而不是透明的。我尝试了很多关于lot材料的透明特性和transparentModes的实验,但是由于我对3D渲染的理解有限,我无法让它工作。我在这里错过了什么?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-08-13 13:35:57

来自SCNMaterialProperty.contents上的Apples文档

SceneKit不能使用已经在其他地方显示的层(例如,UIView对象的支持层)。

所以我们需要自己创造一个新的图层:

代码语言:javascript
复制
// 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]

这应该会导致这样的结果:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45601458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档