开发者社区> 问答> 正文

是否有可能将重点放在选定的SCNNode上

我有以下情况。一个SCNView带着.scn一座桥的展示。在屏幕的左边,你可以看到桥的视觉表现形式。

我想做以下几件事。

在“模型浏览器”中选择左边的项 缩放到选定的项目并将焦点集中在它上。 https://i.stack.imgur.com/OBDbi.png

在提供的截图上。你可以看到我选择了Kist是黄色的SceneView现在我想放大并聚焦在选定的SCNNode

我已经试过用rayTestWithSegment若要找到要缩放的选定位置,请执行以下操作。但结果rayTestWithSegment总是[].

我也试过用SCNLookAtConstraint但这不管用。

var constraint: SCNLookAtConstraint!

    func handle(gesture: UIGestureRecognizer) {
        guard let result = hitTestResult(for: gesture), let world = sceneView?.scene?.physicsWorld else { return }
        let nodePosition = result.node.position
        let results = world.rayTestWithSegment(from: SCNVector3(0, 1, 0), to: nodePosition, options: nil)
        print(results)
        constraint = SCNLookAtConstraint(target: result.node)
        sceneView?.pointOfView?.constraints = [constraint]
    }

    func hitTestResult(for gesture: UIGestureRecognizer) -> SCNHitTestResult? {
        let location = gesture.location(in: sceneView)
        guard let hit = sceneView?.hitTest(location, options: nil), hit.count > 0, let result = hit.first else {
            return nil
        }
        return result
    }

我在用rayTestWithSegment因为有可能SCNNode我选择的不是完全可见的。例如,一个SCNNode它位于此透视图中的另一个节点后面。

提前谢谢,我希望有人能帮我解释我做错了什么。

展开
收起
游客5akardh5cojhg 2019-12-11 18:48:50 552 0
0 条回答
写回答
取消 提交回答
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
用计算和数据去改变整个世界 立即下载
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载