SCNMaterial中的SKScene内容显示为颠倒

时间:2018-02-20 16:38:11

标签: ios swift sprite-kit scenekit

我正在尝试使用平面几何体的SCNNode,它在其中显示2d文本。我这样做是通过将SKLabelNode设置为几何的材料(从here获取)

这是我的代码:

let label = SKLabelNode(text: "Test Text 1")
label.fontColor = .white
label.fontName = UIFont.systemFont(ofSize: 32).fontName
label.fontSize = 32

let backgroundRectShape = SKShapeNode(rect: CGRect(origin: .zero, size: label.frame.size))
backgroundRectShape.fillColor = .orange
backgroundRectShape.addChild(label)
label.position = CGPoint(x: backgroundRectShape.frame.width / 2, y: 0)

let skScene = SKScene(size: label.frame.size)
skScene.addChild(backgroundRectShape)
backgroundRectShape.position = .zero

let plane = SCNPlane(width: label.frame.width / 10, height: label.frame.height / 10)
plane.firstMaterial?.diffuse.contents = skScene
let node = SCNNode(geometry: plane)

scene.rootNode.addChildNode(node)

一切似乎都很好,但SKLabelNode显得颠倒: Screenshot 1

SCNNode肯定是正确对齐而不是旋转,因为当我将图像设置为素材内容时,一切正常: Screenshot 2

我无法理解为什么会这样。最简单的解决方案是将SKLabelNode的{​​{1}}设置为-1,但如果不理解默认情况下它显示为颠倒的原因,我不想这样做。

2 个答案:

答案 0 :(得分:1)

plane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)

答案 1 :(得分:0)

这似乎是一个错误,或者是SpriteKit / SceneKit框架的众多限制之一

  

我认为由于iOS坐标系的起源,SCNMaterial的内容 错误地倒置了

enter image description here

但是,除了缩放SCNNode本身之外,还应该使用Y-axis的{​​{1}}实例属性沿contentsTransform镜像纹理。像这样:

SCNMaterial

希望这会有所帮助。