Nodos hijos no es visible cuando setWorldOrigin se llama?

votos
1

Así que tengo una función como la siguiente que establece el origen del mundo a un nodo coloca en una imagen es después de escanearlo. Me carga los nodos guardados desde una base de datos que los añade a la escena en una función separada.

Por alguna razón, los nodos no se mostrará cuando corro la aplicación. Funciona cuando setWorldOrigin está comentada.

Me gustaría que los nodos para mostrar en relación con la imagen como el origen.

¿Me estoy perdiendo de algo? ¿Cambia setWorldOrigin la sesión?

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
        guard let imageAnchor = anchor as? ARImageAnchor else { return }
        let referenceImage = imageAnchor.referenceImage

        let nodeGeometry = SCNText(string: Welcome!, extrusionDepth: 1)
        nodeGeometry.font = UIFont(name: Helvetica, size: 30)
        nodeGeometry.firstMaterial?.diffuse.contents = UIColor.black

        anchorNode.geometry = nodeGeometry
        anchorNode.scale = SCNVector3(0.1, 0.1, 0.1)
        anchorNode.constraints = [SCNBillboardConstraint()]
        anchorNode.position = SCNVector3(imageAnchor.transform.columns.3.x, imageAnchor.transform.columns.3.y, imageAnchor.transform.columns.3.z)
imageAnchor.transform.columns.3.y, imageAnchor.transform.columns.3.z)

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

        let planeNode = SCNNode(geometry: plane)
        planeNode.opacity = 0.25

        /*
         * Plane is rotated to match the picture location
         */
        planeNode.eulerAngles.x = -.pi / 2

        /*
         * Scan runs as an action for a set amount of time
         */
        planeNode.runAction(self.imageHighlightAction)

        // Add the plane visualization to the scene.
        node.addChildNode(planeNode)

        sceneView.session.setWorldOrigin(relativeTransform: imageAnchor.transform)
        sceneView.scene.rootNode.addChildNode(node)

        /*
         * Populates the scene
         */
        handleData()
    } // renderer
Publicado el 27/11/2018 a las 16:47
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Me lo imaginé. El tamaño que tenía para mi imagen era incorrecta. La imagen que estaba usando es de 512x512 píxeles. Tengo que haciendo clic derecho sobre la imagen y seleccionar "Obtener información" y mirando a las dimensiones.

También tuve las mediciones como medidores. Lo cambié a centímetros y se utiliza un píxel al convertidor centímetros

Respondida el 27/11/2018 a las 17:11
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more