2017-06-06 73 views
1

您知道,例如當兩個平面位於同一位置時,顏色不同時,它們將開始相互作戰,因此某些部分是另一個紋理,另一部分是其他部分。禁用重疊平面的閃爍

我認爲Scenekit的renderingOrder應該解決這個問題,但我無法讓它工作。我給planeA 0渲染了Order和planeB 1,但什麼也沒發生。所以基本上我想在同一個位置有兩架飛機,但是我希望另一架飛機是「支配的」,這樣主導飛機就會呈現出來,而不是其他的飛機。

回答

3

這通常被稱爲Z戰鬥,並且只要3D存在就一直是3D中的問題。

有兩個基本的,而不是理想的,辦法對付這一點,我目前瞭解您的情況:

卸下飛機,你不想被看到,直到你需要它,可能是當相機繞過另一邊時,或者其他一些條件發生變化時,你需要添加你需要的飛機,然後去掉另一個飛機。

2.在「Z空間」中將它們稍微分開,或者任何有意義的空間將它們稍微分開。這可能是一個非常小的數量,非常小,觀衆不可能感覺到飛機不在完全相同的空間。

0

與代表垂直平面的重疊方框有類似的問題。

這裏有可能,如果你不使用透明節點爲你工作(我做的,所以我的問題依然存在,我會更新時,它的解決)的解決方案:包含

使用扁平節點所有平面幾何圖形。您可以使用flattenedClone()將所有節點的孩子變平。然後在每次添加更多平面節點時將其平坦化,即:

class myClass { 
    //Accumulate planes into this node 
    var flattenedNode = SCNNode() 

    func addPlaneNode(_ newPlane: SCNNode) { 
     flattenedNode.removeFromParentNode() 
     flattenedNode.addChildNode(newPlane) 
     flattenedNode = flattenedNode.flattenedClone() 
     rootNode.addChildNode(flattenedNode) 
    } 
}