有没有人设法在ARKit的containerFrame中正确包装SCNText字符串?
我已经走了,但线条似乎叠加在一起,而不是按顺序垂直渲染。如果容器框架的大小太小是一个问题,我希望字符串只是被截断。我使用的截断模式没有区别(...结束/ ...无/ ..中间)等。
这是来自我的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)
答案 0 :(得分:2)
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)