SCNText、containerFrame、wrapping 和 ARKit
SCNText, containerFrame, wrapping and ARKit
有没有人设法在 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
//
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)
Apple 的回答:我的字体太小了。如果我在 SCNText 对象上使用 "normal" 字体大小和包含框架,然后在包含它的节点上设置比例,一切都会按预期换行。类似于:
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)
有没有人设法在 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
//
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)
Apple 的回答:我的字体太小了。如果我在 SCNText 对象上使用 "normal" 字体大小和包含框架,然后在包含它的节点上设置比例,一切都会按预期换行。类似于:
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)