ARkit中的3d对象上的Pin按钮

时间:2018-01-24 23:39:54

标签: ios swift arkit

我正在尝试在3D对象上按Pin。当TouchBegan功能加载时,我使用触摸将对象放置在世界中。我希望在加载对象时将按钮固定在对象上。

我无法在arkit中找到AR Button。我所能找到的就是将文本作为子节点放置并命名节点并获取第一个命中结果并按名称获取子节点以触发按钮。

按钮相对于3d空间放置到对象是一个问题。寻找可能的解决方案。

enter image description here

这是我想要实现的,目前正在使用github项目作为演示。

https://github.com/eh3rrera/ARKitSceneKitExample

2 个答案:

答案 0 :(得分:0)

我建议使用带有SKScene的盒子/平面作为SKScene中按钮和文本的材料作为标题。然后你可以在tapGesture中使用hitTest。也许动画颜色更改有按钮按下效果。

答案 1 :(得分:0)

我解决了ARKit中的按钮问题,以创建物理按钮作为3D模型的一部分

enter image description here

你不需要创建带文字的按钮,比如点击打开门或切换灯......但你需要以某种方式与用户沟通他们可以点击(门打开或点亮一个灯来切换上)。

要激活节点,请为其提供唯一的node.name“front_door”

node.name = “front_door”

一个缺点是你必须在程序执行之前使用xcode命名节点。

下面是使用hitTest响应敲门上按钮的快速代码。触摸按钮时,门会旋转打开。

let tappedNode = self.sceneView.hitTest(gesture.location(in: gesture.view), options: [:])

    if !tappedNode.isEmpty {

      let tappedName = tappedNode[0].node.name

      if tappedName == "front_door" {

       let doorNode = self.sceneView.scene.rootNode.childNode(withName: tappedName, recursively: true)

      // rotate the door open      
      doorNode?.eulerAngles = SCNVector3Make( 0,0,Float(2*M_PI))

                }

}

enter image description here