无法改变SCNCone的颜色 - Scenekit

时间:2016-12-28 04:38:29

标签: swift scenekit

我有一个'附加节点',它有2个子节点,它们是Blender模型。我已将第三个节点添加到此附加节点,即SCNCone。出于某种原因,我不能改变锥形节点的颜色,只能改变透明度。我似乎无法看到代码有任何问题,但在运行期间,无论我将其设置为什么颜色,圆锥总是黑色。

let coneGeo = SCNCone(topRadius: 0.1, bottomRadius: 0.7, height: 4)
let coneMaterial = SCNMaterial()

coneMaterial.diffuse.contents = UIColor(red: 255.0/255.0, green: 108.0/255.0, blue: 91.0/255.0, alpha: 0.2)
coneGeo.materials = [coneMaterial]

let coneNode = SCNNode(geometry: coneGeo)
coneNode.position = SCNVector3(0, -1.5, 0)
coneNode.name = "coneNode"

AttachNode.addChildNode(coneNode)

2 个答案:

答案 0 :(得分:1)

coneMaterial.diffuse.contents = UIColor(red: 255.0/255.0, green: 108.0/255.0, blue: 91.0/255.0, alpha: 0.2)替换为coneGeo.geometry?.firstMaterial?.diffuse.contents.diffuse.contents = UIColor(red: 255.0/255.0, green: 108.0/255.0, blue: 91.0/255.0, alpha: 0.2)。您不必在没有几何体的情况下更改圆锥体的材质颜色,而是必须通过它的几何参数来访问它的材质颜色。

答案 1 :(得分:0)

coneGeo.materials = [coneMaterial]

这也有效。我通过将锥形节点添加到空场景来测试您的代码。 我只是一个黑屏。

但如果我将alpha值更改为0.5,那就是我得到的。

enter image description here

代码。

    override func viewDidLoad()
    {
        super.viewDidLoad()

        // create a new scene
        let scene = SCNScene()

        let coneGeo = SCNCone(topRadius: 0.1, bottomRadius: 0.7, height: 4)
        let coneMaterial = SCNMaterial()

        coneMaterial.diffuse.contents = UIColor(red: 255.0 / 255.0,
                                                green: 108.0 / 255.0,
                                                blue: 91.0 / 255.0, alpha: 0.5)
        coneGeo.materials = [coneMaterial]

        let coneNode = SCNNode(geometry
                                   : coneGeo)
        coneNode.position = SCNVector3(0, -1.5, 0)
        coneNode.name = "coneNode"

        scene.rootNode.addChildNode(coneNode)

        // retrieve the SCNView
        let scnView = self.view as! SCNView

        // set the scene to the view
        scnView.scene = scene

        // allows the user to manipulate the camera
        scnView.allowsCameraControl = true

        // show statistics such as fps and timing information
        scnView.showsStatistics = true

        // configure the view
        scnView.backgroundColor = UIColor.black
    }

所以我想说,检查UIColor(red: 255.0/255.0, green: 108.0/255.0, blue: 91.0/255.0, alpha: 0.2)

中的alpha值