установить фиксированный SCNNode без ARPlaneAnchor - PullRequest
0 голосов
/ 03 декабря 2018

В настоящее время я пытаюсь поместить фиксированный SCNNode на место при использовании ARImageTrackingConfiguration , который не обнаруживает плоскость, но кажется, что он не работает должным образом, потому что узел SCNNode движется во время движения камеры

ниже приведен код:

/// show cylinder line
func showCylinderLine(point a: SCNVector3, point b: SCNVector3, object: VirtualObject) {
    let length = Vector3Helper.distanceBetweenPoints(a: a, b: b)
    let cyclinderLine = GeometryHelper.drawCyclinderBetweenPoints(a: a, b: b, length: length, radius: 0.001, radialSegments: 10)
    cyclinderLine.name = "line"
    cyclinderLine.geometry?.firstMaterial?.diffuse.contents = UIColor.red
    self.sceneView.scene.rootNode.addChildNode(cyclinderLine)
    cyclinderLine.look(at: b, up: self.sceneView.scene.rootNode.worldUp, localFront: cyclinderLine.worldUp)
}

можно ли зафиксировать SCNNode-цилиндр на месте без ARPlaneAnchor?

( Примечание : я пробовал ARAnchor для методов делегата nodeForAnchor, и он все еще движется при перемещении камеры)

1 Ответ

0 голосов
/ 03 декабря 2018

Можете ли вы показать свой метод nodeForAnchors?Вот где узлы «фиксируются» на изображении, поэтому я предполагаю, что где-то есть ошибка.Вот пример приложения этого делегата:

func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {

    let node = SCNNode()

    if let _ = anchor as? ARImageAnchor {
      if let objectScene = SCNScene(named: "ARassets.scnassets/object.scn") {

        //creates a new node that is connected to the image. This is what makes your object "fixed"
        let objectNode = objectScene.rootNode.childNodes.first!

        objectNode.position = SCNVector3Zero
        objectNode.position.y = 0.15

        node.addChildNode(planeNode)
      }
    }

Дайте мне знать, если это поможет;)

...