【问题标题】:SCNText, containerFrame, wrapping and ARKitSCNText、containerFrame、包装和 ARKit
【发布时间】:2018-01-30 19:05:00
【问题描述】:

有没有人设法在 ARKit 中的 containerFrame 中正确包装 SCNText 字符串?

我试了一下,但线条似乎是相互叠加的,而不是按顺序垂直渲染。如果 containerFrame 的大小太小是一个问题,我希望字符串被截断。我使用哪种截断模式(...end / ...none / ..middle)等并没有什么区别。

这是来自我的 SCNNode 子类的代码,在 init 方法中创建突出的文本。相同的代码可以正常工作(显然具有不同的大小)以在标准 SceneKit 视图中生成包装的、突出的文本。

    let extrudedText = SCNText(string: definition.text, extrusionDepth: 0.1)
    extrudedText.font = UIFont(name: definition.fontname, size: 0.2)!

    extrudedText.containerFrame = CGRect(origin: .zero, size: CGSize(width: 1.8, height: 1.5))
    extrudedText.truncationMode = kCATruncationMiddle
    extrudedText.isWrapped = true
    extrudedText.alignmentMode = kCAAlignmentLeft


    let material = SCNMaterial.material(named: "rustediron-streaks")
    extrudedText.materials = [material]
    geometry = extrudedText

    // Update pivot of object to its center
    // https://stackoverflow.com/questions/44828764/arkit-placing-an-scntext-at-a-particular-point-in-front-of-the-camera
    let (min, max) = boundingBox
    let dx = min.x + 0.5 * (max.x - min.x)
    let dy = min.y + 0.5 * (max.y - min.y)
    let dz = min.z + 0.5 * (max.z - min.z)
    pivot = SCNMatrix4MakeTranslation(dx, dy, dz)

【问题讨论】:

  • 我正在做类似的事情,但是当我添加一个容器框架时,它会取代我的 SCNText 节点 - 有谁知道为什么会这样?

标签: scenekit arkit scntext


【解决方案1】:

Apple 的回答:我的字体太小了。如果我在 SCNText 对象上使用“正常”字体大小和包含框架,然后在包含它的节点上设置比例,一切都会按预期包装。类似的东西:

extrudedText.font = UIFont(name: definition.fontname, size: 20)!  
extrudedText.containerFrame = CGRect(origin: .zero, size: CGSize(width: 100.0, height: 500.0))
...
scale = SCNVector3Make(0.01, 0.01, 0.01)

【讨论】:

    猜你喜欢
    • 2017-11-27
    • 2018-08-24
    • 2018-11-16
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2016-08-18
    相关资源
    最近更新 更多