首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift / ARKit:将对象节点放置在检测到的表面而不接触屏幕

Swift / ARKit:将对象节点放置在检测到的表面而不接触屏幕
EN

Stack Overflow用户
提问于 2018-12-26 15:15:25
回答 1查看 581关注 0票数 1

我想用hitTest将一个物体放在我的面前,而不用触摸屏幕(比如宜家广场或Snapchat)。

有人找到解决办法了吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-27 09:54:08

这是在不接触屏幕的情况下将节点放置在检测到的表面的方法。

在viewWillAppear中,将配置添加到ARSCNView中。添加布尔变量,以检查是否检测到曲面。

代码语言:javascript
运行
复制
var surfaceDetected = false

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    sceneView.delegate = self
    let configuration = ARWorldTrackingConfiguration()
    configuration.planeDetection = .horizontal
    sceneView.session.run(configuration)
}

不要忘记继承ARSCNViewDelegate协议并实现下一个方法。

代码语言:javascript
运行
复制
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

    guard !surfaceDetected else { return }
    surfaceDetected = true

    guard let planeAnchor = anchor as? ARPlaneAnchor else { return }

    let x = CGFloat(planeAnchor.transform.columns.3.x)
    let y = CGFloat(planeAnchor.transform.columns.3.y)
    let z = CGFloat(planeAnchor.transform.columns.3.z)
    let position = SCNVector3(x,y,z)

    sceneView.scene.rootNode.addChildNode(yourNode)
    yourNode.position = position 

}

希望能帮上忙!

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

https://stackoverflow.com/questions/53933842

复制
相关文章

相似问题

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