ARKit: добавить виртуальное 2D-изображение помимо отслеживаемого изображения - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь разместить виртуальное 2D-изображение на экране помимо отслеживаемого (эталонного) изображения.Для этого я использовал код ниже после того, как эталонное изображение отслеживаются, создать самолет, который напоминает изображение на экране, а затем я оцениваю позицию для узла изображения с простой базовой математикой.Слишком просто, видимо, потому что результат не очень хороший.

Я считаю, что должен быть лучший способ, но я новичок в ARKit, и я еще не нашел его, мог бы помочьСпасибо.

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

    let node = SCNNode()

    if let imageAnchor = anchor as? ARImageAnchor {

        if let name = imageAnchor.name {
            print("Image name: \(name)")
        }

        // Create a plane to visualize the initial position of the detected image.
        let plane = SCNPlane(width: imageAnchor.referenceImage.physicalSize.width,
                             height: imageAnchor.referenceImage.physicalSize.height)
        let planeNode = SCNNode(geometry: plane)
        planeNode.opacity = 0.25

        planeNode.eulerAngles.x = -.pi / 2

        let imagePlane = SCNPlane(width: 0.1, height: 0.1)
        imagePlane.firstMaterial?.diffuse.contents = UIImage(named: "image")
        let imageNode = SCNNode(geometry: imagePlane)

        imageNode.eulerAngles.x = -.pi / 2

        let x = Float(-1 * (plane.width/2 + imagePlane.width/2))
        let y = Float(-1 * (plane.height/2 + imagePlane.height/2))
        imageNode.position = SCNVector3Make(Float(x), Float(y), 0)

        node.addChildNode(imageNode)
    }

    return node
}

Вот неудовлетворительный результат:

enter image description here

РЕДАКТИРОВАТЬ: Что выглядит здесь неправильно?Изображение должно оставаться прямо рядом с отслеживаемым изображением (большим) слева, касаясь левой стороны отслеживаемого изображения.И проблема заключается также в способе достижения этого, я добился этого плохого результата с помощью приблизительного математического вычисления, я полагаю, что есть способ использовать преобразование плоскости отслеживаемого изображения, чтобы расположить другое изображение на стороне.

...