Kit de cena: projectPoint calculado é deslocado

Estou tentando desenhar um quadro sobre uma esfera na visualização principal da cena, mas por algum motivo os pontos convertidos porSCNScene.projectPoint método são deslocados.

Para simplificar, criei uma esfera no centro da cena com 2 raios. A esfera está anexada ao nó raiz, portanto, o canto superior esquerdo nas coordenadas do mundo está no ponto (-2, -2,0).

Aqui está o código completo:

func sphereWithFrame(){

    var v1 = SCNVector3(x: 0,y: 0,z: 0)
    var v2 = SCNVector3(x: 0,y: 0,z: 0)

    let topSphere = SCNSphere(radius: 2.0)
    topSphere.firstMaterial!.diffuse.contents = UIColor.greenColor()


    let topSphereNode = SCNNode(geometry: topSphere)
    topSphereNode.position = SCNVector3Make(0, 0, 0)
    scene.rootNode.addChildNode(topSphereNode)

    topSphereNode.getBoundingBoxMin(&v1, max: &v2)

    //world coordinates
    let v1w =  topSphereNode.convertPosition(v1, toNode: scene.rootNode)
    let v2w =  topSphereNode.convertPosition(v2, toNode: scene.rootNode)

    //projected coordinates
    let v1p = scnview.projectPoint(v1w)
    let v2p = scnview.projectPoint(v2w)

    //frame rectangle
    var rect = CGRectMake(CGFloat(v1p.x), CGFloat(v2p.y), CGFloat(v2p.x - v1p.x), CGFloat(v1p.y - v2p.y))
    let rectView = UIView(frame: rect)
    rectView.alpha = 0.3
    rectView.backgroundColor = UIColor.blueColor()
    scnview.addSubview(rectView)

    println("v1 \(v1.toString()), v2\(v2.toString())")
    println("v1w \(v1w.toString()), v2w\(v2w.toString())")
    println("v1p \(v1p.toString()), v2w\(v2p.toString())")
    println("rect\(rect)")

}

O console:

v1 x:-2.0,y:-2.0,z:-2.0, v2x:2.0,y:2.0,z:2.0
v1w x:-2.0,y:-2.0,z:-2.0, v2wx:2.0,y:2.0,z:2.0
v1p x:90.718,y:309.282,z:0.925926, v2wx:263.923,y:136.077,z:0.883838
rect(90.718, 136.077, 173.205, 173.205)

O resultado na tela é um retângulo um pouco para cima, exatamente de onde deveria estar.

Eu tento seguir o post "Como encontro o ponto do mouse em uma cena usando o SceneKit?". O que estou errado?

questionAnswers(1)

yourAnswerToTheQuestion