首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCNMaterial内容中的SKScene颠倒显示

SCNMaterial内容中的SKScene颠倒显示
EN

Stack Overflow用户
提问于 2018-02-21 00:38:11
回答 2查看 770关注 0票数 9

我正在尝试有一个平面几何的SCNNode,它在里面显示2d文本。我通过将SKLabelNode设置为几何体的材质来做到这一点(取自here)

下面是我的代码:

代码语言:javascript
复制
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看起来颠倒了:

SCNNode肯定是正确对齐的,并且没有旋转,因为当我将图像设置为材料内容时,一切都是正常的:

我就是不明白为什么会这样。最简单的解决方案是将SKLabelNodeyScale设置为-1,但我不想这样做,因为我不想在不理解它在默认情况下出现颠倒的原因的情况下这样做。

EN

回答 2

Stack Overflow用户

发布于 2020-02-13 00:54:50

代码语言:javascript
复制
plane.firstMaterial?.diffuse.contentsTransform = SCNMatrix4Translate(SCNMatrix4MakeScale(1, -1, 1), 0, 1, 0)
票数 3
EN

Stack Overflow用户

发布于 2018-09-05 21:09:49

它似乎是一个错误,或者是 SpriteKit**/**SceneKit 的众多限制之一。

我认为由于iOS坐标系的原因,SCNMaterial的content 错误地出现了颠倒的

但是,与缩放SCNNode本身不同,您最好使用Y-axiscontentsTransform实例属性沿SCNMaterial镜像纹理。如下所示:

代码语言:javascript
复制
material.diffuse.contentsTransform = SCNMatrix4MakeScale(1, -1, 1)

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48890040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档