当我运行这个SceneKit代码时:
let txt = SCNText(string: "Hello", extrusionDepth: 0.2)
let textNode = SCNNode(geometry: txt)
scene.rootNode.addChildNode(textNode)
我得到非常有棱角的文字:
无论字体如何,它似乎都是这样做的,它在设备上的行为与模拟器中的行为相同。
以下是上下文中的代码:
// create a new scene
let scene = SCNScene()
// create and add a camera to the scene
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
scene.rootNode.addChildNode(cameraNode)
// place the camera
cameraNode.position = SCNVector3(x: 10, y: 0, z: 75)
// create and add a light to the scene
let lightNode = SCNNode()
lightNode.light = SCNLight()
lightNode.light!.type = SCNLightTypeOmni
lightNode.position = SCNVector3(x: 0, y: 10, z: 10)
scene.rootNode.addChildNode(lightNode)
// create and add an ambient light to the scene
let ambientLightNode = SCNNode()
ambientLightNode.light = SCNLight()
ambientLightNode.light!.type = SCNLightTypeAmbient
ambientLightNode.light!.color = UIColor.darkGrayColor()
scene.rootNode.addChildNode(ambientLightNode)
let txt = SCNText(string: "Hello", extrusionDepth: 0.2)
let textNode = SCNNode(geometry: txt)
scene.rootNode.addChildNode(textNode)
// retrieve the SCNView
let scnView = self.view as! SCNView
// set the scene to the view
scnView.scene = scene
答案 0 :(得分:4)
SCNText
为您的文字细分2DBézier路径,就像Core Graphics在绘制它时一样。您始终可以使用flatness
属性使其更加平滑,但不会获得“子像素平滑度”。
要解决此问题,您可以使用更大的字体大小,以便底层Bézier路径更大,并且在离散化时会生成更多顶点。
答案 1 :(得分:0)
我的解决方案是使用大字体,因为建议使用@mnuages,然后使用
在文本节点上使用scale animatedTextNode.scale = SCNVector3(0.1, 0.1, 0.1)
得到我想要的尺寸。
在这种情况下,当您为文本设置动画并使其更靠近相机时,它看起来会很平滑。