首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测在3D模型上单击的节点

检测在3D模型上单击的节点
EN

Stack Overflow用户
提问于 2019-01-24 15:47:17
回答 2查看 207关注 0票数 0

我有3D模型,并想在此模型上单击特定节点来创建一些操作。我的模型是一组节点;每个节点都没有冷却节点,我想单击其中一个节点来解释某些操作,并单击另一个节点来解释不同的操作;如何检测在我的模型上单击了哪个节点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-24 16:52:25

可以使用SCNSceneRenderer中的hitTest(_:options:)来检测从二维点接触的三维对象。

它将返回一个包含node属性SCNHitTestResult数组。

票数 0
EN

Stack Overflow用户

发布于 2019-01-24 17:11:51

你应该阅读一些关于SceneKit命中测试方法和遵循hit-test method的信息。

代码语言:javascript
运行
复制
func registerGestureRecognizer() {
    let tap = UITapGestureRecognizer(target: self, action: #selector(detectNode))
    self.sceneView.addGestureRecognizer(tap)
}

@objc func detectNode(_ sender: UITapGestureRecognizer) {
    let sceneView = sender.view as! ARSCNView
    let location = sender.location(in: sceneView)
    let results = sceneView.hitTest(location, options: [SCNHitTestOption.searchMode : 1])

    for result in results.filter( { $0.node.name != nil }) {
        if result.node.name == "Your node name" {
            // excuse some actions
        }
    }
}

希望它能帮上忙!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54341647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档