【问题标题】:Scene Kit: projectPoint calculated is displaced场景工具包:计算的 projectPoint 被位移
【发布时间】:2015-08-25 20:27:26
【问题描述】:

我正在尝试在场景的父视图上的球体上绘制一个框架,但由于某种原因,SCNScene.projectPoint 方法转换的点被替换了。

为了简单起见,我在场景中心创建了一个半径为 2 的球体。球体连接到根节点,因此世界坐标的左上角位于 (-2,-2,0) 点。

完整代码如下:

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)")

}

控制台:

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)

屏幕上的结果是一个矩形,从应该在的位置向右上方一点。

我尝试关注帖子“ How do I find my mouse point in a scene using SceneKit?"。 我哪里错了?

【问题讨论】:

    标签: ios swift uiview scenekit


    【解决方案1】:

    必须在两个世界坐标上将 z 设置为零:

    v1w.z = 0
    v2w.z = 0
    

    解释事情有帮助

    【讨论】:

    • 我的情况正好相反。将世界坐标映射到视图坐标。但是点是不正确的。
    猜你喜欢
    • 2015-05-19
    • 2013-11-28
    • 1970-01-01
    • 2014-07-05
    • 2020-11-24
    • 2018-01-31
    • 2015-02-03
    • 2011-02-23
    • 1970-01-01
    相关资源
    最近更新 更多