2016-12-28 99 views
0

我有一個'attach node',它有兩個Blender模型的子節點。我已經添加了第三個節點到這個SCNCone的附加節點。出於某種原因,我無法改變錐形節點的顏色,只有透明度。我似乎看不出代碼有什麼問題,但是在運行期間,無論我將其設置爲何種顏色,錐體始終是黑色。無法更改SCNCone的顏色 - Scenekit

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) 

回答

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)。不用改變錐體的材料顏色而不用幾何體,你必須通過它的幾何參數來訪問它的材質顏色。

+0

謝謝你檢查你的阿爾法值!做'coneNode.geometry?.firstMaterial?.diffuse.contents = UIColor(紅色:255.0/255.0,綠色:108.0/255.0,藍色:91.0/255.0,alpha:0.2)'已經完成了。再次感謝。 – P3rry

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)