Ich bin mit zwei SCNView
‚s für meine Schnittstelle Zeichnung, und ich habe eine SpriteKit Overlay (auf der obersten SCNView
für HUD wie Funktionen. Auf macOS 10.11 (El Capitan) alles funktioniert gut, aber auf 10,12 (Sierra) scheint die Überlagerung mit dem alpha Hintergrund gemischt wirdFalsche Zeichnung mit SceneKit mit Overlay auf macOS Sierra
Vergleichen 10.11 (erwartete Ausgabe).
mit dem Ausgang 10.12:
Die Ansicht Stack ist:
- SCNView (opaque schwarzer Hintergrund)
- SCNView (clear background)
- SpriteKit overlay (teilweise transparent, teilweise opak)
Das gelbe Quadrat (Alpha = 0,50) und das rote Quadrat (opak) stammen von der Überlagerung. Der weiße Würfel wird im obersten (transparenten) SCNView
gezeichnet.
Als ich den Hintergrund halbtransparent machen, mehr der Quadrate wird sichtbar, noch verbleibende transparent:
Der Code für diese Einstellung ist:
sceneView.scene=SCNScene()
sceneView.scene?.rootNode.addChildNode(SCNNode(geometry: SCNBox(width: 10, height: 10, length: 10, chamferRadius: 1)))
//An overlay
let overlayScene=SKScene(size: CGSize(width: 500, height: 10))
overlayScene.scaleMode = .resizeFill
let bar=SKSpriteNode(color: NSColor.yellow.withAlphaComponent(0.5), size: CGSize(width: 250, height: 40))
bar.anchorPoint=CGPoint.zero
let smallBar=SKSpriteNode(color: NSColor.red, size: CGSize(width: 250, height: 20))
smallBar.position=CGPoint(x: 125, y: 20)
bar.addChild(smallBar)
overlayScene.addChild(bar)
sceneView.overlaySKScene=overlayScene
//Optionally:
sceneView.backgroundColor=NSColor.black.withAlphaComponent(0.5)
Ich konnte nicht gefunden Alles, um Sierra dazu zu bringen, das Overlay korrekt zu rendern, wie das Einstellen des Mischmodus der SpriteKit-Szene.
Irgendwelche Vorschläge, wie ich dieses Zeichnungsproblem beheben kann?
Sieht aus wie ein Problem mit linearen Farbraum. Können Sie versuchen, den Schlüssel "SCNDisableLinearSpaceRendering" in Ihrer Datei "info.plist" auf "YES" zu setzen? – Toyos
Das gibt das korrekte Transparenzverhalten. Die Farben sind jedoch noch ein bisschen anders. Ich konnte wirklich keine wirklichen Informationen darüber finden, wie alles funktioniert und warum das Overlay im Hintergrund mit linearem Raum-Rendering verschwinden würde. Hast du eine Dokumentation? –