Как разместить пользовательский объект (.scn) в ARKit? - ios


0

Я пытаюсь разместить пользовательский объект в ARKit, когда пользователь нажимает на экран. Я выяснил, как разместить объект, создав его в коде, но хотел бы разместить объект, который был импортирован в проект (например, ship.scn). Вот мой код для помещения объекта в код и его работы:

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        guard let touch = touches.first else {return}
        let results = sceneView.hitTest(touch.location(in: sceneView), types: [ARHitTestResult.ResultType.featurePoint])
        guard let hitFeature = results.last  else { return}
        let hitTransform = SCNMatrix4.init(hitFeature.worldTransform)

        let hitPosition = SCNVector3Make(hitTransform.m41, hitTransform.m42, hitTransform.m43)
      createBall(hitPosition: hitPosition)
    }


  func createBall(hitPosition: SCNVector3) {
        let newBall = SCNSphere(radius: 0.05)
        let newBallNode = SCNNode(geometry: newBall)
        newBallNode.position = hitPosition
        self.sceneView.scene.rootNode.addChildNode(newBallNode) 
    }

Я пытался создать эту функцию для размещения импортированного файла .scn, но когда я нажимаю на экран, ничего не появляется:

func createCustomScene(objectScene: SCNScene?, hitPosition: SCNVector3) {
    guard let scene = objectScene else {
        print("Could not load scene")
        return
    }

    let childNodes = scene.rootNode.childNodes

    for childNode in childNodes {
        sceneNode.addChildNode(childNode)
    }
}

называется так: createCustomScene(objectScene: SCNScene(named: "art.scnassets/ship.scn"), hitPosition: hitPosition)

У кого-нибудь есть подсказка, почему .scn не появляется при нажатии на экран?

Источник
  •  60
  •  1
  • 3 май 2020 2020-05-03 15:02:35

1 ответ

0

Вы должны рассмотреть возможность добавления вашего childNode в sceneView, а не добавлять его в ваш sceneNode.

for childNode in childNodes {
      childNode.position = hitPosition
      self.sceneView.scene.rootNode.addChildNode(childNode)
}
  • 3 май 2020 2020-05-03 15:02:36