Upvote:2

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

    let nodeToReturn = SCNNode()

    //1. Check We Have Detected Our Image
    if let validImageAnchor = anchor as? ARImageAnchor {

        //2. Log The Information About The Anchor & Our Reference Image
        print("""
            ARImageAnchor Transform = \(validImageAnchor.transform)
            Name Of Detected Image = \(validImageAnchor.referenceImage.name)
            Width Of Detected Image = \(validImageAnchor.referenceImage.physicalSize.width)
            Height Of Detected Image = \(validImageAnchor.referenceImage.physicalSize.height)
         """)

        //3. Create An SCNPlane To Cover The Detected Image
        let planeNode = SCNNode()

        let planeGeometry = SCNPlane(width: validImageAnchor.referenceImage.physicalSize.width,
                                    height: validImageAnchor.referenceImage.physicalSize.height)

        planeGeometry.firstMaterial?.diffuse.contents = UIColor.white

        planeNode.geometry = planeGeometry

        //a. Set The Opacity To Less Than 1 So We Can See The RealWorld Image
        planeNode.opacity = 0.5

        //b. Rotate The PlaneNode So It Matches The Rotation Of The Anchor
        planeNode.eulerAngles.x = -.pi / 2

        //4. Add It To The Node
        nodeToReturn.addChildNode(planeNode)

        //5. Add Something Such As An SCNScene To The Plane
        if let modelScene = SCNScene(named: "art.scnassets/model.scn"), let modelNode = modelScene.rootNode.childNodes.first{

            //a. Set The Model At The Center Of The Plane & Move It Forward A Tad
            modelNode.position = SCNVector3Zero
            modeNode.position.z = 0.15

            //b. Add It To The PlaneNode
            planeNode.addChildNode(modelNode)
        }
    }

    return nodeToReturn

}

Credit Goes to: stackoverflow.com

Related question with same questions but different answers