2016-04-05 7 views
2

Wenn ich diesen SceneKit Code ausführen:SCNText Rendering ohne Kurven, nicht font-like

let txt = SCNText(string: "Hello", extrusionDepth: 0.2) 
let textNode = SCNNode(geometry: txt) 
scene.rootNode.addChildNode(textNode) 

ich sehr kantig Text:

Poorly rendered text

Es scheint, dies unabhängig von der Schrift zu tun und Es verhält sich auf einem Gerät genauso wie im Simulator.

Hier ist der Code im Kontext:

// 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 

Antwort

2

SCNText die für Ihren Text 2D Bézierpfad aufteilt wie Core Graphics tun würde, wenn Sie es zeichnen wurden. Sie können immer die -Eigenschaft verwenden, um es weicher zu machen, aber Sie erhalten keine "Subpixel-Glätte".

Um dieses Problem zu lösen, können Sie eine größere Schriftgröße verwenden, so dass der zugrunde liegende Bézier-Pfad größer ist und mehr Ecken bei der Diskretisierung generiert werden.