【问题标题】:SCNText won't showSCNText 不会显示
【发布时间】:2018-10-06 05:17:16
【问题描述】:

在说明我的问题是什么之前,我想澄清一下,我的问题有多个答案,不幸的是,没有一个能解决我的问题。请不要将此标记为重复。

现在这是我必须创建文本节点的代码

let textNode: SCNNode = {
            let text = SCNText.init(string: "250.9cm", extrusionDepth: 0.01)
            text.font = UIFont(name: "System", size: 32)
            text.flatness = 0.2
            let node = SCNNode.init(geometry:  text)
            node.pivot = SCNMatrix4Scale(node.transform, 1/72, 1/72, 1/72)
            node.scale = SCNVector3(0.1, 0.1, 0.1)
            node.geometry?.materials.first?.diffuse.contents = UIColor.red
            return node
        }()

这是由我发现的多种不同解决方案构建的,并且我已经以多种不同的方式进行了尝试。但是,没有一个有效。

在这里,我添加 1 个视图作为 childNode,然后将另外 3 个 childNodes 添加到该子节点。

self.addChildNode(mainNode)

        topNode.position = SCNVector3(mainNode.getMidX(), mainNode.boundingBox.max.y, mainNode.getMidZ())
        bottomNode.position = SCNVector3(mainNode.getMidX(), mainNode.boundingBox.min.y, mainNode.getMidZ())
        textNode.position = SCNVector3(mainNode.getMidX()+0.005, mainNode.getMidY(), mainNode.getMidZ())

        mainNode.addChildNode(topNode)
        mainNode.addChildNode(bottomNode)
        mainNode.addChildNode(textNode)

正如您在下图中看到的那样,所有内容都正确且准确地显示在我期望的位置。除了找不到的textNode。 (注意,主要、顶部和底部节点是带有帽子和鞋子的黑线)

根据设置的其他位置属性,文本应在垂直方向完美地出现在黑线中间,水平方向略向右。

我缺少的是我在其他答案中找不到的东西。请提出我应该如何处理的建议。

【问题讨论】:

  • SCNText Not Displaying的可能重复
  • 尝试让文本变大,同时使用比例和字体大小。可能是它最终落后于覆盖它的其他节点,或者文本太小而无法看到。
  • 将文本字体设置为 32 号与标准字体大小不同。 SceneKit 中的 32 个单位是 32 米,因此将其缩放 0.1 仍然意味着大小将是 3.2 米,因此这可能是您看不到文本的原因。尝试扩展它,看看是否有帮助
  • @picciano 阅读我写的内容。我明确表示我看过其他类似的问题,但他们得到的答案并不能解决我的问题
  • @JoshRobbins 我在另一个关于 SCNText 没有出现的问题中读到了这个答案,遗憾的是这对我来说似乎不是问题。我尝试了多种缩放和字体大小。

标签: swift scenekit arkit scnnode scntext


【解决方案1】:

嗯,很可能您的文字没有显示,原因与您确定不重复的其他问题相同:它太大了。

但我要回答而不是投票结束重复,因为有一两个额外的皱纹值得一提。就在这里:

node.pivot = SCNMatrix4Scale(node.transform, 1/72, 1/72, 1/72)
node.scale = SCNVector3(0.1, 0.1, 0.1)

首先,将 scalepivot 设置为缩放变换具有相同的效果 - 都缩放节点的内容,因此您实际上应用了一个缩放因子,即两个变换的串联。 (此外,在这些调用中,node.transform 是身份,因此第一行等价于具有相同因子的SCNMatrix4MakeScale。)

其次,如this great answer 中所述,pivot 属性将您提供的变换的应用于节点的内容。您的变换是缩小比例,因此应用的变换与此相反:比例增加。

documentation for pivot 在逆变换部分相当不清楚。也许如果你 tell Apple about it 他们会修复那个文档。)

总而言之:您将 32“点”文本节点缩小到 1/10 倍,然后放大到 72 倍。这与将其缩放到 7.2 倍或仅使用 230“点”字体开始时相同。

正如noted elsewhere,在 SceneKit+ARKit 中,字体的“点”大小实际上是米,所以你可能有摩天大楼大小的字母漂浮在你上方和右侧的某个地方(如果它们不是不可见的,因为它们超出了剪辑深度)。希望你带上登山装备...

【讨论】:

  • 啊,我明白了,很好的解释。我使用 1/72 轴心来自stackoverflow.com/questions/41066865/…,但也许我误解了他写的内容。但我想我的文字要么大要么小,我只是无法弄清楚它是哪一个以及它的大小。但是你对枢轴、变换和缩放给出了很好的解释,我对此有点问题。即使我已经解决了这个问题,你的也是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多